[INFER] Watch for bytecodes with no fallthrough when rejoining the interpreter, bug 675921.
authorBrian Hackett <bhackett1024@gmail.com>
Tue, 02 Aug 2011 08:39:33 -0700
changeset 76090 a82d5a5e070e069a9ffc53cd8868cb0ed38974c5
parent 76089 91281c11a122752991030da2bd8ec7583628013f
child 76091 8367a678afb6f638915d8e99070cc00ac37a941d
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
bugs675921
milestone8.0a1
[INFER] Watch for bytecodes with no fallthrough when rejoining the interpreter, bug 675921.
js/src/methodjit/InvokeHelpers.cpp
--- a/js/src/methodjit/InvokeHelpers.cpp
+++ b/js/src/methodjit/InvokeHelpers.cpp
@@ -1258,17 +1258,17 @@ js_InternalInterpret(void *returnData, v
      * where it indicates the new frame), so is not expected to be coherent
      * here. Update it to its value at the start of the opcode.
      */
     Value *oldsp = f.regs.sp;
     f.regs.sp = fp->base() + analysis->getCode(pc).stackDepth;
 
     jsbytecode *nextpc = pc + analyze::GetBytecodeLength(pc);
     Value *nextsp = NULL;
-    if (nextpc != script->code + script->length)
+    if (nextpc != script->code + script->length && analysis->maybeCode(nextpc))
         nextsp = fp->base() + analysis->getCode(nextpc).stackDepth;
 
     JS_ASSERT(&cx->regs() == &f.regs);
 
 #ifdef JS_METHODJIT_SPEW
     JaegerSpew(JSpew_Recompile, "interpreter rejoin (file \"%s\") (line \"%d\") (op %s) (opline \"%d\")\n",
                script->filename, script->lineno, OpcodeNames[op], js_PCToLineNumber(cx, script, pc));
 #endif