| 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/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/assembler_macros.h" | 9 #include "vm/assembler_macros.h" |
| 10 #include "vm/code_generator.h" | 10 #include "vm/code_generator.h" |
| (...skipping 1048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1059 __ CallRuntime(kAllocateContextRuntimeEntry); // Allocate context. | 1059 __ CallRuntime(kAllocateContextRuntimeEntry); // Allocate context. |
| 1060 __ popq(RAX); // Pop number of context variables argument. | 1060 __ popq(RAX); // Pop number of context variables argument. |
| 1061 __ popq(RAX); // Pop the new context object. | 1061 __ popq(RAX); // Pop the new context object. |
| 1062 // RAX: new object | 1062 // RAX: new object |
| 1063 // Restore the frame pointer. | 1063 // Restore the frame pointer. |
| 1064 __ LeaveFrame(); | 1064 __ LeaveFrame(); |
| 1065 __ ret(); | 1065 __ ret(); |
| 1066 } | 1066 } |
| 1067 | 1067 |
| 1068 | 1068 |
| 1069 // Helper stub to implement Assembler::StoreIntoObject. |
| 1070 // Input parameters: |
| 1071 void StubCode::GenerateUpdateStoreBufferStub(Assembler* assembler) { |
| 1072 __ Unimplemented("StubCode::GenerateUpdateStoreBufferStub"); |
| 1073 __ ret(); |
| 1074 } |
| 1075 |
| 1076 |
| 1069 // Called for inline allocation of objects. | 1077 // Called for inline allocation of objects. |
| 1070 // Input parameters: | 1078 // Input parameters: |
| 1071 // RSP + 16 : type arguments object (only if class is parameterized). | 1079 // RSP + 16 : type arguments object (only if class is parameterized). |
| 1072 // RSP + 8 : type arguments of instantiator (only if class is parameterized). | 1080 // RSP + 8 : type arguments of instantiator (only if class is parameterized). |
| 1073 // RSP : points to return address. | 1081 // RSP : points to return address. |
| 1074 void StubCode::GenerateAllocationStubForClass(Assembler* assembler, | 1082 void StubCode::GenerateAllocationStubForClass(Assembler* assembler, |
| 1075 const Class& cls) { | 1083 const Class& cls) { |
| 1076 const intptr_t kObjectTypeArgumentsOffset = 2 * kWordSize; | 1084 const intptr_t kObjectTypeArgumentsOffset = 2 * kWordSize; |
| 1077 const intptr_t kInstantiatorTypeArgumentsOffset = 1 * kWordSize; | 1085 const intptr_t kInstantiatorTypeArgumentsOffset = 1 * kWordSize; |
| 1078 const Immediate raw_null = | 1086 const Immediate raw_null = |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1822 // TOS + 2: instance. | 1830 // TOS + 2: instance. |
| 1823 // TOS + 3: cache array. | 1831 // TOS + 3: cache array. |
| 1824 // Result in RCX: null -> not found, otherwise result (true or false). | 1832 // Result in RCX: null -> not found, otherwise result (true or false). |
| 1825 void StubCode::GenerateSubtype3TestCacheStub(Assembler* assembler) { | 1833 void StubCode::GenerateSubtype3TestCacheStub(Assembler* assembler) { |
| 1826 GenerateSubtypeNTestCacheStub(assembler, 3); | 1834 GenerateSubtypeNTestCacheStub(assembler, 3); |
| 1827 } | 1835 } |
| 1828 | 1836 |
| 1829 } // namespace dart | 1837 } // namespace dart |
| 1830 | 1838 |
| 1831 #endif // defined TARGET_ARCH_X64 | 1839 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |