[INFER] Remove on stack recompilation, allow removed on stack JIT frames to rejoin into the interpreter, bug 650163.

This commit is contained in:
Brian Hackett
2011-05-09 07:12:47 -07:00
parent 55db06e5b6
commit 5e9a3d2d57
62 changed files with 2213 additions and 2516 deletions

View File

@@ -424,7 +424,8 @@ num_parseInt(JSContext *cx, uintN argc, Value *vp)
/* Fast paths and exceptional cases. */
if (argc == 0) {
vp->setDouble(js_NaN);
return cx->markTypeCallerOverflow();
cx->markTypeCallerOverflow();
return true;
}
if (argc == 1 || (vp[3].isInt32() && (vp[3].toInt32() == 0 || vp[3].toInt32() == 10))) {
@@ -434,8 +435,8 @@ num_parseInt(JSContext *cx, uintN argc, Value *vp)
}
if (vp[2].isDouble()) {
vp->setNumber(ParseIntDoubleHelper(vp[2].toDouble()));
if (!vp->isInt32() && !cx->markTypeCallerOverflow())
return false;
if (!vp->isInt32())
cx->markTypeCallerOverflow();
return true;
}
}
@@ -455,7 +456,8 @@ num_parseInt(JSContext *cx, uintN argc, Value *vp)
if (radix != 0) {
if (radix < 2 || radix > 36) {
vp->setDouble(js_NaN);
return cx->markTypeCallerOverflow();
cx->markTypeCallerOverflow();
return true;
}
if (radix != 16)
stripPrefix = false;
@@ -474,8 +476,8 @@ num_parseInt(JSContext *cx, uintN argc, Value *vp)
/* Step 15. */
vp->setNumber(number);
if (!vp->isInt32() && !cx->markTypeCallerOverflow())
return false;
if (!vp->isInt32())
cx->markTypeCallerOverflow();
return true;
}