Bug 1190295 - Remove 'args' arguments from MacroAssembler::setupAlignedABIArgs and MacroAssembler::setupUnalignedABIArgs. r=bbouvier

This commit is contained in:
Nicolas B. Pierron 2015-08-17 11:32:19 +02:00
parent af78df190b
commit 35507d69a4
26 changed files with 116 additions and 119 deletions

View File

@ -402,7 +402,7 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only)
volatileRegs.takeUnchecked(temp1);
masm.PushRegsInMask(volatileRegs);
masm.setupUnalignedABICall(1, temp0);
masm.setupUnalignedABICall(temp0);
masm.passABIArg(temp1);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, GrowBacktrackStack));
masm.storeCallResult(temp0);
@ -814,7 +814,7 @@ NativeRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, Label
// Address byte_offset1 - Address captured substring's start.
// Address byte_offset2 - Address of current character position.
// size_t byte_length - length of capture in bytes(!)
masm.setupUnalignedABICall(3, temp0);
masm.setupUnalignedABICall(temp0);
masm.passABIArg(current_character);
masm.passABIArg(current_position);
masm.passABIArg(temp1);

View File

@ -492,7 +492,7 @@ BaselineCompiler::emitOutOfLinePostBarrierSlot()
#endif
masm.pushValue(R0);
masm.setupUnalignedABICall(2, scratch);
masm.setupUnalignedABICall(scratch);
masm.movePtr(ImmPtr(cx->runtime()), scratch);
masm.passABIArg(scratch);
masm.passABIArg(objReg);
@ -587,7 +587,7 @@ BaselineCompiler::emitIsDebuggeeCheck()
{
if (compileDebugInstrumentation_) {
masm.Push(BaselineFrameReg);
masm.setupUnalignedABICall(1, R0.scratchReg());
masm.setupUnalignedABICall(R0.scratchReg());
masm.loadBaselineFramePtr(BaselineFrameReg, R0.scratchReg());
masm.passABIArg(R0.scratchReg());
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, jit::FrameIsDebuggeeCheck));

View File

