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 |