Bug 639910 - JS_CHECK_RECURSION on !JS_TRACER path skipped |goto error|. (r=dvander)
--- a/js/src/jsinterp.cpp
+++ b/js/src/jsinterp.cpp
@@ -791,17 +791,17 @@ InvokeSessionGuard::start(JSContext *cx,
mjit::CompileStatus status = mjit::CanMethodJIT(cx, script_, fp, mjit::CompileRequest_JIT);
if (status == mjit::Compile_Error)
return false;
if (status != mjit::Compile_Okay)
break;
/* Cannot also cache the raw code pointer; it can change. */
/* Hoist dynamic checks from CheckStackAndEnterMethodJIT. */
- JS_CHECK_RECURSION(cx, return JS_FALSE);
+ JS_CHECK_RECURSION(cx, return false);
stackLimit_ = stack.getStackLimit(cx);
if (!stackLimit_)
return false;
stop_ = script_->code + script_->length - 1;
JS_ASSERT(*stop_ == JSOP_STOP);
#endif
@@ -886,17 +886,17 @@ ExternalGetOrSet(JSContext *cx, JSObject
JSAccessMode mode, uintN argc, Value *argv, Value *rval)
{
LeaveTrace(cx);
/*
* ExternalInvoke could result in another try to get or set the same id
* again, see bug 355497.
*/
- JS_CHECK_RECURSION(cx, return JS_FALSE);
+ JS_CHECK_RECURSION(cx, return false);
return ExternalInvoke(cx, ObjectValue(*obj), fval, argc, argv, rval);
}
bool
Execute(JSContext *cx, JSObject *chain, JSScript *script,
JSStackFrame *prev, uintN flags, Value *result)
{
@@ -2617,17 +2617,17 @@ Interpret(JSContext *cx, JSStackFrame *e
#else
JS_CHECK_RECURSION(cx, do {
if (TRACE_RECORDER(cx))
AbortRecording(cx, "too much recursion");
goto error;
} while (0););
#endif
#else
- JS_CHECK_RECURSION(cx, return JS_FALSE);
+ JS_CHECK_RECURSION(cx, goto error);
#endif
#if JS_THREADED_INTERP
DO_NEXT_OP(len);
#else
DO_NEXT_OP(len);
#endif