Add extra stack space needed for callprop in methodjit

This commit is contained in:
David Mandelin 2010-06-23 18:58:17 -07:00
parent 33c408ba97
commit 882030f513
4 changed files with 6 additions and 1 deletions

View File

@ -118,6 +118,8 @@ typedef enum JSOp {
the slots opcode uses */
#define JOF_TMPSLOT2 (2U<<22) /* interpreter uses extra 2 temporary slot
besides the slots opcode uses */
#define JOF_TMPSLOT3 (3U<<22) /* interpreter uses extra 3 temporary slot
besides the slots opcode uses */
#define JOF_TMPSLOT_SHIFT 22
#define JOF_TMPSLOT_MASK (JS_BITMASK(2) << JOF_TMPSLOT_SHIFT)

View File

@ -431,7 +431,7 @@ OPDEF(JSOP_XMLOBJECT, 180,"xmlobject", NULL, 3, 0, 1, 19, JOF_OBJECT
OPDEF(JSOP_XMLCDATA, 181,"xmlcdata", NULL, 3, 0, 1, 19, JOF_ATOM)
OPDEF(JSOP_XMLCOMMENT, 182,"xmlcomment", NULL, 3, 0, 1, 19, JOF_ATOM)
OPDEF(JSOP_XMLPI, 183,"xmlpi", NULL, 3, 1, 1, 19, JOF_ATOM)
OPDEF(JSOP_CALLPROP, 184,"callprop", NULL, 3, 1, 2, 18, JOF_ATOM|JOF_PROP|JOF_CALLOP|JOF_TMPSLOT2)
OPDEF(JSOP_CALLPROP, 184,"callprop", NULL, 3, 1, 2, 18, JOF_ATOM|JOF_PROP|JOF_CALLOP|JOF_TMPSLOT3)
/*
* Get a display (free) variable from the closure's reserved slots.

View File

@ -161,6 +161,7 @@ class FrameEntry
* Set copy index.
*/
void setCopyOf(FrameEntry *fe) {
JS_ASSERT_IF(fe, !fe->isConstant());
JS_ASSERT(!isCopied());
copy = fe;
}

View File

@ -153,6 +153,8 @@ FrameState::forgetEverything(uint32 newStackDepth)
inline FrameEntry *
FrameState::rawPush()
{
JS_ASSERT(unsigned(sp - base) < nargs + script->nslots);
sp++;
if (FrameEntry *fe = sp[-1])