| Index: runtime/vm/stub_code_mips.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_mips.cc (revision 26825)
|
| +++ runtime/vm/stub_code_mips.cc (working copy)
|
| @@ -125,7 +125,7 @@
|
| void StubCode::GeneratePrintStopMessageStub(Assembler* assembler) {
|
| __ EnterCallRuntimeFrame(0);
|
| // Call the runtime leaf function. A0 already contains the parameter.
|
| - __ CallRuntime(kPrintStopMessageRuntimeEntry);
|
| + __ CallRuntime(kPrintStopMessageRuntimeEntry, 1);
|
| __ LeaveCallRuntimeFrame();
|
| __ Ret();
|
| }
|
| @@ -328,7 +328,7 @@
|
| __ LoadImmediate(TMP, reinterpret_cast<intptr_t>(Object::null()));
|
| __ sw(TMP, Address(SP, 0 * kWordSize));
|
|
|
| - __ CallRuntime(kPatchStaticCallRuntimeEntry);
|
| + __ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
|
| __ TraceSimMsg("CallStaticFunctionStub return");
|
|
|
| // Get Code object result and restore arguments descriptor array.
|
| @@ -357,7 +357,7 @@
|
| __ sw(S4, Address(SP, 1 * kWordSize));
|
| __ LoadImmediate(TMP, reinterpret_cast<intptr_t>(Object::null()));
|
| __ sw(TMP, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kFixCallersTargetRuntimeEntry);
|
| + __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
|
| // Get Code object result and restore arguments descriptor array.
|
| __ lw(T0, Address(SP, 0 * kWordSize));
|
| __ lw(S4, Address(SP, 1 * kWordSize));
|
| @@ -438,7 +438,7 @@
|
| PushArgumentsArray(assembler);
|
| __ TraceSimMsg("InstanceFunctionLookupStub return");
|
|
|
| - __ CallRuntime(kInstanceFunctionLookupRuntimeEntry);
|
| + __ CallRuntime(kInstanceFunctionLookupRuntimeEntry, 4);
|
|
|
| __ lw(V0, Address(SP, 4 * kWordSize)); // Get result into V0.
|
| __ addiu(SP, SP, Immediate(5 * kWordSize)); // Remove arguments.
|
| @@ -521,7 +521,7 @@
|
|
|
| __ mov(A0, SP); // Pass address of saved registers block.
|
| __ ReserveAlignedFrameSpace(1 * kWordSize);
|
| - __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry);
|
| + __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
|
| // Result (V0) is stack-size (FP - SP) in bytes, incl. the return address.
|
|
|
| if (preserve_result) {
|
| @@ -549,7 +549,7 @@
|
| __ Push(T1); // Preserve result as first local.
|
| }
|
| __ ReserveAlignedFrameSpace(1 * kWordSize);
|
| - __ CallRuntime(kDeoptimizeFillFrameRuntimeEntry); // Pass last FP in A0.
|
| + __ CallRuntime(kDeoptimizeFillFrameRuntimeEntry, 1); // Pass last FP in A0.
|
| if (preserve_result) {
|
| // Restore result into T1.
|
| __ lw(T1, Address(FP, kFirstLocalSlotFromFp * kWordSize));
|
| @@ -569,7 +569,7 @@
|
| __ Push(T1); // Preserve result, it will be GC-d here.
|
| }
|
| __ PushObject(Smi::ZoneHandle()); // Space for the result.
|
| - __ CallRuntime(kDeoptimizeMaterializeRuntimeEntry);
|
| + __ CallRuntime(kDeoptimizeMaterializeRuntimeEntry, 0);
|
| // Result tells stub how many bytes to remove from the expression stack
|
| // of the bottom-most frame. They were used as materialization arguments.
|
| __ Pop(T1);
|
| @@ -621,7 +621,7 @@
|
| __ sw(S5, Address(SP, 1 * kWordSize));
|
| __ sw(S4, Address(SP, 0 * kWordSize));
|
|
|
| - __ CallRuntime(kMegamorphicCacheMissHandlerRuntimeEntry);
|
| + __ CallRuntime(kMegamorphicCacheMissHandlerRuntimeEntry, 3);
|
|
|
| __ lw(T0, Address(SP, 3 * kWordSize)); // Get result.
|
| __ lw(S4, Address(SP, 4 * kWordSize)); // Restore argument descriptor.
|
| @@ -768,7 +768,7 @@
|
| __ sw(TMP, Address(SP, 2 * kWordSize));
|
| __ sw(A1, Address(SP, 1 * kWordSize));
|
| __ sw(A0, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kAllocateArrayRuntimeEntry);
|
| + __ CallRuntime(kAllocateArrayRuntimeEntry, 2);
|
| __ TraceSimMsg("AllocateArrayStub return");
|
| // Pop arguments; result is popped in IP.
|
| __ lw(V0, Address(SP, 2 * kWordSize));
|
| @@ -838,7 +838,7 @@
|
| __ addiu(SP, SP, Immediate(-2 * kWordSize));
|
| __ sw(S4, Address(SP, 1 * kWordSize));
|
| __ sw(T2, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kCompileFunctionRuntimeEntry);
|
| + __ CallRuntime(kCompileFunctionRuntimeEntry, 1);
|
| __ TraceSimMsg("GenerateCallClosureFunctionStub return");
|
| // Restore arguments descriptor array and read-only function object argument.
|
| __ lw(T2, Address(SP, 0 * kWordSize));
|
| @@ -888,7 +888,7 @@
|
| // TOS + 5: PC marker (0 for stub).
|
| // TOS + 6: Last argument of caller.
|
| // ....
|
| - __ CallRuntime(kInvokeNonClosureRuntimeEntry);
|
| + __ CallRuntime(kInvokeNonClosureRuntimeEntry, 2);
|
| __ lw(V0, Address(SP, 2 * kWordSize)); // Get result into V0.
|
| __ addiu(SP, SP, Immediate(3 * kWordSize)); // Remove arguments.
|
|
|
| @@ -1129,7 +1129,7 @@
|
| __ LoadImmediate(TMP, reinterpret_cast<intptr_t>(Object::null()));
|
| __ sw(TMP, Address(SP, 1 * kWordSize)); // Store null.
|
| __ sw(T1, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kAllocateContextRuntimeEntry); // Allocate context.
|
| + __ CallRuntime(kAllocateContextRuntimeEntry, 1); // Allocate context.
|
| __ lw(V0, Address(SP, 1 * kWordSize)); // Get the new context.
|
| __ addiu(SP, SP, Immediate(2 * kWordSize)); // Pop argument and return.
|
|
|
| @@ -1206,7 +1206,7 @@
|
|
|
| __ EnterCallRuntimeFrame(1 * kWordSize);
|
| __ lw(A0, FieldAddress(CTX, Context::isolate_offset()));
|
| - __ CallRuntime(kStoreBufferBlockProcessRuntimeEntry);
|
| + __ CallRuntime(kStoreBufferBlockProcessRuntimeEntry, 1);
|
| __ TraceSimMsg("UpdateStoreBufferStub return");
|
| // Restore callee-saved registers, tear down frame.
|
| __ LeaveCallRuntimeFrame();
|
| @@ -1379,7 +1379,7 @@
|
| __ sw(T7, Address(SP, 1 * kWordSize));
|
| __ sw(T1, Address(SP, 0 * kWordSize));
|
| }
|
| - __ CallRuntime(kAllocateObjectRuntimeEntry); // Allocate object.
|
| + __ CallRuntime(kAllocateObjectRuntimeEntry, 3); // Allocate object.
|
| __ TraceSimMsg("AllocationStubForClass return");
|
| // Pop result (newly allocated object).
|
| __ lw(V0, Address(SP, 3 * kWordSize));
|
| @@ -1518,11 +1518,11 @@
|
| __ sw(T2, Address(SP, 0 * kWordSize));
|
|
|
| if (is_implicit_instance_closure) {
|
| - __ CallRuntime(kAllocateImplicitInstanceClosureRuntimeEntry);
|
| + __ CallRuntime(kAllocateImplicitInstanceClosureRuntimeEntry, 3);
|
| __ TraceSimMsg("AllocationStubForClosure return");
|
| } else {
|
| ASSERT(func.IsNonImplicitClosureFunction());
|
| - __ CallRuntime(kAllocateClosureRuntimeEntry);
|
| + __ CallRuntime(kAllocateClosureRuntimeEntry, 2);
|
| __ TraceSimMsg("AllocationStubForClosure return");
|
| }
|
| __ lw(V0, Address(SP, (num_slots - 1) * kWordSize)); // Pop function object.
|
| @@ -1565,7 +1565,7 @@
|
| // A1: Smi-tagged arguments array length.
|
| PushArgumentsArray(assembler);
|
|
|
| - __ CallRuntime(kInvokeNoSuchMethodFunctionRuntimeEntry);
|
| + __ CallRuntime(kInvokeNoSuchMethodFunctionRuntimeEntry, 4);
|
|
|
| __ lw(V0, Address(SP, 4 * kWordSize)); // Get result into V0.
|
| __ LeaveStubFrameAndReturn();
|
| @@ -1587,7 +1587,7 @@
|
| __ sw(S5, Address(SP, 2 * kWordSize));
|
| __ sw(ic_reg, Address(SP, 1 * kWordSize)); // Argument.
|
| __ sw(func_reg, Address(SP, 0 * kWordSize)); // Argument.
|
| - __ CallRuntime(kTraceICCallRuntimeEntry);
|
| + __ CallRuntime(kTraceICCallRuntimeEntry, 2);
|
| __ lw(S5, Address(SP, 2 * kWordSize));
|
| __ lw(T0, Address(SP, 3 * kWordSize));
|
| __ addiu(SP, SP, Immediate(4 * kWordSize)); // Discard argument;
|
| @@ -1650,7 +1650,7 @@
|
| __ addiu(SP, SP, Immediate(-2 * kWordSize));
|
| __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
|
| __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
|
| - __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
|
| __ lw(RA, Address(SP, 0 * kWordSize));
|
| __ lw(S5, Address(SP, 1 * kWordSize));
|
| __ addiu(SP, SP, Immediate(2 * kWordSize));
|
| @@ -1751,7 +1751,7 @@
|
| }
|
| // Pass IC data object.
|
| __ sw(S5, Address(SP, (num_slots - num_args - 4) * kWordSize));
|
| - __ CallRuntime(handle_ic_miss);
|
| + __ CallRuntime(handle_ic_miss, num_args + 1);
|
| __ TraceSimMsg("NArgsCheckInlineCacheStub return");
|
| // Pop returned code object into T3 (null if not found).
|
| // Restore arguments descriptor array and IC data array.
|
| @@ -1904,7 +1904,7 @@
|
| __ addiu(SP, SP, Immediate(-2 * kWordSize));
|
| __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
|
| __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
|
| - __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
|
| __ lw(RA, Address(SP, 0 * kWordSize));
|
| __ lw(S5, Address(SP, 1 * kWordSize));
|
| __ addiu(SP, SP, Immediate(2 * kWordSize));
|
| @@ -1945,7 +1945,7 @@
|
| __ sw(S5, Address(SP, 2 * kWordSize)); // Preserve IC data.
|
| __ sw(T3, Address(SP, 1 * kWordSize)); // Preserve function.
|
| __ sw(T3, Address(SP, 0 * kWordSize)); // Function argument.
|
| - __ CallRuntime(kCompileFunctionRuntimeEntry);
|
| + __ CallRuntime(kCompileFunctionRuntimeEntry, 1);
|
| __ lw(T3, Address(SP, 1 * kWordSize)); // Restore function.
|
| __ lw(S5, Address(SP, 2 * kWordSize)); // Restore IC data.
|
| __ addiu(SP, SP, Immediate(3 * kWordSize));
|
| @@ -1988,7 +1988,7 @@
|
| __ sw(S5, Address(SP, 1 * kWordSize));
|
| __ LoadImmediate(TMP, reinterpret_cast<intptr_t>(Object::null()));
|
| __ sw(TMP, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kBreakpointStaticHandlerRuntimeEntry);
|
| + __ CallRuntime(kBreakpointStaticHandlerRuntimeEntry, 0);
|
| // Pop code object result and restore arguments descriptor.
|
| __ lw(T0, Address(SP, 0 * kWordSize));
|
| __ lw(S5, Address(SP, 1 * kWordSize));
|
| @@ -2012,7 +2012,7 @@
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| __ Push(V0);
|
| - __ CallRuntime(kBreakpointReturnHandlerRuntimeEntry);
|
| + __ CallRuntime(kBreakpointReturnHandlerRuntimeEntry, 0);
|
| __ Pop(V0);
|
| __ LeaveStubFrame();
|
|
|
| @@ -2030,7 +2030,7 @@
|
| __ TraceSimMsg("BreakpointDynamicStub");
|
| __ EnterStubFrame();
|
| __ Push(S5);
|
| - __ CallRuntime(kBreakpointDynamicHandlerRuntimeEntry);
|
| + __ CallRuntime(kBreakpointDynamicHandlerRuntimeEntry, 0);
|
| __ Pop(S5);
|
| __ LeaveStubFrame();
|
|
|
| @@ -2285,7 +2285,7 @@
|
| __ LoadObject(TMP1, Symbols::EqualOperator()); // Target's name.
|
| __ sw(TMP1, Address(SP, 1 * kWordSize));
|
| __ sw(T0, Address(SP, 0 * kWordSize)); // ICData.
|
| - __ CallRuntime(kUpdateICDataTwoArgsRuntimeEntry);
|
| + __ CallRuntime(kUpdateICDataTwoArgsRuntimeEntry, 4);
|
| __ lw(A0, Address(SP, 2 * kWordSize));
|
| __ lw(A1, Address(SP, 3 * kWordSize));
|
| __ b(&compute_result);
|
| @@ -2305,7 +2305,7 @@
|
| __ LoadImmediate(TMP, reinterpret_cast<intptr_t>(Object::null()));
|
| __ sw(TMP, Address(SP, 1 * kWordSize));
|
| __ sw(T0, Address(SP, 0 * kWordSize));
|
| - __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry);
|
| + __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
|
| __ TraceSimMsg("OptimizeFunctionStub return");
|
| __ lw(T0, Address(SP, 1 * kWordSize)); // Get Code object
|
| __ lw(S4, Address(SP, 2 * kWordSize)); // Restore argument descriptor.
|
| @@ -2392,7 +2392,7 @@
|
| __ sw(right, Address(SP, 0 * kWordSize));
|
| __ mov(A0, left);
|
| __ mov(A1, right);
|
| - __ CallRuntime(kBigintCompareRuntimeEntry);
|
| + __ CallRuntime(kBigintCompareRuntimeEntry, 2);
|
| __ TraceSimMsg("IdenticalWithNumberCheckStub return");
|
| // Result in V0, 0 means equal.
|
| __ LeaveStubFrame();
|
| @@ -2422,7 +2422,7 @@
|
| // Call single step callback in debugger.
|
| __ addiu(SP, SP, Immediate(-1 * kWordSize));
|
| __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
|
| - __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
|
| __ lw(RA, Address(SP, 0 * kWordSize));
|
| __ addiu(SP, SP, Immediate(1 * kWordSize));
|
| __ Bind(¬_stepping);
|
|
|