зеркало из https://github.com/mozilla/gecko-dev.git
Bug 888122 - Call MacroAssembler::PushRegsInMask instead of pushing each register manually on x64.
This commit is contained in:
Родитель
2efea53f15
Коммит
1b6a2066e6
|
@ -20,6 +20,12 @@
|
||||||
using namespace js;
|
using namespace js;
|
||||||
using namespace js::ion;
|
using namespace js::ion;
|
||||||
|
|
||||||
|
// All registers to save and restore. This includes the stack pointer, since we
|
||||||
|
// use the ability to reference register values on the stack by index.
|
||||||
|
static const RegisterSet AllRegs =
|
||||||
|
RegisterSet(GeneralRegisterSet(Registers::AllMask),
|
||||||
|
FloatRegisterSet(FloatRegisters::AllMask));
|
||||||
|
|
||||||
/* This method generates a trampoline on x64 for a c++ function with
|
/* This method generates a trampoline on x64 for a c++ function with
|
||||||
* the following signature:
|
* the following signature:
|
||||||
* JSBool blah(void *code, int argc, Value *argv, JSObject *scopeChain,
|
* JSBool blah(void *code, int argc, Value *argv, JSObject *scopeChain,
|
||||||
|
@ -282,15 +288,7 @@ IonRuntime::generateInvalidator(JSContext *cx)
|
||||||
masm.addq(Imm32(sizeof(uintptr_t)), rsp);
|
masm.addq(Imm32(sizeof(uintptr_t)), rsp);
|
||||||
|
|
||||||
// Push registers such that we can access them from [base + code].
|
// Push registers such that we can access them from [base + code].
|
||||||
for (uint32_t i = Registers::Total; i > 0; ) {
|
masm.PushRegsInMask(AllRegs);
|
||||||
i--;
|
|
||||||
masm.Push(Register::FromCode(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Push xmm registers, such that we can access them from [base + code].
|
|
||||||
masm.reserveStack(FloatRegisters::Total * sizeof(double));
|
|
||||||
for (uint32_t i = 0; i < FloatRegisters::Total; i++)
|
|
||||||
masm.movsd(FloatRegister::FromCode(i), Operand(rsp, i * sizeof(double)));
|
|
||||||
|
|
||||||
masm.movq(rsp, rax); // Argument to ion::InvalidationBailout.
|
masm.movq(rsp, rax); // Argument to ion::InvalidationBailout.
|
||||||
|
|
||||||
|
@ -416,15 +414,7 @@ static void
|
||||||
GenerateBailoutThunk(JSContext *cx, MacroAssembler &masm, uint32_t frameClass)
|
GenerateBailoutThunk(JSContext *cx, MacroAssembler &masm, uint32_t frameClass)
|
||||||
{
|
{
|
||||||
// Push registers such that we can access them from [base + code].
|
// Push registers such that we can access them from [base + code].
|
||||||
for (uint32_t i = Registers::Total; i > 0; ) {
|
masm.PushRegsInMask(AllRegs);
|
||||||
i--;
|
|
||||||
masm.Push(Register::FromCode(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Push xmm registers, such that we can access them from [base + code].
|
|
||||||
masm.reserveStack(FloatRegisters::Total * sizeof(double));
|
|
||||||
for (uint32_t i = 0; i < FloatRegisters::Total; i++)
|
|
||||||
masm.movsd(FloatRegister::FromCode(i), Operand(rsp, i * sizeof(double)));
|
|
||||||
|
|
||||||
// Get the stack pointer into a register, pre-alignment.
|
// Get the stack pointer into a register, pre-alignment.
|
||||||
masm.movq(rsp, r8);
|
masm.movq(rsp, r8);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче