Merge. I miss CVS.
authorAndreas Gal <gal@mozilla.com>
Wed, 13 Aug 2008 21:37:33 -0700
changeset 18165 7202e02d323feb72c0d652ca6da98f8bcb0aaa19
parent 18164 30d0d047be510f300469a8862de3dcf3edca6796 (current diff)
parent 18163 4872699c503400d6c722589453e76d31a407d6c9 (diff)
child 18166 13dd79c7d3a8be255d81a24153e982bb2ba68edd
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.1a2pre
Merge. I miss CVS.
--- a/js/src/jsinterp.cpp
+++ b/js/src/jsinterp.cpp
@@ -1316,16 +1316,22 @@ have_fun:
             /* Scope with a call object parented by the callee's parent. */
             if (!js_GetCallObject(cx, &frame, parent)) {
                 ok = JS_FALSE;
                 goto out;
             }
         }
         frame.slots = sp - fun->u.i.nvars;
         ok = js_Interpret(cx);
+#ifdef JS_TRACER
+        if (JS_TRACE_MONITOR(cx).recorder) {
+            js_AbortRecording(cx, frame.down->regs->pc,
+                              "recording out of js_Invoke interpreter activation");
+        }
+#endif
     } else {
         /* fun might be onerror trying to report a syntax error in itself. */
         frame.scopeChain = NULL;
         ok = JS_TRUE;
     }
 
 out:
     if (hookData) {
@@ -2500,24 +2506,30 @@ js_Interpret(JSContext *cx)
 # define OPDEF(op,val,name,token,length,nuses,ndefs,prec,format)              \
         JS_EXTENSION &&L_JSOP_INTERRUPT,
 # include "jsopcode.tbl"
 # undef OPDEF
     };
 
     METER_OP_INIT(op);      /* to nullify first METER_OP_PAIR */
 
-# define DO_OP()            JS_EXTENSION_(goto *jumpTable[op])
+# define DO_OP()            JS_BEGIN_MACRO                                    \
+                                JS_ASSERT(!JS_TRACE_MONITOR(cx).recorder ||   \
+                                          jumpTable == recordingJumpTable);   \
+                                JS_EXTENSION_(goto *jumpTable[op]);           \
+                            JS_END_MACRO
 # define DO_NEXT_OP(n)      JS_BEGIN_MACRO                                    \
                                 METER_OP_PAIR(op, regs.pc[n]);                \
                                 op = (JSOp) *(regs.pc += (n));                \
                                 DO_OP();                                      \
                             JS_END_MACRO
 
-# define BEGIN_CASE(OP)     L_##OP:
+# define BEGIN_CASE(OP)     L_##OP:                                           \
+                                JS_ASSERT(!JS_TRACE_MONITOR(cx).recorder ||   \
+                                          jumpTable == recordingJumpTable);
 # define END_CASE(OP)       DO_NEXT_OP(OP##_LENGTH);
 # define END_VARLEN_CASE    DO_NEXT_OP(len);
 # define ADD_EMPTY_CASE(OP) BEGIN_CASE(OP)                                    \
                                 JS_ASSERT(js_CodeSpec[OP].length == 1);       \
                                 op = (JSOp) *++regs.pc;                       \
                                 DO_OP();
 
 # define END_EMPTY_CASES