@ -1080,7 +1080,7 @@ EmitBaselineDebugModeOSRHandlerTail(MacroAssembler& masm, Register temp, bool re
masm.push(Address(temp, offsetof(BaselineDebugModeOSRInfo, resumeAddr)));
// Call a stub to free the allocated info.
masm.setupUnalignedABICall(1, temp);
masm.setupUnalignedABICall(temp);
masm.loadBaselineFramePtr(BaselineFrameReg, temp);
masm.passABIArg(temp);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, FinishBaselineDebugModeOSR));
@ -1132,7 +1132,7 @@ JitRuntime::generateBaselineDebugModeOSRHandler(JSContext* cx, uint32_t* noFrame
masm.push(BaselineFrameReg);
// Call a stub to fully initialize the info.
masm.setupUnalignedABICall(3, temp);
masm.setupUnalignedABICall(temp);
masm.loadBaselineFramePtr(BaselineFrameReg, temp);
masm.passABIArg(temp);
masm.passABIArg(syncedStackStart);

View File

@ -1812,7 +1812,7 @@ ICToBool_Object::Compiler::generateStubCode(MacroAssembler& masm)
EmitReturnFromIC(masm);
masm.bind(&slowPath);
masm.setupUnalignedABICall(1, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(objReg);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, js::EmulatesUndefined));
masm.convertBoolToInt32(ReturnReg, ReturnReg);
@ -2265,7 +2265,7 @@ ICBinaryArith_Double::Compiler::generateStubCode(MacroAssembler& masm)
masm.divDouble(FloatReg1, FloatReg0);
break;
case JSOP_MOD:
masm.setupUnalignedABICall(2, R0.scratchReg());
masm.setupUnalignedABICall(R0.scratchReg());
masm.passABIArg(FloatReg0, MoveOp::DOUBLE);
masm.passABIArg(FloatReg1, MoveOp::DOUBLE);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, NumberMod), MoveOp::DOUBLE);
@ -2393,7 +2393,7 @@ ICBinaryArith_DoubleWithInt32::Compiler::generateStubCode(MacroAssembler& masm)
masm.bind(&truncateABICall);
masm.push(intReg);
masm.setupUnalignedABICall(1, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(FloatReg0, MoveOp::DOUBLE);
masm.callWithABI(mozilla::BitwiseCast<void*, int32_t(*)(double)>(JS::ToInt32));
masm.storeCallResult(scratchReg);
@ -2545,7 +2545,7 @@ ICUnaryArith_Double::Compiler::generateStubCode(MacroAssembler& masm)
masm.jump(&doneTruncate);
masm.bind(&truncateABICall);
masm.setupUnalignedABICall(1, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(FloatReg0, MoveOp::DOUBLE);
masm.callWithABI(BitwiseCast<void*, int32_t(*)(double)>(JS::ToInt32));
masm.storeCallResult(scratchReg);
@ -11027,7 +11027,7 @@ ICCall_Native::Compiler::generateStubCode(MacroAssembler& masm)
masm.enterFakeExitFrame(NativeExitFrameLayout::Token());
// Execute call.
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.loadJSContext(scratch);
masm.passABIArg(scratch);
masm.passABIArg(argcReg);
@ -11125,7 +11125,7 @@ ICCall_ClassHook::Compiler::generateStubCode(MacroAssembler& masm)
masm.enterFakeExitFrame(NativeExitFrameLayout::Token());
// Execute call.
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.loadJSContext(scratch);
masm.passABIArg(scratch);
masm.passABIArg(argcReg);
@ -11528,7 +11528,7 @@ ICTableSwitch::Compiler::generateStubCode(MacroAssembler& masm)
masm.pushValue(R0);
masm.moveStackPtrTo(R0.scratchReg());
masm.setupUnalignedABICall(1, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(R0.scratchReg());
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, DoubleValueToInt32ForSwitch));

View File

@ -383,7 +383,7 @@ CodeGenerator::emitOOLTestObject(Register objreg,
Register scratch)
{
saveVolatile(scratch);
masm.setupUnalignedABICall(1, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(objreg);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, js::EmulatesUndefined));
masm.storeCallResult(scratch);
@ -1147,7 +1147,7 @@ PrepareAndExecuteRegExp(JSContext* cx, MacroAssembler& masm, Register regexp, Re
// Execute the RegExp.
masm.computeEffectiveAddress(Address(masm.getStackPointer(), inputOutputDataStartOffset), temp2);
masm.PushRegsInMask(volatileRegs);
masm.setupUnalignedABICall(1, temp3);
masm.setupUnalignedABICall(temp3);
masm.passABIArg(temp2);
masm.callWithABI(codePointer);
masm.PopRegsInMask(volatileRegs);
@ -2721,7 +2721,7 @@ CodeGenerator::visitOutOfLineCallPostWriteBarrier(OutOfLineCallPostWriteBarrier*
masm.mov(ImmPtr(GetJitContext()->runtime), runtimereg);
void (*fun)(JSRuntime*, JSObject*) = isGlobal ? PostGlobalWriteBarrier : PostWriteBarrier;
masm.setupUnalignedABICall(2, regs.takeAny());
masm.setupUnalignedABICall(regs.takeAny());
masm.passABIArg(runtimereg);
masm.passABIArg(objreg);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, fun));
@ -2823,7 +2823,7 @@ CodeGenerator::visitCallNative(LCallNative* call)
markSafepointAt(safepointOffset, call);
// Construct and execute call.
masm.setupUnalignedABICall(3, tempReg);
masm.setupUnalignedABICall(tempReg);
masm.passABIArg(argContextReg);
masm.passABIArg(argUintNReg);
masm.passABIArg(argVpReg);
@ -2942,7 +2942,7 @@ CodeGenerator::visitCallDOMNative(LCallDOMNative* call)
markSafepointAt(safepointOffset, call);
// Construct and execute call.
masm.setupUnalignedABICall(4, argJSContext);
masm.setupUnalignedABICall(argJSContext);
masm.loadJSContext(argJSContext);
@ -3483,7 +3483,7 @@ CodeGenerator::visitGetDynamicName(LGetDynamicName* lir)
masm.adjustStack(-int32_t(sizeof(Value)));
masm.moveStackPtrTo(temp2);
masm.setupUnalignedABICall(4, temp1);
masm.setupUnalignedABICall(temp1);
masm.passABIArg(temp3);
masm.passABIArg(scopeChain);
masm.passABIArg(name);
@ -3506,7 +3506,7 @@ CodeGenerator::emitFilterArgumentsOrEval(LInstruction* lir, Register string,
{
masm.loadJSContext(temp2);
masm.setupUnalignedABICall(2, temp1);
masm.setupUnalignedABICall(temp1);
masm.passABIArg(temp2);
masm.passABIArg(string);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, FilterArgumentsOrEval));
@ -3883,7 +3883,7 @@ CodeGenerator::emitAssertObjectOrStringResult(Register input, MIRType type, cons
// Check that we have a valid GC pointer.
saveVolatile();
masm.setupUnalignedABICall(2, temp);
masm.setupUnalignedABICall(temp);
masm.loadJSContext(temp);
masm.passABIArg(temp);
masm.passABIArg(input);
@ -3956,7 +3956,7 @@ CodeGenerator::emitAssertResultV(const ValueOperand input, const TemporaryTypeSe
masm.pushValue(input);
masm.moveStackPtrTo(temp1);
masm.setupUnalignedABICall(2, temp2);
masm.setupUnalignedABICall(temp2);
masm.loadJSContext(temp2);
masm.passABIArg(temp2);
masm.passABIArg(temp1);
@ -4218,7 +4218,7 @@ CodeGenerator::visitAtan2D(LAtan2D* lir)
FloatRegister y = ToFloatRegister(lir->y());
FloatRegister x = ToFloatRegister(lir->x());
masm.setupUnalignedABICall(2, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(y, MoveOp::DOUBLE);
masm.passABIArg(x, MoveOp::DOUBLE);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, ecmaAtan2), MoveOp::DOUBLE);
@ -4231,7 +4231,7 @@ CodeGenerator::visitHypot(LHypot* lir)
{
Register temp = ToRegister(lir->temp());
uint32_t numArgs = lir->numArgs();
masm.setupUnalignedABICall(numArgs, temp);
masm.setupUnalignedABICall(temp);
for (uint32_t i = 0 ; i < numArgs; ++i)
masm.passABIArg(ToFloatRegister(lir->getOperand(i)), MoveOp::DOUBLE);
@ -5100,7 +5100,7 @@ CodeGenerator::visitSetDisjointTypedElements(LSetDisjointTypedElements* lir)
Register temp = ToRegister(lir->temp());
masm.setupUnalignedABICall(3, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(target);
masm.passABIArg(targetOffset);
masm.passABIArg(source);
@ -5231,10 +5231,7 @@ CodeGenerator::visitPowI(LPowI* ins)
MOZ_ASSERT(power != temp);
// In all implementations, setupUnalignedABICall() relinquishes use of
// its scratch register. We can therefore save an input register by
// reusing the scratch register to pass constants to callWithABI.
masm.setupUnalignedABICall(2, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(value, MoveOp::DOUBLE);
masm.passABIArg(power);
@ -5249,7 +5246,7 @@ CodeGenerator::visitPowD(LPowD* ins)
FloatRegister power = ToFloatRegister(ins->power());
Register temp = ToRegister(ins->temp());
masm.setupUnalignedABICall(2, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(value, MoveOp::DOUBLE);
masm.passABIArg(power, MoveOp::DOUBLE);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, ecmaPow), MoveOp::DOUBLE);
@ -5264,9 +5261,9 @@ CodeGenerator::visitMathFunctionD(LMathFunctionD* ins)
FloatRegister input = ToFloatRegister(ins->input());
MOZ_ASSERT(ToFloatRegister(ins->output()) == ReturnDoubleReg);
const MathCache* mathCache = ins->mir()->cache();
masm.setupUnalignedABICall(temp);
masm.setupUnalignedABICall(mathCache ? 2 : 1, temp);
const MathCache* mathCache = ins->mir()->cache();
if (mathCache) {
masm.movePtr(ImmPtr(mathCache), temp);
masm.passABIArg(temp);
@ -5365,7 +5362,7 @@ CodeGenerator::visitMathFunctionF(LMathFunctionF* ins)
FloatRegister input = ToFloatRegister(ins->input());
MOZ_ASSERT(ToFloatRegister(ins->output()) == ReturnFloat32Reg);
masm.setupUnalignedABICall(1, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(input, MoveOp::FLOAT32);
void* funptr = nullptr;
@ -5389,7 +5386,7 @@ CodeGenerator::visitModD(LModD* ins)
MOZ_ASSERT(ToFloatRegister(ins->output()) == ReturnDoubleReg);
masm.setupUnalignedABICall(2, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(lhs, MoveOp::DOUBLE);
masm.passABIArg(rhs, MoveOp::DOUBLE);
@ -6217,7 +6214,7 @@ JitRuntime::generateMallocStub(JSContext* cx)
const Register regRuntime = regTemp;
MOZ_ASSERT(regTemp != regNBytes);
masm.setupUnalignedABICall(2, regTemp);
masm.setupUnalignedABICall(regTemp);
masm.movePtr(ImmPtr(cx->runtime()), regRuntime);
masm.passABIArg(regRuntime);
masm.passABIArg(regNBytes);
@ -6255,7 +6252,7 @@ JitRuntime::generateFreeStub(JSContext* cx)
const Register regTemp = regs.takeAnyGeneral();
MOZ_ASSERT(regTemp != regSlots);
masm.setupUnalignedABICall(1, regTemp);
masm.setupUnalignedABICall(regTemp);
masm.passABIArg(regSlots);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, js_free));
@ -6296,7 +6293,7 @@ JitRuntime::generateLazyLinkStub(JSContext* cx)
masm.enterFakeExitFrame(LazyLinkExitFrameLayout::Token());
masm.PushStubCode();
masm.setupUnalignedABICall(1, temp0);
masm.setupUnalignedABICall(temp0);
masm.loadJSContext(temp0);
masm.passABIArg(temp0);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, LazyLinkTopActivation));
@ -7094,7 +7091,7 @@ CodeGenerator::emitArrayPopShift(LInstruction* lir, const MArrayPopShift* mir, R
temps.add(lengthTemp);
saveVolatile(temps);
masm.setupUnalignedABICall(1, lengthTemp);
masm.setupUnalignedABICall(lengthTemp);
masm.passABIArg(obj);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, js::ArrayShiftMoveElements));
restoreVolatile(temps);
@ -8848,7 +8845,7 @@ CodeGenerator::visitOutOfLineTypeOfV(OutOfLineTypeOfV* ool)
Register obj = masm.extractObject(input, temp);
saveVolatile(output);
masm.setupUnalignedABICall(2, output);
masm.setupUnalignedABICall(output);
masm.passABIArg(obj);
masm.movePtr(ImmPtr(GetJitContext()->runtime), output);
masm.passABIArg(output);
@ -9667,7 +9664,7 @@ CodeGenerator::visitGetDOMProperty(LGetDOMProperty* ins)
markSafepointAt(safepointOffset, ins);
masm.setupUnalignedABICall(4, JSContextReg);
masm.setupUnalignedABICall(JSContextReg);
masm.loadJSContext(JSContextReg);
@ -9757,7 +9754,7 @@ CodeGenerator::visitSetDOMProperty(LSetDOMProperty* ins)
markSafepointAt(safepointOffset, ins);
masm.setupUnalignedABICall(4, JSContextReg);
masm.setupUnalignedABICall(JSContextReg);
masm.loadJSContext(JSContextReg);
@ -9825,7 +9822,7 @@ CodeGenerator::visitOutOfLineIsCallable(OutOfLineIsCallable* ool)
Register output = ToRegister(ins->output());
saveVolatile(output);
masm.setupUnalignedABICall(1, output);
masm.setupUnalignedABICall(output);
masm.passABIArg(object);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, ObjectIsCallable));
masm.storeCallResult(output);
@ -10192,7 +10189,7 @@ CodeGenerator::visitDebugger(LDebugger* ins)
Register temp = ToRegister(ins->getTemp(1));
masm.loadJSContext(cx);
masm.setupUnalignedABICall(1, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(cx);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, GlobalHasLiveOnDebuggerStatement));

