Index: runtime/vm/stub_code_ia32.cc |
=================================================================== |
--- runtime/vm/stub_code_ia32.cc (revision 18992) |
+++ runtime/vm/stub_code_ia32.cc (working copy) |
@@ -679,28 +679,25 @@ |
AssemblerMacros::EnterStubFrame(assembler); |
__ pushl(raw_null); // Setup space on stack for result from error reporting. |
- __ pushl(EDI); // Non-closure object. |
__ pushl(EDX); // Arguments descriptor. |
// Load smi-tagged arguments array length, including the non-closure. |
__ movl(EDX, FieldAddress(EDX, ArgumentsDescriptor::count_offset())); |
- // See stack layout below explaining "wordSize * 6" offset. |
- PushArgumentsArray(assembler, (kWordSize * 6)); |
+ // See stack layout below explaining "wordSize * 5" offset. |
+ PushArgumentsArray(assembler, (kWordSize * 5)); |
// Stack: |
// TOS + 0: Argument array. |
// TOS + 1: Arguments descriptor array. |
- // TOS + 2: Non-closure object. |
- // TOS + 3: Place for result from the call. |
- // TOS + 4: PC marker => RawInstruction object. |
- // TOS + 5: Saved EBP of previous frame. <== EBP |
- // TOS + 6: Dart code return address |
- // TOS + 7: Last argument of caller. |
+ // TOS + 2: Place for result from the call. |
+ // TOS + 3: PC marker => RawInstruction object. |
+ // TOS + 4: Saved EBP of previous frame. <== EBP |
+ // TOS + 5: Dart code return address |
+ // TOS + 6: Last argument of caller. |
// .... |
__ CallRuntime(kInvokeNonClosureRuntimeEntry); |
// Remove arguments. |
__ popl(EAX); |
__ popl(EAX); |
- __ popl(EAX); |
__ popl(EAX); // Get result into EAX. |
// Remove the stub frame as we are about to return. |