| 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 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 // code below. | 760 // code below. |
| 761 ASSERT(kExitLinkSlotFromEntryFp == -7); | 761 ASSERT(kExitLinkSlotFromEntryFp == -7); |
| 762 __ movl(EDX, Address(THR, Thread::top_exit_frame_info_offset())); | 762 __ movl(EDX, Address(THR, Thread::top_exit_frame_info_offset())); |
| 763 __ pushl(EDX); | 763 __ pushl(EDX); |
| 764 __ movl(Address(THR, Thread::top_exit_frame_info_offset()), Immediate(0)); | 764 __ movl(Address(THR, Thread::top_exit_frame_info_offset()), Immediate(0)); |
| 765 | 765 |
| 766 // Load arguments descriptor array into EDX. | 766 // Load arguments descriptor array into EDX. |
| 767 __ movl(EDX, Address(EBP, kArgumentsDescOffset)); | 767 __ movl(EDX, Address(EBP, kArgumentsDescOffset)); |
| 768 __ movl(EDX, Address(EDX, VMHandles::kOffsetOfRawPtrInHandle)); | 768 __ movl(EDX, Address(EDX, VMHandles::kOffsetOfRawPtrInHandle)); |
| 769 | 769 |
| 770 // No need to check for type args, disallowed by DartEntry::InvokeFunction. |
| 770 // Load number of arguments into EBX. | 771 // Load number of arguments into EBX. |
| 771 __ movl(EBX, FieldAddress(EDX, ArgumentsDescriptor::count_offset())); | 772 __ movl(EBX, FieldAddress(EDX, ArgumentsDescriptor::count_offset())); |
| 772 __ SmiUntag(EBX); | 773 __ SmiUntag(EBX); |
| 773 | 774 |
| 774 // Set up arguments for the dart call. | 775 // Set up arguments for the dart call. |
| 775 Label push_arguments; | 776 Label push_arguments; |
| 776 Label done_push_arguments; | 777 Label done_push_arguments; |
| 777 __ testl(EBX, EBX); // check if there are arguments. | 778 __ testl(EBX, EBX); // check if there are arguments. |
| 778 __ j(ZERO, &done_push_arguments, Assembler::kNearJump); | 779 __ j(ZERO, &done_push_arguments, Assembler::kNearJump); |
| 779 __ movl(EAX, Immediate(0)); | 780 __ movl(EAX, Immediate(0)); |
| (...skipping 1355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2135 } | 2136 } |
| 2136 | 2137 |
| 2137 | 2138 |
| 2138 void StubCode::GenerateAsynchronousGapMarkerStub(Assembler* assembler) { | 2139 void StubCode::GenerateAsynchronousGapMarkerStub(Assembler* assembler) { |
| 2139 __ int3(); | 2140 __ int3(); |
| 2140 } | 2141 } |
| 2141 | 2142 |
| 2142 } // namespace dart | 2143 } // namespace dart |
| 2143 | 2144 |
| 2144 #endif // defined TARGET_ARCH_IA32 | 2145 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |