mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[JAEGER] Added JSOP_GETUPVAR, JSOP_CALLUPVAR.
This commit is contained in:
parent
646a599539
commit
6caf036c24
@ -730,6 +730,22 @@ mjit::Compiler::generateMethod()
|
|||||||
}
|
}
|
||||||
END_CASE(JSOP_CALLDSLOT)
|
END_CASE(JSOP_CALLDSLOT)
|
||||||
|
|
||||||
|
BEGIN_CASE(JSOP_GETUPVAR)
|
||||||
|
BEGIN_CASE(JSOP_CALLUPVAR)
|
||||||
|
{
|
||||||
|
uint32 index = GET_UINT16(PC);
|
||||||
|
JSUpvarArray *uva = script->upvars();
|
||||||
|
JS_ASSERT(index < uva->length);
|
||||||
|
|
||||||
|
prepareStubCall();
|
||||||
|
masm.move(Imm32(uva->vector[index]), Registers::ArgReg1);
|
||||||
|
stubCall(stubs::GetUpvar, Uses(0), Defs(1));
|
||||||
|
frame.pushSynced();
|
||||||
|
if (op == JSOP_CALLUPVAR)
|
||||||
|
frame.push(NullTag());
|
||||||
|
}
|
||||||
|
END_CASE(JSOP_CALLUPVAR)
|
||||||
|
|
||||||
BEGIN_CASE(JSOP_UINT24)
|
BEGIN_CASE(JSOP_UINT24)
|
||||||
frame.push(Value(Int32Tag((int32_t) GET_UINT24(PC))));
|
frame.push(Value(Int32Tag((int32_t) GET_UINT24(PC))));
|
||||||
END_CASE(JSOP_UINT24)
|
END_CASE(JSOP_UINT24)
|
||||||
|
@ -1793,3 +1793,11 @@ stubs::InitElem(VMFrame &f, uint32 last)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JS_FASTCALL
|
||||||
|
stubs::GetUpvar(VMFrame &f, uint32 cookie)
|
||||||
|
{
|
||||||
|
/* :FIXME: We can do better, this stub isn't needed. */
|
||||||
|
uint32 staticLevel = f.fp->script->staticLevel;
|
||||||
|
f.regs.sp[0] = js_GetUpvar(f.cx, staticLevel, cookie);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ void JS_FASTCALL Name(VMFrame &f, uint32 index);
|
|||||||
void JS_FASTCALL GetElem(VMFrame &f);
|
void JS_FASTCALL GetElem(VMFrame &f);
|
||||||
void JS_FASTCALL SetElem(VMFrame &f);
|
void JS_FASTCALL SetElem(VMFrame &f);
|
||||||
void JS_FASTCALL CallName(VMFrame &f, uint32 index);
|
void JS_FASTCALL CallName(VMFrame &f, uint32 index);
|
||||||
|
void JS_FASTCALL GetUpvar(VMFrame &f, uint32 index);
|
||||||
void JS_FASTCALL DefFun(VMFrame &f, uint32 index);
|
void JS_FASTCALL DefFun(VMFrame &f, uint32 index);
|
||||||
|
|
||||||
void JS_FASTCALL VpInc(VMFrame &f, Value *vp);
|
void JS_FASTCALL VpInc(VMFrame &f, Value *vp);
|
||||||
|
Loading…
Reference in New Issue
Block a user