| Index: runtime/vm/stub_code_mips.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_mips.cc (revision 23482)
|
| +++ runtime/vm/stub_code_mips.cc (working copy)
|
| @@ -62,7 +62,7 @@
|
| // Reserve space for arguments and align frame before entering C++ world.
|
| // NativeArguments are passed in registers.
|
| ASSERT(sizeof(NativeArguments) == 4 * kWordSize);
|
| - __ ReserveAlignedFrameSpace(0);
|
| + __ ReserveAlignedFrameSpace(4 * kWordSize); // Reserve space for arguments.
|
|
|
| // Pass NativeArguments structure by value and call runtime.
|
| // Registers A0, A1, A2, and A3 are used.
|
| @@ -161,11 +161,6 @@
|
| // Cache Isolate pointer into CTX while executing native code.
|
| __ mov(CTX, A0);
|
|
|
| - // Reserve space for the native arguments structure passed on the stack (the
|
| - // outgoing pointer parameter to the native arguments structure is passed in
|
| - // R0) and align frame before entering the C++ world.
|
| - __ ReserveAlignedFrameSpace(sizeof(NativeArguments));
|
| -
|
| // Initialize NativeArguments structure and call native function.
|
| // Registers A0, A1, A2, and A3 are used.
|
|
|
| @@ -191,10 +186,12 @@
|
| __ sw(A2, Address(SP, 2 * kWordSize));
|
| __ sw(A1, Address(SP, 1 * kWordSize));
|
| __ sw(A0, Address(SP, 0 * kWordSize));
|
| + __ mov(A0, SP); // Pass the pointer to the NativeArguments.
|
|
|
| + __ ReserveAlignedFrameSpace(kWordSize); // Just passing A0.
|
| +
|
| // Call native function or redirection via simulator.
|
| __ jalr(T5);
|
| - __ delay_slot()->mov(A0, SP); // Pass the pointer to the NativeArguments.
|
| __ TraceSimMsg("CallNativeCFunctionStub return");
|
|
|
| // Reset exit frame information in Isolate structure.
|
| @@ -1478,7 +1475,7 @@
|
|
|
|
|
| // Generate inline cache check for 'num_args'.
|
| -// AR: return address
|
| +// RA: return address
|
| // S5: Inline cache data object.
|
| // S4: Arguments descriptor array.
|
| // Control flow:
|
|
|