[JAEGER] Implement JSOP_ARGSUB.

This commit is contained in:
David Anderson 2010-07-02 17:11:30 -07:00
parent a08f6aa8cd
commit b1196df5af
3 changed files with 18 additions and 0 deletions

View File

@ -1127,6 +1127,13 @@ mjit::Compiler::generateMethod()
}
END_CASE(JSOP_CALLDSLOT)
BEGIN_CASE(JSOP_ARGSUB)
prepareStubCall();
masm.move(Imm32(GET_ARGNO(PC)), Registers::ArgReg1);
stubCall(stubs::ArgSub, Uses(0), Defs(1));
frame.pushSynced();
END_CASE(JSOP_ARGSUB)
BEGIN_CASE(JSOP_ARGCNT)
prepareStubCall();
stubCall(stubs::ArgCnt, Uses(0), Defs(1));

View File

@ -2482,3 +2482,13 @@ stubs::Pos(VMFrame &f)
THROW();
}
void JS_FASTCALL
stubs::ArgSub(VMFrame &f, uint32 n)
{
jsid id = INT_TO_JSID(n);
Value rval;
if (!js_GetArgsProperty(f.cx, f.fp, id, &rval))
THROW();
f.regs.sp[0] = rval;
}

View File

@ -110,6 +110,7 @@ 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 Arguments(VMFrame &f);
void JS_FASTCALL ArgSub(VMFrame &f, uint32 n);
void JS_FASTCALL EnterBlock(VMFrame &f, JSObject *obj);
void JS_FASTCALL LeaveBlock(VMFrame &f);