Bug 633929 - Fix --disable-methodjit (r=dvander)
--- a/js/src/jsinterp.cpp
+++ b/js/src/jsinterp.cpp
@@ -2322,18 +2322,22 @@ Interpret(JSContext *cx, JSStackFrame *e
(obj = script->getObject(GET_FULL_INDEX(PCOFF)))
#define LOAD_FUNCTION(PCOFF) \
(fun = script->getFunction(GET_FULL_INDEX(PCOFF)))
#define LOAD_DOUBLE(PCOFF, dbl) \
(dbl = script->getConst(GET_FULL_INDEX(PCOFF)).toDouble())
- bool methodJitFailed = false;
-
+#ifdef JS_METHODJIT
+ bool useMethodJIT = cx->methodJitEnabled && interpMode == JSINTERP_NORMAL;
+#else
+ bool useMethodJIT = false;
+#endif
+
#ifdef JS_METHODJIT
#define MONITOR_BRANCH_METHODJIT() \
JS_BEGIN_MACRO \
mjit::CompileStatus status = \
mjit::CanMethodJITAtBranch(cx, script, regs.fp, regs.pc); \
if (status == mjit::Compile_Error) \
goto error; \
@@ -2341,17 +2345,17 @@ Interpret(JSContext *cx, JSStackFrame *e
void *ncode = \
script->nativeCodeForPC(regs.fp->isConstructing(), regs.pc); \
interpReturnOK = mjit::JaegerShotAtSafePoint(cx, ncode); \
if (inlineCallCount) \
goto jit_return; \
goto leave_on_safe_point; \
} \
if (status == mjit::Compile_Abort) { \
- methodJitFailed = true; \
+ useMethodJIT = false; \
} \
JS_END_MACRO
#else
#define MONITOR_BRANCH_METHODJIT() ((void) 0)
#endif
@@ -2383,22 +2387,17 @@ Interpret(JSContext *cx, JSStackFrame *e
JS_ASSERT(cx->regs == ®s); \
if (cx->isExceptionPending()) \
goto error; \
JS_END_MACRO
#define MONITOR_BRANCH() \
JS_BEGIN_MACRO \
if (TRACING_ENABLED(cx)) { \
- if (!TRACE_RECORDER(cx) && \
- !TRACE_PROFILER(cx) && \
- interpMode == JSINTERP_NORMAL && \
- cx->methodJitEnabled && \
- !methodJitFailed) \
- { \
+ if (!TRACE_RECORDER(cx) && !TRACE_PROFILER(cx) && useMethodJIT) { \
MONITOR_BRANCH_METHODJIT(); \
} else { \
MonitorResult r = MonitorLoopEdge(cx, inlineCallCount, interpMode); \
if (r == MONITOR_RECORDING) { \
JS_ASSERT(TRACE_RECORDER(cx)); \
JS_ASSERT(!TRACE_PROFILER(cx)); \
MONITOR_BRANCH_TRACEVIS; \
ENABLE_INTERRUPTS(); \