Bug 1147581 - Remove the now defunct TMPSLOT mechanism. (r=jorendorff)

This commit is contained in:
Eric Faust 2015-03-30 15:29:16 -07:00
parent 4f1d17f0fe
commit 3d289f5ee0
3 changed files with 7 additions and 28 deletions

View File

@ -209,19 +209,6 @@ void
BytecodeEmitter::updateDepth(ptrdiff_t target)
{
jsbytecode* pc = code(target);
JSOp op = (JSOp) *pc;
const JSCodeSpec* cs = &js_CodeSpec[op];
if (cs->format & JOF_TMPSLOT_MASK) {
/*
* An opcode may temporarily consume stack space during execution.
* Account for this in maxStackDepth separately from uses/defs here.
*/
uint32_t depth = (uint32_t) stackDepth +
((cs->format & JOF_TMPSLOT_MASK) >> JOF_TMPSLOT_SHIFT);
if (depth > maxStackDepth)
maxStackDepth = depth;
}
int nuses = StackUses(nullptr, pc);
int ndefs = StackDefs(nullptr, pc);

View File

@ -76,16 +76,8 @@ enum {
JOF_CHECKSTRICT = 1 << 20, /* Op can only be generated in strict mode */
JOF_INVOKE = 1 << 21, /* JSOP_CALL, JSOP_FUNCALL, JSOP_FUNAPPLY,
JSOP_NEW, JSOP_EVAL */
JOF_TMPSLOT = 1 << 22, /* interpreter uses extra temporary slot
to root intermediate objects besides
the slots opcode uses */
JOF_TMPSLOT2 = 2 << 22, /* interpreter uses extra 2 temporary slot
besides the slots opcode uses */
JOF_TMPSLOT3 = 3 << 22, /* interpreter uses extra 3 temporary slot
besides the slots opcode uses */
JOF_TMPSLOT_SHIFT = 22,
JOF_TMPSLOT_MASK = JS_BITMASK(2) << JOF_TMPSLOT_SHIFT,
/* 1 << 22 is unused */
/* 1 << 23 is unused */
/* 1 << 24 is unused */
JOF_GNAME = 1 << 25, /* predicted global name */
JOF_TYPESET = 1 << 26, /* has an entry in a script's type sets */

View File

@ -505,7 +505,7 @@
* Operands: uint32_t nameIndex
* Stack: obj => obj[name]
*/ \
macro(JSOP_GETPROP, 53, "getprop", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET|JOF_TMPSLOT3) \
macro(JSOP_GETPROP, 53, "getprop", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET) \
/*
* Pops the top two values on the stack as 'val' and 'obj' and performs
* 'obj.prop = val', pushing 'val' back onto the stack.
@ -1080,7 +1080,7 @@
* Operands:
* Stack: obj, ctor => (obj instanceof ctor)
*/ \
macro(JSOP_INSTANCEOF,114,js_instanceof_str,js_instanceof_str,1,2,1,JOF_BYTE|JOF_LEFTASSOC|JOF_TMPSLOT) \
macro(JSOP_INSTANCEOF,114,js_instanceof_str,js_instanceof_str,1,2,1,JOF_BYTE|JOF_LEFTASSOC) \
\
/*
* Invokes debugger.
@ -1297,7 +1297,7 @@
* Operands: uint8_t n
* Stack: v[n], v[n-1], ..., v[1], v[0] => v[n-1], ..., v[1], v[0], v[n]
*/ \
macro(JSOP_PICK, 133, "pick", NULL, 2, 0, 0, JOF_UINT8|JOF_TMPSLOT2) \
macro(JSOP_PICK, 133, "pick", NULL, 2, 0, 0, JOF_UINT8) \
\
/*
* This no-op appears at the top of the bytecode for a 'TryStatement'.
@ -1594,7 +1594,7 @@
* Operands: uint32_t nameIndex
* Stack: obj => obj[name]
*/ \
macro(JSOP_CALLPROP, 184,"callprop", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET|JOF_TMPSLOT3) \
macro(JSOP_CALLPROP, 184,"callprop", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET) \
\
macro(JSOP_UNUSED185, 185,"unused185", NULL, 1, 0, 0, JOF_BYTE) \
macro(JSOP_UNUSED186, 186,"unused186", NULL, 1, 0, 0, JOF_BYTE) \
@ -1819,7 +1819,7 @@
* Operands: uint32_t nameIndex
* Stack: obj => obj['length']
*/ \
macro(JSOP_LENGTH, 217, "length", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET|JOF_TMPSLOT3) \
macro(JSOP_LENGTH, 217, "length", NULL, 5, 1, 1, JOF_ATOM|JOF_PROP|JOF_TYPESET) \
\
/*
* Pushes a JS_ELEMENTS_HOLE value onto the stack, representing an omitted