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_ARM. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. |
6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
7 | 7 |
8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
9 | 9 |
10 #include "lib/error.h" | 10 #include "lib/error.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 // A finally clause may leave a previously pushed return value if it | 64 // A finally clause may leave a previously pushed return value if it |
65 // has its own return instruction. Method that have finally are currently | 65 // has its own return instruction. Method that have finally are currently |
66 // not optimized. | 66 // not optimized. |
67 if (!compiler->HasFinally()) { | 67 if (!compiler->HasFinally()) { |
68 __ sub(R2, FP, ShifterOperand(SP)); | 68 __ sub(R2, FP, ShifterOperand(SP)); |
69 // + 1 for saved PP. | 69 // + 1 for saved PP. |
70 __ CompareImmediate(R2, (compiler->StackSize() + 1) * kWordSize); | 70 __ CompareImmediate(R2, (compiler->StackSize() + 1) * kWordSize); |
71 __ bkpt(0, NE); | 71 __ bkpt(0, NE); |
72 } | 72 } |
73 #endif | 73 #endif |
74 AssemblerMacros::LeaveDartFrame(compiler->assembler()); | 74 __ LeaveDartFrame(); |
75 __ Ret(); | 75 __ Ret(); |
76 | 76 |
77 // Generate 2 NOP instructions so that the debugger can patch the return | 77 // Generate 2 NOP instructions so that the debugger can patch the return |
78 // pattern (1 instruction) with a call to the debug stub (3 instructions). | 78 // pattern (1 instruction) with a call to the debug stub (3 instructions). |
79 __ nop(); | 79 __ nop(); |
80 __ nop(); | 80 __ nop(); |
81 compiler->AddCurrentDescriptor(PcDescriptors::kReturn, | 81 compiler->AddCurrentDescriptor(PcDescriptors::kReturn, |
82 Isolate::kNoDeoptId, | 82 Isolate::kNoDeoptId, |
83 token_pos()); | 83 token_pos()); |
84 } | 84 } |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 | 825 |
826 | 826 |
827 void CreateClosureInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 827 void CreateClosureInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
828 UNIMPLEMENTED(); | 828 UNIMPLEMENTED(); |
829 } | 829 } |
830 | 830 |
831 } // namespace dart | 831 } // namespace dart |
832 | 832 |
833 #endif // defined TARGET_ARCH_ARM | 833 #endif // defined TARGET_ARCH_ARM |
834 | 834 |
OLD | NEW |