mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
JSOP_ENDINIT fast path, obsoletes stub call. (r=dvander)
This commit is contained in:
parent
30a3cc58b6
commit
0aca3bfb30
@ -956,8 +956,18 @@ mjit::Compiler::generateMethod()
|
||||
END_CASE(JSOP_NEWINIT)
|
||||
|
||||
BEGIN_CASE(JSOP_ENDINIT)
|
||||
prepareStubCall();
|
||||
stubCall(stubs::EndInit, Uses(0), Defs(0));
|
||||
{
|
||||
FrameEntry *fe = frame.peek(-1);
|
||||
RegisterID traversalReg = frame.allocReg();
|
||||
JS_ASSERT(!fe->isConstant());
|
||||
RegisterID objReg = frame.tempRegForData(fe);
|
||||
masm.loadPtr(FrameAddress(offsetof(VMFrame, cx)), traversalReg);
|
||||
masm.storePtr(objReg,
|
||||
Address(traversalReg,
|
||||
offsetof(JSContext,
|
||||
weakRoots.finalizableNewborns[FINALIZE_OBJECT])));
|
||||
frame.freeReg(traversalReg);
|
||||
}
|
||||
END_CASE(JSOP_ENDINIT)
|
||||
|
||||
BEGIN_CASE(JSOP_INITPROP)
|
||||
|
@ -228,8 +228,8 @@ class FrameState
|
||||
|
||||
/*
|
||||
* Returns a register that is guaranteed to contain the frame entry's
|
||||
* data payload. The compiler may not modify the contents of the register,
|
||||
* though it may explicitly free it.
|
||||
* data payload. The compiler may not modify the contents of the register.
|
||||
* The compiler should NOT explicitly free it.
|
||||
*/
|
||||
inline RegisterID tempRegForData(FrameEntry *fe);
|
||||
|
||||
|
@ -1382,15 +1382,6 @@ stubs::NewInitObject(VMFrame &f, uint32 empty)
|
||||
return obj;
|
||||
}
|
||||
|
||||
void JS_FASTCALL
|
||||
stubs::EndInit(VMFrame &f)
|
||||
{
|
||||
JS_ASSERT(f.regs.sp - f.fp->base() >= 1);
|
||||
const Value &lref = f.regs.sp[-1];
|
||||
JS_ASSERT(lref.isObject());
|
||||
f.cx->weakRoots.finalizableNewborns[FINALIZE_OBJECT] = &lref.asObject();
|
||||
}
|
||||
|
||||
void JS_FASTCALL
|
||||
stubs::InitElem(VMFrame &f, uint32 last)
|
||||
{
|
||||
|
@ -55,7 +55,6 @@ void JS_FASTCALL Interrupt(VMFrame &f);
|
||||
void JS_FASTCALL InitElem(VMFrame &f, uint32 last);
|
||||
void JS_FASTCALL InitProp(VMFrame &f, JSAtom *atom);
|
||||
void JS_FASTCALL InitMethod(VMFrame &f, JSAtom *atom);
|
||||
void JS_FASTCALL EndInit(VMFrame &f);
|
||||
JSString * JS_FASTCALL ConcatN(VMFrame &f, uint32 argc);
|
||||
|
||||
void * JS_FASTCALL Call(VMFrame &f, uint32 argc);
|
||||
|
Loading…
Reference in New Issue
Block a user