View File

@ -948,7 +948,7 @@ EmitGetterCall(JSContext* cx, MacroAssembler& masm,
masm.enterFakeExitFrame(IonOOLNativeExitFrameLayout::Token());
// Construct and execute call.
masm.setupUnalignedABICall(3, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argUintNReg);
masm.passABIArg(argVpReg);
@ -1006,7 +1006,7 @@ EmitGetterCall(JSContext* cx, MacroAssembler& masm,
masm.enterFakeExitFrame(IonOOLPropertyOpExitFrameLayout::Token());
// Make the call.
masm.setupUnalignedABICall(4, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argObjReg);
masm.passABIArg(argIdReg);
@ -1586,7 +1586,7 @@ EmitCallProxyGet(JSContext* cx, MacroAssembler& masm, IonCache::StubAttacher& at
masm.enterFakeExitFrame(IonOOLProxyExitFrameLayout::Token());
// Make the call.
masm.setupUnalignedABICall(5, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argProxyReg);
masm.passABIArg(argProxyReg);
@ -2222,7 +2222,7 @@ EmitObjectOpResultCheck(MacroAssembler& masm, Label* failure, bool strict,
masm.computeEffectiveAddress(
Address(masm.getStackPointer(), FrameLayout::offsetOfObjectOpResult()),
argResultReg);
masm.setupUnalignedABICall(5, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argObjReg);
masm.passABIArg(argIdReg);
@ -2297,7 +2297,7 @@ EmitCallProxySet(JSContext* cx, MacroAssembler& masm, IonCache::StubAttacher& at
masm.enterFakeExitFrame(IonOOLProxyExitFrameLayout::Token());
// Make the call.
masm.setupUnalignedABICall(5, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argProxyReg);
masm.passABIArg(argIdReg);
@ -2506,7 +2506,7 @@ GenerateCallSetter(JSContext* cx, IonScript* ion, MacroAssembler& masm,
masm.enterFakeExitFrame(IonOOLNativeExitFrameLayout::Token());
// Make the call
masm.setupUnalignedABICall(3, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argUintNReg);
masm.passABIArg(argVpReg);
@ -2570,7 +2570,7 @@ GenerateCallSetter(JSContext* cx, IonScript* ion, MacroAssembler& masm,
masm.enterFakeExitFrame(IonOOLSetterOpExitFrameLayout::Token());
// Make the call.
masm.setupUnalignedABICall(5, scratchReg);
masm.setupUnalignedABICall(scratchReg);
masm.passABIArg(argJSContextReg);
masm.passABIArg(argObjReg);
masm.passABIArg(argIdReg);
@ -2815,7 +2815,7 @@ GenerateAddSlot(JSContext* cx, MacroAssembler& masm, IonCache::StubAttacher& att
masm.loadPtr(Address(object, UnboxedPlainObject::offsetOfExpando()), object);
}
masm.setupUnalignedABICall(3, temp1);
masm.setupUnalignedABICall(temp1);
masm.loadJSContext(temp1);
masm.passABIArg(temp1);
masm.passABIArg(object);
@ -3463,7 +3463,7 @@ GetElementIC::attachGetProp(JSContext* cx, HandleScript outerScript, IonScript*
if (!volatileRegs.has(objReg))
masm.push(objReg);
masm.setupUnalignedABICall(2, scratch);
masm.setupUnalignedABICall(scratch);
masm.movePtr(ImmGCPtr(name), objReg);
masm.passABIArg(objReg);
masm.unboxString(val, scratch);
@ -3820,7 +3820,7 @@ GenerateGetTypedOrUnboxedArrayElement(JSContext* cx, MacroAssembler& masm,
Register temp = regs.takeAnyGeneral();
masm.setupUnalignedABICall(1, temp);
masm.setupUnalignedABICall(temp);
masm.passABIArg(str);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, GetIndexFromString));
masm.mov(ReturnReg, indexReg);

View File

@ -1486,7 +1486,7 @@ MacroAssembler::initGCThing(Register obj, Register temp, JSObject* templateObj,
regs.takeUnchecked(obj);
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(obj);
movePtr(ImmGCPtr(templateObj->type()), temp);
passABIArg(temp);
@ -1624,7 +1624,7 @@ MacroAssembler::generateBailoutTail(Register scratch, Register bailoutInfo)
// Fall-through: overrecursed.
{
loadJSContext(ReturnReg);
setupUnalignedABICall(1, scratch);
setupUnalignedABICall(scratch);
passABIArg(ReturnReg);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, BailoutReportOverRecursed));
jump(exceptionLabel());
@ -1688,7 +1688,7 @@ MacroAssembler::generateBailoutTail(Register scratch, Register bailoutInfo)
push(Address(bailoutInfo, offsetof(BaselineBailoutInfo, monitorStub)));
// Call a stub to free allocated memory and create arguments objects.
setupUnalignedABICall(1, temp);
setupUnalignedABICall(temp);
passABIArg(bailoutInfo);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, FinishBailoutToBaseline));
branchTest32(Zero, ReturnReg, ReturnReg, exceptionLabel());
@ -1726,7 +1726,7 @@ MacroAssembler::generateBailoutTail(Register scratch, Register bailoutInfo)
push(Address(bailoutInfo, offsetof(BaselineBailoutInfo, resumeAddr)));
// Call a stub to free allocated memory and create arguments objects.
setupUnalignedABICall(1, temp);
setupUnalignedABICall(temp);
passABIArg(bailoutInfo);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, FinishBailoutToBaseline));
branchTest32(Zero, ReturnReg, ReturnReg, exceptionLabel());
@ -1801,7 +1801,7 @@ MacroAssembler::assumeUnreachable(const char* output)
PushRegsInMask(save);
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(1, temp);
setupUnalignedABICall(temp);
movePtr(ImmPtr(output), temp);
passABIArg(temp);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, AssumeUnreachable_));
@ -1844,7 +1844,7 @@ MacroAssembler::printf(const char* output)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(1, temp);
setupUnalignedABICall(temp);
movePtr(ImmPtr(output), temp);
passABIArg(temp);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, Printf0_));
@ -1870,7 +1870,7 @@ MacroAssembler::printf(const char* output, Register value)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
movePtr(ImmPtr(output), temp);
passABIArg(temp);
passABIArg(value);
@ -1893,7 +1893,7 @@ MacroAssembler::tracelogStartId(Register logger, uint32_t textId, bool force)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(logger);
move32(Imm32(textId), temp);
passABIArg(temp);
@ -1913,7 +1913,7 @@ MacroAssembler::tracelogStartId(Register logger, Register textId)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(logger);
passABIArg(textId);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, TraceLogStartEventPrivate));
@ -1934,7 +1934,7 @@ MacroAssembler::tracelogStartEvent(Register logger, Register event)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(logger);
passABIArg(event);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, TraceLogFunc));
@ -1955,7 +1955,7 @@ MacroAssembler::tracelogStopId(Register logger, uint32_t textId, bool force)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(logger);
move32(Imm32(textId), temp);
passABIArg(temp);
@ -1976,7 +1976,7 @@ MacroAssembler::tracelogStopId(Register logger, Register textId)
Register temp = regs.takeAnyGeneral();
setupUnalignedABICall(2, temp);
setupUnalignedABICall(temp);
passABIArg(logger);
passABIArg(textId);
callWithABI(JS_FUNC_TO_DATA_PTR(void*, TraceLogStopEventPrivate));
@ -2807,7 +2807,7 @@ MacroAssembler::setupABICall()
}
void
MacroAssembler::setupAlignedABICall(uint32_t args)
MacroAssembler::setupAlignedABICall()
{
setupABICall();
dynamicAlignment_ = false;

View File

@ -486,11 +486,11 @@ class MacroAssembler : public MacroAssemblerSpecific
// Setup a call to C/C++ code, given the assumption that the framePushed
// accruately define the state of the stack, and that the top of the stack
// was properly aligned. Note that this only supports cdecl.
void setupAlignedABICall(uint32_t args); // CRASH_ON(arm64)
void setupAlignedABICall(); // CRASH_ON(arm64)
// Setup an ABI call for when the alignment is not known. This may need a
// scratch register.
void setupUnalignedABICall(uint32_t args, Register scratch) PER_ARCH;
void setupUnalignedABICall(Register scratch) PER_ARCH;
// Arguments must be assigned to a C/C++ call in order. They are moved
// in parallel immediately before performing the call. This process may

View File

@ -809,7 +809,7 @@ ICStubCompiler::emitPostWriteBarrierSlot(MacroAssembler& masm, Register obj, Val
#endif
saveRegs.set() = GeneralRegisterSet::Intersect(saveRegs.set(), GeneralRegisterSet::Volatile());
masm.PushRegsInMask(saveRegs);
masm.setupUnalignedABICall(2, scratch);
masm.setupUnalignedABICall(scratch);
masm.movePtr(ImmPtr(cx->runtime()), scratch);
masm.passABIArg(scratch);
masm.passABIArg(obj);

View File

@ -139,7 +139,7 @@ ICBinaryArith_Int32::Compiler::generateStubCode(MacroAssembler& masm)
MOZ_ASSERT(R0 == ValueOperand(r3, r2));
masm.moveValue(R0, savedValue);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
masm.passABIArg(R0.payloadReg());
masm.passABIArg(R1.payloadReg());
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, __aeabi_idivmod));

