| 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" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/code_generator.h" | 9 #include "vm/code_generator.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 1740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1751 | 1751 |
| 1752 | 1752 |
| 1753 void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) { | 1753 void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) { |
| 1754 GenerateUsageCounterIncrement(assembler, R6); | 1754 GenerateUsageCounterIncrement(assembler, R6); |
| 1755 GenerateNArgsCheckInlineCacheStub( | 1755 GenerateNArgsCheckInlineCacheStub( |
| 1756 assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry); | 1756 assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry); |
| 1757 } | 1757 } |
| 1758 | 1758 |
| 1759 | 1759 |
| 1760 void StubCode::GenerateBreakpointRuntimeStub(Assembler* assembler) { | 1760 void StubCode::GenerateBreakpointRuntimeStub(Assembler* assembler) { |
| 1761 __ Unimplemented("BreakpointRuntime stub"); | 1761 __ Comment("BreakpointRuntime stub"); |
| 1762 __ EnterStubFrame(); |
| 1763 __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null())); |
| 1764 // Preserve arguments descriptor and make room for result. |
| 1765 __ PushList((1 << R0) | (1 << R4) | (1 << R5)); |
| 1766 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); |
| 1767 __ PopList((1 << R0) | (1 << R4) | (1 << R5)); |
| 1768 __ LeaveStubFrame(); |
| 1769 __ bx(R0); |
| 1762 } | 1770 } |
| 1763 | 1771 |
| 1764 | 1772 |
| 1765 // LR: return address (Dart code). | 1773 // LR: return address (Dart code). |
| 1766 // R5: IC data (unoptimized static call). | 1774 // R5: IC data (unoptimized static call). |
| 1767 void StubCode::GenerateBreakpointStaticStub(Assembler* assembler) { | 1775 void StubCode::GenerateBreakpointStaticStub(Assembler* assembler) { |
| 1768 // Create a stub frame as we are pushing some objects on the stack before | 1776 // Create a stub frame as we are pushing some objects on the stack before |
| 1769 // calling into the runtime. | 1777 // calling into the runtime. |
| 1770 __ EnterStubFrame(); | 1778 __ EnterStubFrame(); |
| 1771 __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null())); | 1779 __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null())); |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2183 __ ldr(left, Address(SP, 4 * kWordSize)); | 2191 __ ldr(left, Address(SP, 4 * kWordSize)); |
| 2184 __ ldr(right, Address(SP, 3 * kWordSize)); | 2192 __ ldr(right, Address(SP, 3 * kWordSize)); |
| 2185 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); | 2193 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); |
| 2186 __ PopList((1 << R0) | (1 << R1) | (1 << R2)); | 2194 __ PopList((1 << R0) | (1 << R1) | (1 << R2)); |
| 2187 __ Ret(); | 2195 __ Ret(); |
| 2188 } | 2196 } |
| 2189 | 2197 |
| 2190 } // namespace dart | 2198 } // namespace dart |
| 2191 | 2199 |
| 2192 #endif // defined TARGET_ARCH_ARM | 2200 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |