mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 621716 - Abort profiling when tracejit flushes (r=dmandelin, a=blocker)
This commit is contained in:
parent
083298623b
commit
70705625da
@ -749,6 +749,10 @@ InvokeSessionGuard::start(JSContext *cx, const Value &calleev, const Value &this
|
||||
#ifdef JS_TRACER
|
||||
if (TRACE_RECORDER(cx))
|
||||
AbortRecording(cx, "attempt to reenter VM while recording");
|
||||
#ifdef JS_METHODJIT
|
||||
if (TRACE_PROFILER(cx))
|
||||
AbortProfiling(cx);
|
||||
#endif
|
||||
LeaveTrace(cx);
|
||||
#endif
|
||||
|
||||
@ -2340,11 +2344,21 @@ Interpret(JSContext *cx, JSStackFrame *entryFrame, uintN inlineCallCount, JSInte
|
||||
|
||||
/* Check for too deep of a native thread stack. */
|
||||
#ifdef JS_TRACER
|
||||
#ifdef JS_METHODJIT
|
||||
JS_CHECK_RECURSION(cx, do {
|
||||
if (TRACE_RECORDER(cx))
|
||||
AbortRecording(cx, "too much recursion");
|
||||
if (TRACE_PROFILER(cx))
|
||||
AbortProfiling(cx);
|
||||
return JS_FALSE;
|
||||
} while (0););
|
||||
#else
|
||||
JS_CHECK_RECURSION(cx, do {
|
||||
if (TRACE_RECORDER(cx))
|
||||
AbortRecording(cx, "too much recursion");
|
||||
return JS_FALSE;
|
||||
} while (0););
|
||||
#endif
|
||||
#else
|
||||
JS_CHECK_RECURSION(cx, return JS_FALSE);
|
||||
#endif
|
||||
@ -2407,6 +2421,7 @@ Interpret(JSContext *cx, JSStackFrame *entryFrame, uintN inlineCallCount, JSInte
|
||||
MonitorResult r = MonitorLoopEdge(cx, inlineCallCount); \
|
||||
if (r == MONITOR_RECORDING) { \
|
||||
JS_ASSERT(TRACE_RECORDER(cx)); \
|
||||
JS_ASSERT(!TRACE_PROFILER(cx)); \
|
||||
MONITOR_BRANCH_TRACEVIS; \
|
||||
ENABLE_INTERRUPTS(); \
|
||||
CLEAR_LEAVE_ON_TRACE_POINT(); \
|
||||
@ -2556,6 +2571,10 @@ Interpret(JSContext *cx, JSStackFrame *entryFrame, uintN inlineCallCount, JSInte
|
||||
ENABLE_INTERRUPTS();
|
||||
} else if (TRACE_RECORDER(cx)) {
|
||||
AbortRecording(cx, "attempt to reenter interpreter while recording");
|
||||
#ifdef JS_METHODJIT
|
||||
} else if (TRACE_PROFILER(cx)) {
|
||||
AbortProfiling(cx);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (regs.fp->hasImacropc())
|
||||
@ -2630,6 +2649,10 @@ Interpret(JSContext *cx, JSStackFrame *entryFrame, uintN inlineCallCount, JSInte
|
||||
#ifdef JS_TRACER
|
||||
if (TRACE_RECORDER(cx))
|
||||
AbortRecording(cx, "interrupt hook");
|
||||
#ifdef JS_METHODJIT
|
||||
if (TRACE_PROFILER(cx))
|
||||
AbortProfiling(cx);
|
||||
#endif
|
||||
#endif
|
||||
Value rval;
|
||||
switch (hook(cx, script, regs.pc, Jsvalify(&rval),
|
||||
|
@ -4431,6 +4431,10 @@ ResetJITImpl(JSContext* cx)
|
||||
JS_ASSERT_NOT_ON_TRACE(cx);
|
||||
AbortRecording(cx, "flush cache");
|
||||
}
|
||||
#if JS_METHODJIT
|
||||
if (tm->profile)
|
||||
AbortProfiling(cx);
|
||||
#endif
|
||||
if (ProhibitFlush(cx)) {
|
||||
debug_only_print0(LC_TMTracer, "Deferring JIT flush due to deep bail.\n");
|
||||
tm->needFlush = JS_TRUE;
|
||||
|
Loading…
Reference in New Issue
Block a user