View File

@ -573,7 +573,7 @@ CodeGeneratorARM::visitSoftDivI(LSoftDivI* ins)
Label done;
divICommon(mir, lhs, rhs, output, ins->snapshot(), done);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
masm.passABIArg(lhs);
masm.passABIArg(rhs);
if (gen->compilingAsmJS())
@ -734,7 +734,7 @@ CodeGeneratorARM::visitSoftModI(LSoftModI* ins)
modICommon(mir, lhs, rhs, output, ins->snapshot(), done);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
masm.passABIArg(lhs);
masm.passABIArg(rhs);
if (gen->compilingAsmJS())
@ -1916,7 +1916,7 @@ CodeGeneratorARM::visitAsmJSCompareExchangeCallout(LAsmJSCompareExchangeCallout*
MOZ_ASSERT(ToRegister(ins->output()) == ReturnReg);
masm.setupAlignedABICall(4);
masm.setupAlignedABICall();
masm.ma_mov(Imm32(viewType), ScratchRegister);
masm.passABIArg(ScratchRegister);
masm.passABIArg(ptr);
@ -1969,7 +1969,7 @@ CodeGeneratorARM::visitAsmJSAtomicExchangeCallout(LAsmJSAtomicExchangeCallout* i
MOZ_ASSERT(ToRegister(ins->output()) == ReturnReg);
masm.setupAlignedABICall(3);
masm.setupAlignedABICall();
masm.ma_mov(Imm32(viewType), ScratchRegister);
masm.passABIArg(ScratchRegister);
masm.passABIArg(ptr);
@ -2066,7 +2066,7 @@ CodeGeneratorARM::visitAsmJSAtomicBinopCallout(LAsmJSAtomicBinopCallout* ins)
Register ptr = ToRegister(ins->ptr());
Register value = ToRegister(ins->value());
masm.setupAlignedABICall(3);
masm.setupAlignedABICall();
masm.ma_mov(Imm32(viewType), ScratchRegister);
masm.passABIArg(ScratchRegister);
masm.passABIArg(ptr);
@ -2193,7 +2193,7 @@ CodeGeneratorARM::visitSoftUDivOrMod(LSoftUDivOrMod* ins)
generateUDivModZeroCheck(rhs, output, &done, ins->snapshot(), div);
generateUDivModZeroCheck(rhs, output, &done, ins->snapshot(), mod);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
masm.passABIArg(lhs);
masm.passABIArg(rhs);
if (gen->compilingAsmJS())
@ -2336,7 +2336,7 @@ CodeGeneratorARM::visitRandom(LRandom* ins)
masm.loadJSContext(temp);
masm.setupUnalignedABICall(1, temp2);
masm.setupUnalignedABICall(temp2);
masm.passABIArg(temp);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, math_random_no_outparam), MoveOp::DOUBLE);

