From b5f56d32a3e5aa8b4588477af052fc11c9ec576b Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Tue, 25 Aug 2015 11:19:00 -0400 Subject: [PATCH] Bug 1194270 - Tell the cycle collector about more fields of nsGlobalWindow. r=khuey Also, remove what looks like an obsolete pre-cycle-collector comment about cyclical ownership. --HG-- extra : histedit_source : a76351d706ada84e7257bdc3b592ac54e8bbec27 --- dom/base/nsGlobalWindow.cpp | 11 +++++++++++ dom/base/nsGlobalWindow.h | 7 ------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 8dfc8afb9e04..7436adf17e3d 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -1763,12 +1763,18 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(nsGlobalWindow) cb.NoteNativeChild(timeout, NS_CYCLE_COLLECTION_PARTICIPANT(nsTimeout)); } + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLocation) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mHistory) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLocalStorage) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSessionStorage) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mApplicationCache) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSuspendedDoc) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIndexedDB) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocumentPrincipal) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDoc) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIdleService) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWakeLock) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPendingStorageEvents) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIdleObservers) @@ -1827,15 +1833,20 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGlobalWindow) tmp->mListenerManager->Disconnect(); NS_IMPL_CYCLE_COLLECTION_UNLINK(mListenerManager) } + NS_IMPL_CYCLE_COLLECTION_UNLINK(mLocation) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mHistory) NS_IMPL_CYCLE_COLLECTION_UNLINK(mLocalStorage) NS_IMPL_CYCLE_COLLECTION_UNLINK(mSessionStorage) if (tmp->mApplicationCache) { static_cast(tmp->mApplicationCache.get())->Disconnect(); NS_IMPL_CYCLE_COLLECTION_UNLINK(mApplicationCache) } + NS_IMPL_CYCLE_COLLECTION_UNLINK(mSuspendedDoc) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mIndexedDB) NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocumentPrincipal) NS_IMPL_CYCLE_COLLECTION_UNLINK(mDoc) NS_IMPL_CYCLE_COLLECTION_UNLINK(mIdleService) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mWakeLock) NS_IMPL_CYCLE_COLLECTION_UNLINK(mPendingStorageEvents) NS_IMPL_CYCLE_COLLECTION_UNLINK(mIdleObservers) diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index d6e9b3d7a5d2..164517b9db7b 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -1633,13 +1633,6 @@ private: void DisconnectEventTargetObjects(); protected: - // When adding new member variables, be careful not to create cycles - // through JavaScript. If there is any chance that a member variable - // could own objects that are implemented in JavaScript, then those - // objects will keep the global object (this object) alive. To prevent - // these cycles, ownership of such members must be released in - // |CleanUp| and |DetachFromDocShell|. - // This member is also used on both inner and outer windows, but // for slightly different purposes. On inner windows it means the // inner window is held onto by session history and should not