[JAEGER] Added JSOP_PROPINC,PROPDEC,INCPROP,DECPROP.

This commit is contained in:
David Anderson
2010-06-07 19:23:25 -07:00
parent 7293eb0ed9
commit 037282df76
4 changed files with 77 additions and 0 deletions

View File

@@ -547,18 +547,34 @@ mjit::Compiler::generateMethod()
jsop_nameinc(op, stubs::IncName, fullAtomIndex(PC));
END_CASE(JSOP_INCNAME)
BEGIN_CASE(JSOP_INCPROP)
jsop_propinc(op, stubs::IncProp, fullAtomIndex(PC));
END_CASE(JSOP_INCPROP)
BEGIN_CASE(JSOP_DECNAME)
jsop_nameinc(op, stubs::DecName, fullAtomIndex(PC));
END_CASE(JSOP_DECNAME)
BEGIN_CASE(JSOP_DECPROP)
jsop_propinc(op, stubs::DecProp, fullAtomIndex(PC));
END_CASE(JSOP_DECPROP)
BEGIN_CASE(JSOP_NAMEINC)
jsop_nameinc(op, stubs::NameInc, fullAtomIndex(PC));
END_CASE(JSOP_NAMEINC)
BEGIN_CASE(JSOP_PROPINC)
jsop_propinc(op, stubs::PropInc, fullAtomIndex(PC));
END_CASE(JSOP_PROPINC)
BEGIN_CASE(JSOP_NAMEDEC)
jsop_nameinc(op, stubs::NameDec, fullAtomIndex(PC));
END_CASE(JSOP_NAMEDEC)
BEGIN_CASE(JSOP_PROPDEC)
jsop_propinc(op, stubs::PropDec, fullAtomIndex(PC));
END_CASE(JSOP_PROPDEC)
BEGIN_CASE(JSOP_GETTHISPROP)
/* Push thisv onto stack. */
jsop_this();
@@ -1344,6 +1360,17 @@ mjit::Compiler::jsop_nameinc(JSOp op, VoidStubAtom stub, uint32 index)
frame.pushSynced();
}
void
mjit::Compiler::jsop_propinc(JSOp op, VoidStubAtom stub, uint32 index)
{
JSAtom *atom = script->getAtom(index);
prepareStubCall();
masm.move(ImmPtr(atom), Registers::ArgReg1);
stubCall(stub, Uses(1), Defs(1));
frame.pop();
frame.pushSynced();
}
/*
* This big nasty function emits a fast-path for native iterators, producing
* a temporary value on the stack for FORLOCAL,ARG,GLOBAL,etc ops to use.