mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[JAEGER] Added JSOP_LAMBDA.
This commit is contained in:
parent
5eddc9e757
commit
ebc66018d0
@ -732,6 +732,17 @@ mjit::Compiler::generateMethod()
|
|||||||
stubCall(stubs::DefFun, Uses(0), Defs(0));
|
stubCall(stubs::DefFun, Uses(0), Defs(0));
|
||||||
END_CASE(JSOP_DEFFUN)
|
END_CASE(JSOP_DEFFUN)
|
||||||
|
|
||||||
|
BEGIN_CASE(JSOP_LAMBDA)
|
||||||
|
{
|
||||||
|
JSFunction *fun = script->getFunction(fullAtomIndex(PC));
|
||||||
|
prepareStubCall();
|
||||||
|
masm.move(ImmPtr(fun), Registers::ArgReg1);
|
||||||
|
stubCall(stubs::Lambda, Uses(0), Defs(1));
|
||||||
|
frame.takeReg(Registers::ReturnReg);
|
||||||
|
frame.pushTypedPayload(JSVAL_MASK32_FUNOBJ, Registers::ReturnReg);
|
||||||
|
}
|
||||||
|
END_CASE(JSOP_LAMBDA)
|
||||||
|
|
||||||
BEGIN_CASE(JSOP_GETDSLOT)
|
BEGIN_CASE(JSOP_GETDSLOT)
|
||||||
BEGIN_CASE(JSOP_CALLDSLOT)
|
BEGIN_CASE(JSOP_CALLDSLOT)
|
||||||
{
|
{
|
||||||
|
@ -1855,3 +1855,25 @@ stubs::RegExp(VMFrame &f, JSObject *regex)
|
|||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSObject * JS_FASTCALL
|
||||||
|
stubs::Lambda(VMFrame &f, JSFunction *fun)
|
||||||
|
{
|
||||||
|
JSObject *obj = FUN_OBJECT(fun);
|
||||||
|
|
||||||
|
JSObject *parent;
|
||||||
|
if (FUN_NULL_CLOSURE(fun)) {
|
||||||
|
parent = f.fp->scopeChain;
|
||||||
|
} else {
|
||||||
|
parent = js_GetScopeChain(f.cx, f.fp);
|
||||||
|
if (!parent)
|
||||||
|
THROWV(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
obj = CloneFunctionObject(f.cx, fun, parent);
|
||||||
|
if (!obj)
|
||||||
|
THROWV(NULL);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,9 +65,11 @@ 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 GetUpvar(VMFrame &f, uint32 index);
|
||||||
|
|
||||||
void JS_FASTCALL DefFun(VMFrame &f, uint32 index);
|
void JS_FASTCALL DefFun(VMFrame &f, uint32 index);
|
||||||
JSObject * JS_FASTCALL DefLocalFun(VMFrame &f, JSFunction *fun);
|
JSObject * JS_FASTCALL DefLocalFun(VMFrame &f, JSFunction *fun);
|
||||||
JSObject * JS_FASTCALL RegExp(VMFrame &f, JSObject *regex);
|
JSObject * JS_FASTCALL RegExp(VMFrame &f, JSObject *regex);
|
||||||
|
JSObject * JS_FASTCALL Lambda(VMFrame &f, JSFunction *fun);
|
||||||
|
|
||||||
void JS_FASTCALL VpInc(VMFrame &f, Value *vp);
|
void JS_FASTCALL VpInc(VMFrame &f, Value *vp);
|
||||||
void JS_FASTCALL VpDec(VMFrame &f, Value *vp);
|
void JS_FASTCALL VpDec(VMFrame &f, Value *vp);
|
||||||
|
Loading…
Reference in New Issue
Block a user