Don't call inner trees if they use global slots since we don't support those in inner trees yet.
authorAndreas Gal <gal@mozilla.com>
Wed, 13 Aug 2008 14:00:37 -0700
changeset 18135 7dd001982f576277d739c45206b3f84b9232c074
parent 18134 a60b9a521289bcc62389ac5d4adf5ee1761b38a6
child 18136 b7199324e019798953cd243e7c5c73677eddcf1d
child 18138 1f1b2ed3a1692925802d1c958d1b6e246c69084b
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
Don't call inner trees if they use global slots since we don't support those in inner trees yet.
js/src/jstracer.cpp
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -1653,17 +1653,17 @@ js_ContinueRecording(JSContext* cx, Trac
         }
         AUDIT(traceCompleted);
         r->closeLoop(fragmento);
         js_DeleteRecorder(cx);
         return false; /* done recording */
     }
     /* does this branch go to an inner loop? */
     Fragment* f = fragmento->getLoop(cx->fp->regs->pc);
-    if (nesting_enabled && f->code()) {
+    if (nesting_enabled && f->code() && !((TreeInfo*)f->vmprivate)->globalSlots.length()) {
         JS_ASSERT(f->vmprivate);
         /* call the inner tree */
         GuardRecord* lr = js_ExecuteTree(cx, f, inlineCallCount);
         if (!lr) {
             js_AbortRecording(cx, oldpc, "Couldn't call inner tree");
             return false;
         }
         switch (lr->exit->exitType) {