Track timeout side exits separately in jitstats (472761, r=jwalden).
authorAndreas Gal <gal@mozilla.com>
Fri, 09 Jan 2009 16:38:57 -0800
changeset 23706 d3a4e58a54f5c856754791220737f9e209d60cb2
parent 23705 a9556623dcf4ff23319093478bda8fbf00b02909
child 23707 411b2f1e19de674725fe6e2d4f9b01882e1dcc98
push id4690
push userrsayre@mozilla.com
push dateThu, 15 Jan 2009 07:42:55 +0000
treeherdermozilla-central@ddfa483fea2a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjwalden
bugs472761
milestone1.9.2a1pre
Track timeout side exits separately in jitstats (472761, r=jwalden).
js/src/jitstats.tbl
js/src/jstracer.cpp
--- a/js/src/jitstats.tbl
+++ b/js/src/jitstats.tbl
@@ -34,16 +34,17 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 JITSTAT(recorderStarted)
 JITSTAT(recorderAborted)
 JITSTAT(traceCompleted)
 JITSTAT(sideExitIntoInterpreter)
+JITSTAT(timeoutIntoInterpreter)
 JITSTAT(typeMapMismatchAtEntry)
 JITSTAT(returnToDifferentLoopHeader)
 JITSTAT(traceTriggered)
 JITSTAT(globalShapeMismatchAtEntry)
 JITSTAT(treesTrashed)
 JITSTAT(slotPromoted)
 JITSTAT(unstableLoopVariable)
 JITSTAT(breakLoopExits)
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -3743,18 +3743,22 @@ js_ExecuteTree(JSContext* cx, Fragment* 
 
 #ifdef DEBUG
     // Verify that our state restoration worked
     for (JSStackFrame* fp = cx->fp; fp; fp = fp->down) {
         JS_ASSERT(!fp->callee || JSVAL_IS_OBJECT(fp->argv[-1]));
         JS_ASSERT(!fp->callee || fp->thisp == JSVAL_TO_OBJECT(fp->argv[-1]));
     }
 #endif
-
-    AUDIT(sideExitIntoInterpreter);
+#ifdef JS_JIT_SPEW
+    if (innermost->exitType != TIMEOUT_EXIT)
+        AUDIT(sideExitIntoInterpreter);
+    else
+        AUDIT(timeoutIntoInterpreter);
+#endif
 
     return innermost;
 }
 
 JS_REQUIRES_STACK bool
 js_MonitorLoopEdge(JSContext* cx, uintN& inlineCallCount)
 {
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);