Bug 1421607 - Do black marking of bfcache documents during GC, r=mystor

--HG--
extra : rebase_source : 395dddb461c065b780aeead12150c0feff550d5d
This commit is contained in:
Olli Pettay 2017-11-30 01:24:46 +02:00
Родитель 4ce4e2950f
Коммит a75b955405
1 изменённых файлов: 14 добавлений и 4 удалений

Просмотреть файл

@ -509,10 +509,20 @@ mozilla::dom::TraceBlackJS(JSTracer* aTrc, bool aIsShutdownGC)
for (auto iter = windowsById->Iter(); !iter.Done(); iter.Next()) {
nsGlobalWindowOuter* window = iter.Data();
if (!window->IsCleanedUp()) {
window->TraceGlobalJSObject(aTrc);
EventListenerManager* elm = window->GetExistingListenerManager();
if (elm) {
elm->TraceListeners(aTrc);
nsGlobalWindowInner* inner = nullptr;
for (PRCList* win = PR_LIST_HEAD(window);
win != window;
win = PR_NEXT_LINK(inner)) {
inner = static_cast<nsGlobalWindowInner*>(win);
if (inner->IsCurrentInnerWindow() ||
(inner->GetExtantDoc() &&
inner->GetExtantDoc()->GetBFCacheEntry())) {
inner->TraceGlobalJSObject(aTrc);
EventListenerManager* elm = inner->GetExistingListenerManager();
if (elm) {
elm->TraceListeners(aTrc);
}
}
}
if (window->IsRootOuterWindow()) {