[INFER] Remove on stack recompilation, allow removed on stack JIT frames to rejoin into the interpreter, bug 650163.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user