View File

@ -3766,7 +3766,7 @@ MacroAssemblerARMCompat::handleFailureWithHandlerTail(void* handler)
ma_mov(sp, r0);
// Call the handler.
asMasm().setupUnalignedABICall(1, r1);
asMasm().setupUnalignedABICall(r1);
asMasm().passABIArg(r0);
asMasm().callWithABI(handler);
@ -4985,7 +4985,7 @@ MacroAssembler::call(JitCode* c)
// ABI function calls.
void
MacroAssembler::setupUnalignedABICall(uint32_t args, Register scratch)
MacroAssembler::setupUnalignedABICall(Register scratch)
{
setupABICall();
dynamicAlignment_ = true;

View File

@ -292,7 +292,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type)
masm.push(framePtr); // BaselineFrame
masm.push(r0); // jitcode
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(r11); // BaselineFrame
masm.passABIArg(OsrFrameReg); // InterpreterFrame
masm.passABIArg(numStackValues);
@ -423,7 +423,7 @@ JitRuntime::generateInvalidator(JSContext* cx)
const int sizeOfBailoutInfo = sizeof(void*)*2;
masm.reserveStack(sizeOfBailoutInfo);
masm.mov(sp, r2);
masm.setupAlignedABICall(3);
masm.setupAlignedABICall();
masm.passABIArg(r0);
masm.passABIArg(r1);
masm.passABIArg(r2);
@ -646,7 +646,7 @@ GenerateBailoutThunk(JSContext* cx, MacroAssembler& masm, uint32_t frameClass)
const int sizeOfBailoutInfo = sizeof(void*)*2;
masm.reserveStack(sizeOfBailoutInfo);
masm.mov(sp, r1);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
// Decrement sp by another 4, so we keep alignment. Not Anymore! Pushing
// both the snapshotoffset as well as the: masm.as_sub(sp, sp, Imm8(4));
@ -817,7 +817,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f)
break;
}
masm.setupUnalignedABICall(f.argc(), regs.getAny());
masm.setupUnalignedABICall(regs.getAny());
masm.passABIArg(cxreg);
size_t argDisp = 0;
@ -942,7 +942,7 @@ JitRuntime::generatePreBarrier(JSContext* cx, MIRType type)
MOZ_ASSERT(PreBarrierReg == r1);
masm.movePtr(ImmPtr(cx->runtime()), r0);
masm.setupUnalignedABICall(2, r2);
masm.setupUnalignedABICall(r2);
masm.passABIArg(r0);
masm.passABIArg(r1);
masm.callWithABI(IonMarkFunction(type));

