зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1360526 - Refactor queing arenas for sweeping to use a single loop r=sfink
--HG-- extra : rebase_source : 0dc02838c0ad9e365b3975ce1642a3da390fe21f
This commit is contained in:
Родитель
65e6107a3b
Коммит
00d998b339
|
@ -5266,26 +5266,19 @@ GCRuntime::beginSweepingSweepGroup(AutoLockForExclusiveAccess& lock)
|
||||||
joinTask(task, gcstats::PHASE_SWEEP_MISC, helperLock);
|
joinTask(task, gcstats::PHASE_SWEEP_MISC, helperLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Queue all GC things in all zones for sweeping, either on the foreground
|
||||||
* Queue all GC things in all zones for sweeping, either in the
|
// or on the background thread.
|
||||||
* foreground or on the background thread.
|
|
||||||
*
|
|
||||||
* Note that order is important here for the background case.
|
|
||||||
*/
|
|
||||||
|
|
||||||
for (GCSweepGroupIter zone(rt); !zone.done(); zone.next()) {
|
for (GCSweepGroupIter zone(rt); !zone.done(); zone.next()) {
|
||||||
gcstats::AutoSCC scc(stats(), sweepGroupIndex);
|
gcstats::AutoSCC scc(stats(), sweepGroupIndex);
|
||||||
|
|
||||||
zone->arenas.queueForForegroundSweep(&fop, ForegroundObjectFinalizePhase);
|
zone->arenas.queueForForegroundSweep(&fop, ForegroundObjectFinalizePhase);
|
||||||
for (unsigned i = 0; i < ArrayLength(IncrementalFinalizePhases); ++i)
|
for (unsigned i = 0; i < ArrayLength(IncrementalFinalizePhases); ++i)
|
||||||
zone->arenas.queueForForegroundSweep(&fop, IncrementalFinalizePhases[i]);
|
zone->arenas.queueForForegroundSweep(&fop, IncrementalFinalizePhases[i]);
|
||||||
}
|
|
||||||
for (GCSweepGroupIter zone(rt); !zone.done(); zone.next()) {
|
|
||||||
gcstats::AutoSCC scc(stats(), sweepGroupIndex);
|
|
||||||
for (unsigned i = 0; i < ArrayLength(BackgroundFinalizePhases); ++i)
|
for (unsigned i = 0; i < ArrayLength(BackgroundFinalizePhases); ++i)
|
||||||
zone->arenas.queueForBackgroundSweep(&fop, BackgroundFinalizePhases[i]);
|
zone->arenas.queueForBackgroundSweep(&fop, BackgroundFinalizePhases[i]);
|
||||||
}
|
|
||||||
for (GCSweepGroupIter zone(rt); !zone.done(); zone.next()) {
|
|
||||||
gcstats::AutoSCC scc(stats(), sweepGroupIndex);
|
|
||||||
zone->arenas.queueForegroundThingsForSweep(&fop);
|
zone->arenas.queueForegroundThingsForSweep(&fop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче