OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
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 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1785 __ Push(R5); | 1785 __ Push(R5); |
1786 __ PushObject(Object::null_object(), PP); // Space for result. | 1786 __ PushObject(Object::null_object(), PP); // Space for result. |
1787 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); | 1787 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); |
1788 __ Pop(R0); | 1788 __ Pop(R0); |
1789 __ Pop(R5); | 1789 __ Pop(R5); |
1790 __ LeaveStubFrame(); | 1790 __ LeaveStubFrame(); |
1791 __ br(R0); | 1791 __ br(R0); |
1792 } | 1792 } |
1793 | 1793 |
1794 | 1794 |
1795 // R5: Contains Smi 0 (need to preserve a GC-safe value for the lazy compile | |
1796 // stub). | |
1797 // R4: Contains an arguments descriptor. | |
1798 void StubCode::GenerateClosureCallBreakpointStub(Assembler* assembler) { | |
1799 __ EnterStubFrame(); | |
1800 __ Push(R5); | |
1801 __ Push(R4); | |
1802 __ PushObject(Object::null_object(), PP); // Space for result. | |
1803 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); | |
1804 __ Pop(R0); | |
1805 __ Pop(R4); | |
1806 __ Pop(R5); | |
1807 __ LeaveStubFrame(); | |
1808 __ br(R0); | |
1809 } | |
1810 | |
1811 | |
1812 void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) { | 1795 void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) { |
1813 __ EnterStubFrame(); | 1796 __ EnterStubFrame(); |
1814 __ PushObject(Object::null_object(), PP); // Space for result. | 1797 __ PushObject(Object::null_object(), PP); // Space for result. |
1815 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); | 1798 __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0); |
1816 __ Pop(R0); | 1799 __ Pop(R0); |
1817 __ LeaveStubFrame(); | 1800 __ LeaveStubFrame(); |
1818 __ br(R0); | 1801 __ br(R0); |
1819 } | 1802 } |
1820 | 1803 |
1821 // Called only from unoptimized code. All relevant registers have been saved. | 1804 // Called only from unoptimized code. All relevant registers have been saved. |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2169 // Result: | 2152 // Result: |
2170 // R1: entry point. | 2153 // R1: entry point. |
2171 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) { | 2154 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) { |
2172 EmitMegamorphicLookup(assembler, R0, R1, R1); | 2155 EmitMegamorphicLookup(assembler, R0, R1, R1); |
2173 __ ret(); | 2156 __ ret(); |
2174 } | 2157 } |
2175 | 2158 |
2176 } // namespace dart | 2159 } // namespace dart |
2177 | 2160 |
2178 #endif // defined TARGET_ARCH_ARM64 | 2161 #endif // defined TARGET_ARCH_ARM64 |
OLD | NEW |