[JAEGER] Added JSOP_LAMBDA_FC.

This commit is contained in:
David Anderson 2010-06-08 21:24:19 -07:00
parent 87ecc149b0
commit b27a0b5634
3 changed files with 21 additions and 0 deletions

View File

@ -1016,6 +1016,17 @@ mjit::Compiler::generateMethod()
}
END_CASE(JSOP_NEWARRAY)
BEGIN_CASE(JSOP_LAMBDA_FC)
{
JSFunction *fun = script->getFunction(fullAtomIndex(PC));
prepareStubCall();
masm.move(ImmPtr(fun), Registers::ArgReg1);
stubCall(stubs::FlatLambda, Uses(0), Defs(1));
frame.takeReg(Registers::ReturnReg);
frame.pushTypedPayload(JSVAL_MASK32_FUNOBJ, Registers::ReturnReg);
}
END_CASE(JSOP_LAMBDA_FC)
BEGIN_CASE(JSOP_TRACE)
{
if (analysis[PC].nincoming > 0) {

View File

@ -2456,3 +2456,12 @@ stubs::Throw(VMFrame &f)
THROW();
}
JSObject * JS_FASTCALL
stubs::FlatLambda(VMFrame &f, JSFunction *fun)
{
JSObject *obj = js_NewFlatClosure(f.cx, fun);
if (!obj)
THROWV(NULL);
return obj;
}

View File

@ -87,6 +87,7 @@ void JS_FASTCALL DefFun(VMFrame &f, uint32 index);
JSObject * JS_FASTCALL DefLocalFun(VMFrame &f, JSFunction *fun);
JSObject * JS_FASTCALL RegExp(VMFrame &f, JSObject *regex);
JSObject * JS_FASTCALL Lambda(VMFrame &f, JSFunction *fun);
JSObject * JS_FASTCALL FlatLambda(VMFrame &f, JSFunction *fun);
void JS_FASTCALL VpInc(VMFrame &f, Value *vp);
void JS_FASTCALL VpDec(VMFrame &f, Value *vp);