View File

@ -182,7 +182,7 @@ MacroAssemblerCompat::handleFailureWithHandlerTail(void* handler)
Mov(x0, GetStackPointer64());
// Call the handler.
asMasm().setupUnalignedABICall(1, r1);
asMasm().setupUnalignedABICall(r1);
asMasm().passABIArg(r0);
asMasm().callWithABI(handler);
@ -519,7 +519,7 @@ MacroAssembler::call(JitCode* c)
// ABI function calls.
void
MacroAssembler::setupUnalignedABICall(uint32_t args, Register scratch)
MacroAssembler::setupUnalignedABICall(Register scratch)
{
setupABICall();
dynamicAlignment_ = true;

View File

@ -194,7 +194,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type)
masm.push(BaselineFrameReg, reg_code);
// Initialize the frame, including filling in the slots.
masm.setupUnalignedABICall(3, r19);
masm.setupUnalignedABICall(r19);
masm.passABIArg(BaselineFrameReg); // BaselineFrame.
masm.passABIArg(reg_osrFrame); // InterpreterFrame.
masm.passABIArg(reg_osrNStack);
@ -295,7 +295,7 @@ JitRuntime::generateInvalidator(JSContext* cx)
masm.Sub(x2, masm.GetStackPointer64(), Operand(sizeof(size_t) + sizeof(void*)));
masm.moveToStackPtr(r2);
masm.setupUnalignedABICall(3, r10);
masm.setupUnalignedABICall(r10);
masm.passABIArg(r0);
masm.passABIArg(r1);
masm.passABIArg(r2);
@ -496,7 +496,7 @@ GenerateBailoutThunk(JSContext* cx, MacroAssembler& masm, uint32_t frameClass)
masm.reserveStack(sizeOfBailoutInfo);
masm.moveStackPtrTo(r1);
masm.setupUnalignedABICall(2, r2);
masm.setupUnalignedABICall(r2);
masm.passABIArg(r0);
masm.passABIArg(r1);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, Bailout));
@ -636,7 +636,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f)
break;
}
masm.setupUnalignedABICall(f.argc(), regs.getAny());
masm.setupUnalignedABICall(regs.getAny());
masm.passABIArg(reg_cx);
size_t argDisp = 0;
@ -763,7 +763,7 @@ JitRuntime::generatePreBarrier(JSContext* cx, MIRType type)
MOZ_ASSERT(PreBarrierReg == r1);
masm.movePtr(ImmPtr(cx->runtime()), r3);
masm.setupUnalignedABICall(2, r0);
masm.setupUnalignedABICall(r0);
masm.passABIArg(r3);
masm.passABIArg(PreBarrierReg);
masm.callWithABI(IonMarkFunction(type));

