| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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/globals.h" // Needed here to get TARGET_ARCH_MIPS. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. |
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
| 7 | 7 |
| 8 #include "vm/flow_graph_compiler.h" | 8 #include "vm/flow_graph_compiler.h" |
| 9 | 9 |
| 10 #include "lib/error.h" | 10 #include "lib/error.h" |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 } | 642 } |
| 643 | 643 |
| 644 | 644 |
| 645 void FlowGraphCompiler::EmitInstructionPrologue(Instruction* instr) { | 645 void FlowGraphCompiler::EmitInstructionPrologue(Instruction* instr) { |
| 646 if (!is_optimizing()) { | 646 if (!is_optimizing()) { |
| 647 if (FLAG_enable_type_checks && instr->IsAssertAssignable()) { | 647 if (FLAG_enable_type_checks && instr->IsAssertAssignable()) { |
| 648 AssertAssignableInstr* assert = instr->AsAssertAssignable(); | 648 AssertAssignableInstr* assert = instr->AsAssertAssignable(); |
| 649 AddCurrentDescriptor(PcDescriptors::kDeopt, | 649 AddCurrentDescriptor(PcDescriptors::kDeopt, |
| 650 assert->deopt_id(), | 650 assert->deopt_id(), |
| 651 assert->token_pos()); | 651 assert->token_pos()); |
| 652 } else if (instr->IsGuardField()) { | 652 } else if (instr->IsGuardField() || |
| 653 GuardFieldInstr* guard = instr->AsGuardField(); | 653 instr->CanBecomeDeoptimizationTarget()) { |
| 654 AddCurrentDescriptor(PcDescriptors::kDeopt, | |
| 655 guard->deopt_id(), | |
| 656 Scanner::kDummyTokenIndex); | |
| 657 } else if (instr->CanBeDeoptimizationTarget()) { | |
| 658 AddCurrentDescriptor(PcDescriptors::kDeopt, | 654 AddCurrentDescriptor(PcDescriptors::kDeopt, |
| 659 instr->deopt_id(), | 655 instr->deopt_id(), |
| 660 Scanner::kDummyTokenIndex); | 656 Scanner::kDummyTokenIndex); |
| 661 } | 657 } |
| 662 AllocateRegistersLocally(instr); | 658 AllocateRegistersLocally(instr); |
| 663 } | 659 } |
| 664 } | 660 } |
| 665 | 661 |
| 666 | 662 |
| 667 void FlowGraphCompiler::EmitInstructionEpilogue(Instruction* instr) { | 663 void FlowGraphCompiler::EmitInstructionEpilogue(Instruction* instr) { |
| (...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1645 __ AddImmediate(SP, kDoubleSize); | 1641 __ AddImmediate(SP, kDoubleSize); |
| 1646 } | 1642 } |
| 1647 | 1643 |
| 1648 | 1644 |
| 1649 #undef __ | 1645 #undef __ |
| 1650 | 1646 |
| 1651 | 1647 |
| 1652 } // namespace dart | 1648 } // namespace dart |
| 1653 | 1649 |
| 1654 #endif // defined TARGET_ARCH_MIPS | 1650 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |