mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1190295 - Remove 'args' arguments from MacroAssembler::setupAlignedABIArgs and MacroAssembler::setupUnalignedABIArgs. r=bbouvier
This commit is contained in:
parent
af78df190b
commit
35507d69a4
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user