View File

@ -2120,7 +2120,7 @@ CodeGeneratorMIPS::visitRandom(LRandom* ins)
masm.loadJSContext(temp);
masm.setupUnalignedABICall(1, temp2);
masm.setupUnalignedABICall(temp2);
masm.passABIArg(temp);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, math_random_no_outparam), MoveOp::DOUBLE);

View File

@ -3204,7 +3204,7 @@ MacroAssemblerMIPSCompat::handleFailureWithHandlerTail(void* handler)
ma_move(a0, StackPointer); // Use a0 since it is a first function argument
// Call the handler.
asMasm().setupUnalignedABICall(1, a1);
asMasm().setupUnalignedABICall(a1);
asMasm().passABIArg(a0);
asMasm().callWithABI(handler);
@ -3549,7 +3549,7 @@ MacroAssembler::call(JitCode* c)
// ABI function calls.
void
MacroAssembler::setupUnalignedABICall(uint32_t args, Register scratch)
MacroAssembler::setupUnalignedABICall(Register scratch)
{
setupABICall();
dynamicAlignment_ = true;

View File

@ -247,7 +247,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type)
masm.storePtr(framePtr, Address(StackPointer, sizeof(uintptr_t))); // BaselineFrame
masm.storePtr(reg_code, Address(StackPointer, 0)); // jitcode
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(BaselineFrameReg); // BaselineFrame
masm.passABIArg(OsrFrameReg); // InterpreterFrame
masm.passABIArg(numStackValues);
@ -374,7 +374,7 @@ JitRuntime::generateInvalidator(JSContext* cx)
// Pass pointer to BailoutInfo
masm.movePtr(StackPointer, a2);
masm.setupAlignedABICall(3);
masm.setupAlignedABICall();
masm.passABIArg(a0);
masm.passABIArg(a1);
masm.passABIArg(a2);
@ -610,7 +610,7 @@ GenerateBailoutThunk(JSContext* cx, MacroAssembler& masm, uint32_t frameClass)
masm.storePtr(ImmPtr(nullptr), Address(StackPointer, 0));
masm.movePtr(StackPointer, a1);
masm.setupAlignedABICall(2);
masm.setupAlignedABICall();
masm.passABIArg(a0);
masm.passABIArg(a1);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, Bailout));
@ -766,7 +766,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f)
masm.reserveStack(outParamOffset);
masm.movePtr(StackPointer, doubleArgs);
masm.setupAlignedABICall(f.argc());
masm.setupAlignedABICall();
masm.passABIArg(cxreg);
size_t argDisp = 0;
@ -910,7 +910,7 @@ JitRuntime::generatePreBarrier(JSContext* cx, MIRType type)
MOZ_ASSERT(PreBarrierReg == a1);
masm.movePtr(ImmPtr(cx->runtime()), a0);
masm.setupUnalignedABICall(2, a2);
masm.setupUnalignedABICall(a2);
masm.passABIArg(a0);
masm.passABIArg(a1);
masm.callWithABI(IonMarkFunction(type));

View File

@ -1451,7 +1451,7 @@ CodeGeneratorShared::visitOutOfLineTruncateSlow(OutOfLineTruncateSlow* ool)
}
#endif
masm.setupUnalignedABICall(1, dest);
masm.setupUnalignedABICall(dest);
masm.passABIArg(src, MoveOp::DOUBLE);
if (gen->compilingAsmJS())
masm.callWithABI(AsmJSImm_ToInt32);

View File

@ -981,7 +981,7 @@ CodeGeneratorX64::visitOutOfLineRandom(OutOfLineRandom* ool)
masm.loadJSContext(temp);
masm.setupUnalignedABICall(1, temp2);
masm.setupUnalignedABICall(temp2);
masm.passABIArg(temp);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, math_random_no_outparam), MoveOp::DOUBLE);

View File

