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)
|
||||
|
||||
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)
|
||||
frame.push(Value(Int32Tag((int32_t) GET_UINT24(PC))));
|
||||
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 SetElem(VMFrame &f);
|
||||
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 VpInc(VMFrame &f, Value *vp);
|
||||
|
Loading…
Reference in New Issue
Block a user