Bug 808067 - Fix needsBarrier (r=sstangl,jonco)

This commit is contained in:
Bill McCloskey 2012-11-05 14:22:35 -08:00
parent 5315a9a632
commit 1dccfd6b33
2 changed files with 7 additions and 3 deletions

View File

@ -32,5 +32,9 @@ if (!("verifypostbarriers" in this)) {
verifypostbarriers = function() { }
}
if (!("gcPreserveCode" in this)) {
gcPreserveCode = function() { }
}
if ("options" in this)
options("allow_xml");

View File

@ -4079,7 +4079,7 @@ ResetIncrementalGC(JSRuntime *rt, const char *reason)
AutoCopyFreeListToArenas copy(rt);
for (GCCompartmentsIter c(rt); !c.done(); c.next()) {
if (c->isGCMarking()) {
c->setNeedsBarrier(false, JSCompartment::DontUpdateIon);
c->setNeedsBarrier(false, JSCompartment::UpdateIon);
c->setGCState(JSCompartment::NoGC);
wasMarking = true;
}
@ -4154,12 +4154,12 @@ AutoGCSlice::AutoGCSlice(JSRuntime *rt)
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);
}
}