@ -191,7 +191,7 @@ MacroAssemblerX64::handleFailureWithHandlerTail(void* handler)
movq(rsp, rax);
// Call the handler.
asMasm().setupUnalignedABICall(1, rcx);
asMasm().setupUnalignedABICall(rcx);
asMasm().passABIArg(rax);
asMasm().callWithABI(handler);
@ -407,7 +407,7 @@ MacroAssembler::reserveStack(uint32_t amount)
// ABI function calls.
void
MacroAssembler::setupUnalignedABICall(uint32_t args, Register scratch)
MacroAssembler::setupUnalignedABICall(Register scratch)
{
setupABICall();
dynamicAlignment_ = true;

View File

@ -233,7 +233,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type)
masm.push(framePtr);
masm.push(reg_code);
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(framePtr); // BaselineFrame
masm.passABIArg(OsrFrameReg); // InterpreterFrame
masm.passABIArg(numStackValues);
@ -362,7 +362,7 @@ JitRuntime::generateInvalidator(JSContext* cx)
masm.reserveStack(sizeof(void*));
masm.movq(rsp, r9);
masm.setupUnalignedABICall(3, rdx);
masm.setupUnalignedABICall(rdx);
masm.passABIArg(rax);
masm.passABIArg(rbx);
masm.passABIArg(r9);
@ -588,7 +588,7 @@ GenerateBailoutThunk(JSContext* cx, MacroAssembler& masm, uint32_t frameClass)
masm.movq(rsp, r9);
// Call the bailout function.
masm.setupUnalignedABICall(2, rax);
masm.setupUnalignedABICall(rax);
masm.passABIArg(r8);
masm.passABIArg(r9);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, Bailout));
@ -714,7 +714,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f)
break;
}
masm.setupUnalignedABICall(f.argc(), regs.getAny());
masm.setupUnalignedABICall(regs.getAny());
masm.passABIArg(cxreg);
size_t argDisp = 0;
@ -831,7 +831,7 @@ JitRuntime::generatePreBarrier(JSContext* cx, MIRType type)
MOZ_ASSERT(PreBarrierReg == rdx);
masm.mov(ImmPtr(cx->runtime()), rcx);
masm.setupUnalignedABICall(2, rax);
masm.setupUnalignedABICall(rax);
masm.passABIArg(rcx);
masm.passABIArg(rdx);
masm.callWithABI(IonMarkFunction(type));

View File

@ -1032,7 +1032,7 @@ CodeGeneratorX86::visitOutOfLineTruncate(OutOfLineTruncate* ool)
{
saveVolatile(output);
masm.setupUnalignedABICall(1, output);
masm.setupUnalignedABICall(output);
masm.passABIArg(input, MoveOp::DOUBLE);
if (gen->compilingAsmJS())
masm.callWithABI(AsmJSImm_ToInt32);
@ -1122,7 +1122,7 @@ CodeGeneratorX86::visitOutOfLineTruncateFloat32(OutOfLineTruncateFloat32* ool)
saveVolatile(output);
masm.push(input);
masm.setupUnalignedABICall(1, output);
masm.setupUnalignedABICall(output);
masm.vcvtss2sd(input, input, input);
masm.passABIArg(input.asDouble(), MoveOp::DOUBLE);
@ -1148,7 +1148,7 @@ CodeGeneratorX86::visitRandom(LRandom* ins)
masm.loadJSContext(temp);
masm.setupUnalignedABICall(1, temp2);
masm.setupUnalignedABICall(temp2);
masm.passABIArg(temp);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, math_random_no_outparam), MoveOp::DOUBLE);

View File

@ -212,7 +212,7 @@ MacroAssemblerX86::handleFailureWithHandlerTail(void* handler)
movl(esp, eax);
// Call the handler.
asMasm().setupUnalignedABICall(1, ecx);
asMasm().setupUnalignedABICall(ecx);
asMasm().passABIArg(eax);
asMasm().callWithABI(handler);
@ -438,7 +438,7 @@ MacroAssembler::reserveStack(uint32_t amount)
// ABI function calls.
void
MacroAssembler::setupUnalignedABICall(uint32_t args, Register scratch)
MacroAssembler::setupUnalignedABICall(Register scratch)
{
setupABICall();
dynamicAlignment_ = true;

View File

@ -224,7 +224,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type)
masm.push(framePtr);
masm.push(jitcode);
masm.setupUnalignedABICall(3, scratch);
masm.setupUnalignedABICall(scratch);
masm.passABIArg(framePtr); // BaselineFrame
masm.passABIArg(OsrFrameReg); // InterpreterFrame
masm.passABIArg(numStackValues);
@ -355,7 +355,7 @@ JitRuntime::generateInvalidator(JSContext* cx)
masm.reserveStack(sizeof(void*));
masm.movl(esp, ecx);
masm.setupUnalignedABICall(3, edx);
masm.setupUnalignedABICall(edx);
masm.passABIArg(eax);
masm.passABIArg(ebx);
masm.passABIArg(ecx);
@ -587,7 +587,7 @@ GenerateBailoutThunk(JSContext* cx, MacroAssembler& masm, uint32_t frameClass)
masm.movl(esp, ebx);
// Call the bailout function. This will correct the size of the bailout.
masm.setupUnalignedABICall(2, ecx);
masm.setupUnalignedABICall(ecx);
masm.passABIArg(eax);
masm.passABIArg(ebx);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, Bailout));
@ -735,7 +735,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f)
break;
}
masm.setupUnalignedABICall(f.argc(), regs.getAny());
masm.setupUnalignedABICall(regs.getAny());
masm.passABIArg(cxreg);
size_t argDisp = 0;
@ -859,7 +859,7 @@ JitRuntime::generatePreBarrier(JSContext* cx, MIRType type)
MOZ_ASSERT(PreBarrierReg == edx);
masm.movl(ImmPtr(cx->runtime()), ecx);
masm.setupUnalignedABICall(2, eax);
masm.setupUnalignedABICall(eax);
masm.passABIArg(ecx);
masm.passABIArg(edx);
masm.callWithABI(IonMarkFunction(type));

View File

@ -161,7 +161,7 @@ UnboxedLayout::makeConstructorCode(JSContext* cx, HandleObjectGroup group)
masm.PushRegsInMask(liveVolatileRegisters);
masm.mov(ImmPtr(cx->runtime()), scratch1);
masm.setupUnalignedABICall(2, scratch2);
masm.setupUnalignedABICall(scratch2);
masm.passABIArg(scratch1);
masm.passABIArg(object);
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, PostWriteBarrier));