Bug 808067 - Change the compartments we iterate over when ending GC (r=jonco)
☠☠ backed out by 6dcc0beba62c ☠ ☠
authorBill McCloskey <wmccloskey@mozilla.com>
Mon, 05 Nov 2012 13:17:06 -0800
changeset 112353 f458467cc2cf2eadd74f0ac2d2b6c61d9b4968f1
parent 112352 5c5e4097dd20b5fc8b8dbcd6a0bdae83ee9142cd
child 112354 6dcc0beba62ce3b7946be41d63e9a584163791a3
push id23812
push useremorley@mozilla.com
push dateTue, 06 Nov 2012 14:01:34 +0000
treeherdermozilla-central@f4aeed115e54 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjonco
bugs808067
milestone19.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 808067 - Change the compartments we iterate over when ending GC (r=jonco)
js/src/jsgc.cpp
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -4149,22 +4149,22 @@ AutoGCSlice::AutoGCSlice(JSRuntime *rt)
         } else {
             JS_ASSERT(!c->needsBarrier());
         }
     }
 }
 
 AutoGCSlice::~AutoGCSlice()
 {
-    for (GCCompartmentsIter c(runtime); !c.done(); c.next()) {
+    /* We can't use GCCompartmentsIter if this is the end of the last slice. */
+    for (CompartmentsIter c(runtime); !c.done(); c.next()) {
         if (c->isGCMarking()) {
             c->setNeedsBarrier(true, JSCompartment::UpdateIon);
             c->arenas.prepareForIncrementalGC(runtime);
         } else {
-            JS_ASSERT(c->isGCSweeping());
             c->setNeedsBarrier(false, JSCompartment::UpdateIon);
         }
     }
 }
 
 static void
 PushZealSelectedObjects(JSRuntime *rt)
 {