Don't call inner trees if they use global slots since we don't support those in inner trees yet.
Don't call inner trees if they use global slots since we don't support those in inner trees yet.
--- 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) {