void WeakMapBase::sweepZone(JS::Zone* zone) { for (WeakMapBase* m = zone->gcWeakMapList().getFirst(); m;) { WeakMapBase* next = m->getNext(); if (m->marked) { m->sweep(); } else { m->clearAndCompact(); m->removeFrom(zone->gcWeakMapList()); } m = next; } #ifdef DEBUG for (WeakMapBase* m : zone->gcWeakMapList()) { MOZ_ASSERT(m->isInList() && m->marked); } #endif }