| 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_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 | 768 |
| 769 // Called when invoking dart code from C++ (VM code). | 769 // Called when invoking dart code from C++ (VM code). |
| 770 // Input parameters: | 770 // Input parameters: |
| 771 // ESP : points to return address. | 771 // ESP : points to return address. |
| 772 // ESP + 4 : entrypoint of the dart function to call. | 772 // ESP + 4 : entrypoint of the dart function to call. |
| 773 // ESP + 8 : arguments descriptor array. | 773 // ESP + 8 : arguments descriptor array. |
| 774 // ESP + 12 : arguments array. | 774 // ESP + 12 : arguments array. |
| 775 // ESP + 16 : new context containing the current isolate pointer. | 775 // ESP + 16 : new context containing the current isolate pointer. |
| 776 // Uses EAX, EDX, ECX, EDI as temporary registers. | 776 // Uses EAX, EDX, ECX, EDI as temporary registers. |
| 777 void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) { | 777 void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) { |
| 778 const int kEntryPointOffset = 2 * kWordSize; | 778 const intptr_t kEntryPointOffset = 2 * kWordSize; |
| 779 const int kArgumentsDescOffset = 3 * kWordSize; | 779 const intptr_t kArgumentsDescOffset = 3 * kWordSize; |
| 780 const int kArgumentsOffset = 4 * kWordSize; | 780 const intptr_t kArgumentsOffset = 4 * kWordSize; |
| 781 const int kNewContextOffset = 5 * kWordSize; | 781 const intptr_t kNewContextOffset = 5 * kWordSize; |
| 782 | 782 |
| 783 // Save frame pointer coming in. | 783 // Save frame pointer coming in. |
| 784 __ EnterFrame(0); | 784 __ EnterFrame(0); |
| 785 | 785 |
| 786 // Save C++ ABI callee-saved registers. | 786 // Save C++ ABI callee-saved registers. |
| 787 __ pushl(EBX); | 787 __ pushl(EBX); |
| 788 __ pushl(ESI); | 788 __ pushl(ESI); |
| 789 __ pushl(EDI); | 789 __ pushl(EDI); |
| 790 | 790 |
| 791 // The new Context structure contains a pointer to the current Isolate | 791 // The new Context structure contains a pointer to the current Isolate |
| (...skipping 1381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2173 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); | 2173 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); |
| 2174 __ popl(temp); | 2174 __ popl(temp); |
| 2175 __ popl(right); | 2175 __ popl(right); |
| 2176 __ popl(left); | 2176 __ popl(left); |
| 2177 __ ret(); | 2177 __ ret(); |
| 2178 } | 2178 } |
| 2179 | 2179 |
| 2180 } // namespace dart | 2180 } // namespace dart |
| 2181 | 2181 |
| 2182 #endif // defined TARGET_ARCH_IA32 | 2182 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |