Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/code_generator.h" | 5 #include "vm/code_generator.h" |
| 6 | 6 |
| 7 #include "vm/assembler_macros.h" | 7 #include "vm/assembler_macros.h" |
| 8 #include "vm/ast.h" | 8 #include "vm/ast.h" |
| 9 #include "vm/code_patcher.h" | 9 #include "vm/code_patcher.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1622 | 1622 |
| 1623 intptr_t* frame_copy = isolate->deopt_frame_copy(); | 1623 intptr_t* frame_copy = isolate->deopt_frame_copy(); |
| 1624 intptr_t* cpu_registers_copy = isolate->deopt_cpu_registers_copy(); | 1624 intptr_t* cpu_registers_copy = isolate->deopt_cpu_registers_copy(); |
| 1625 double* xmm_registers_copy = isolate->deopt_xmm_registers_copy(); | 1625 double* xmm_registers_copy = isolate->deopt_xmm_registers_copy(); |
| 1626 | 1626 |
| 1627 intptr_t deopt_id, deopt_reason, deopt_index; | 1627 intptr_t deopt_id, deopt_reason, deopt_index; |
| 1628 GetDeoptIxDescrAtPc(optimized_code, caller_frame->pc(), | 1628 GetDeoptIxDescrAtPc(optimized_code, caller_frame->pc(), |
| 1629 &deopt_id, &deopt_reason, &deopt_index); | 1629 &deopt_id, &deopt_reason, &deopt_index); |
| 1630 ASSERT(deopt_id != Isolate::kNoDeoptId); | 1630 ASSERT(deopt_id != Isolate::kNoDeoptId); |
| 1631 uword continue_at_pc = unoptimized_code.GetDeoptBeforePcAtDeoptId(deopt_id); | 1631 uword continue_at_pc = unoptimized_code.GetDeoptBeforePcAtDeoptId(deopt_id); |
| 1632 ASSERT(continue_at_pc != 0); | |
|
Kevin Millikin (Google)
2012/09/06 12:42:42
Thank you.
Florian Schneider
2012/09/06 13:05:53
You're welcome!
| |
| 1632 if (FLAG_trace_deopt) { | 1633 if (FLAG_trace_deopt) { |
| 1633 OS::Print(" -> continue at %#"Px"\n", continue_at_pc); | 1634 OS::Print(" -> continue at %#"Px"\n", continue_at_pc); |
| 1634 // TODO(srdjan): If we could allow GC, we could print the line where | 1635 // TODO(srdjan): If we could allow GC, we could print the line where |
| 1635 // deoptimization occured. | 1636 // deoptimization occured. |
| 1636 } | 1637 } |
| 1637 const Array& deopt_info_array = | 1638 const Array& deopt_info_array = |
| 1638 Array::Handle(optimized_code.deopt_info_array()); | 1639 Array::Handle(optimized_code.deopt_info_array()); |
| 1639 ASSERT(!deopt_info_array.IsNull()); | 1640 ASSERT(!deopt_info_array.IsNull()); |
| 1640 DeoptInfo& deopt_info = DeoptInfo::Handle(); | 1641 DeoptInfo& deopt_info = DeoptInfo::Handle(); |
| 1641 deopt_info ^= deopt_info_array.At(deopt_index); | 1642 deopt_info ^= deopt_info_array.At(deopt_index); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1676 current->slot(), | 1677 current->slot(), |
| 1677 current->value()); | 1678 current->value()); |
| 1678 } | 1679 } |
| 1679 | 1680 |
| 1680 delete current; | 1681 delete current; |
| 1681 } | 1682 } |
| 1682 } | 1683 } |
| 1683 | 1684 |
| 1684 | 1685 |
| 1685 } // namespace dart | 1686 } // namespace dart |
| OLD | NEW |