Bug 711158 - Avoid triggering write barrier during verifier (r=luke)
authorBill McCloskey <wmccloskey@mozilla.com>
Fri, 16 Dec 2011 10:31:56 -0800
changeset 84433 2829d8482c67c9eff59cb4b738f00d5b7bdc8b51
parent 84432 9687a03b4a78db5ffb8905e9cde358e7b412d8b6
child 84434 6c49a8d46f7d737e6fd404e5ecda08d20a1046b2
push id519
push userakeybl@mozilla.com
push dateWed, 01 Feb 2012 00:38:35 +0000
treeherdermozilla-beta@788ea1ef610b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersluke
bugs711158
milestone11.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 711158 - Avoid triggering write barrier during verifier (r=luke)
js/src/jsgc.cpp
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -3489,25 +3489,26 @@ EndVerifyBarriers(JSContext *cx)
 
     VerifyTracer *trc = (VerifyTracer *)rt->gcVerifyData;
 
     if (!trc)
         return;
 
     JS_ASSERT(trc->number == rt->gcNumber);
 
+    for (CompartmentsIter c(rt); !c.done(); c.next()) {
+        c->gcIncrementalTracer = NULL;
+        c->needsBarrier_ = false;
+    }
+
     if (rt->gcIncrementalTracer->hasDelayedChildren())
         rt->gcIncrementalTracer->markDelayedChildren();
 
     rt->gcVerifyData = NULL;
     rt->gcIncrementalTracer = NULL;
-    for (CompartmentsIter c(rt); !c.done(); c.next()) {
-        c->gcIncrementalTracer = NULL;
-        c->needsBarrier_ = false;
-    }
 
     JS_TRACER_INIT(trc, cx, CheckAutorooter);
 
     JSContext *iter = NULL;
     while (JSContext *acx = js_ContextIterator(rt, JS_TRUE, &iter)) {
         if (acx->autoGCRooters)
             acx->autoGCRooters->traceAll(trc);
     }