diff --git a/content/base/src/nsDocument.cpp b/content/base/src/nsDocument.cpp index c1f41e24f332..2b8153901114 100644 --- a/content/base/src/nsDocument.cpp +++ b/content/base/src/nsDocument.cpp @@ -301,9 +301,13 @@ nsIdentifierMapEntry::~nsIdentifierMapEntry() void nsIdentifierMapEntry::Traverse(nsCycleCollectionTraversalCallback* aCallback) { - if (mNameContentList != NAME_NOT_VALID) + if (mNameContentList != NAME_NOT_VALID) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*aCallback, + "mIdentifierMap mNameContentList"); aCallback->NoteXPCOMChild(mNameContentList); + } + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*aCallback, "mIdentifierMap mDocAllList"); aCallback->NoteXPCOMChild(static_cast(mDocAllList)); } @@ -1227,6 +1231,7 @@ public: nsCycleCollectionTraversalCallback *mCb; virtual void Visit(nsIContent* aContent) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*mCb, "mLinkMap entry"); mCb->NoteXPCOMChild(aContent); } }; @@ -1236,7 +1241,6 @@ LinkMapTraverser(nsUint32ToContentHashEntry* aEntry, void* userArg) { LinkMapTraversalVisitor visitor; visitor.mCb = static_cast(userArg); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*visitor.mCb, "mLinkMap entry"); aEntry->VisitContent(&visitor); return PL_DHASH_NEXT; } diff --git a/content/events/src/nsDOMEvent.cpp b/content/events/src/nsDOMEvent.cpp index 9961b4c0df11..a0965098bc66 100644 --- a/content/events/src/nsDOMEvent.cpp +++ b/content/events/src/nsDOMEvent.cpp @@ -192,24 +192,28 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsDOMEvent) if (tmp->mEventIsInternal) { - cb.NoteXPCOMChild(tmp->mEvent->target); - cb.NoteXPCOMChild(tmp->mEvent->currentTarget); - cb.NoteXPCOMChild(tmp->mEvent->originalTarget); + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mEvent->target) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mEvent->currentTarget) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mEvent->originalTarget) switch (tmp->mEvent->eventStructType) { case NS_MOUSE_EVENT: case NS_MOUSE_SCROLL_EVENT: + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->relatedTarget"); cb.NoteXPCOMChild( static_cast(tmp->mEvent)->relatedTarget); break; case NS_DRAG_EVENT: + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->dataTransfer"); cb.NoteXPCOMChild( static_cast(tmp->mEvent)->dataTransfer); break; case NS_XUL_COMMAND_EVENT: + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->sourceEvent"); cb.NoteXPCOMChild( static_cast(tmp->mEvent)->sourceEvent); break; case NS_MUTATION_EVENT: + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->mRelatedNode"); cb.NoteXPCOMChild( static_cast(tmp->mEvent)->mRelatedNode); break; diff --git a/content/events/src/nsEventListenerManager.cpp b/content/events/src/nsEventListenerManager.cpp index 5186abbdb85a..47b281edaa9d 100644 --- a/content/events/src/nsEventListenerManager.cpp +++ b/content/events/src/nsEventListenerManager.cpp @@ -391,6 +391,7 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE_AMBIGUOUS(nsEventListenerManager, nsIEventListe NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsEventListenerManager) PRUint32 count = tmp->mListeners.Length(); for (PRUint32 i = 0; i < count; i++) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mListeners[i] mListener"); cb.NoteXPCOMChild(tmp->mListeners.ElementAt(i).mListener.get()); } NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END diff --git a/content/xul/document/src/nsXULDocument.cpp b/content/xul/document/src/nsXULDocument.cpp index 8aa8d5c3bf68..b3c45e827659 100644 --- a/content/xul/document/src/nsXULDocument.cpp +++ b/content/xul/document/src/nsXULDocument.cpp @@ -312,7 +312,9 @@ TraverseTemplateBuilders(nsISupports* aKey, nsIXULTemplateBuilder* aData, nsCycleCollectionTraversalCallback *cb = static_cast(aContext); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*cb, "mTemplateBuilderTable key"); cb->NoteXPCOMChild(aKey); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*cb, "mTemplateBuilderTable value"); cb->NoteXPCOMChild(aData); return PL_DHASH_NEXT; @@ -324,6 +326,7 @@ TraverseObservers(nsIURI* aKey, nsIObserver* aData, void* aContext) nsCycleCollectionTraversalCallback *cb = static_cast(aContext); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*cb, "mOverlayLoadObservers/mPendingOverlayLoadNotifications value"); cb->NoteXPCOMChild(aData); return PL_DHASH_NEXT; @@ -347,6 +350,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULDocument, nsXMLDocument) PRUint32 i, count = tmp->mPrototypes.Length(); for (i = 0; i < count; ++i) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mPrototypes[i]"); cb.NoteXPCOMChild(static_cast(tmp->mPrototypes[i])); } diff --git a/js/src/xpconnect/src/nsXPConnect.cpp b/js/src/xpconnect/src/nsXPConnect.cpp index 9c0f397c1583..b0be23da98e5 100644 --- a/js/src/xpconnect/src/nsXPConnect.cpp +++ b/js/src/xpconnect/src/nsXPConnect.cpp @@ -942,6 +942,7 @@ nsXPConnect::Traverse(void *p, nsCycleCollectionTraversalCallback &cb) // will be held alive through the parent of the JSObject of the tearoff. XPCWrappedNativeTearOff *to = (XPCWrappedNativeTearOff*) xpc_GetJSPrivate(obj); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "xpc_GetJSPrivate(obj)->mNative"); cb.NoteXPCOMChild(to->GetNative()); } // XXX XPCNativeWrapper seems to be the only class that doesn't hold a @@ -952,6 +953,7 @@ nsXPConnect::Traverse(void *p, nsCycleCollectionTraversalCallback &cb) clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS && !XPCNativeWrapper::IsNativeWrapperClass(clazz)) { + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "xpc_GetJSPrivate(obj)"); cb.NoteXPCOMChild(static_cast(xpc_GetJSPrivate(obj))); } @@ -960,6 +962,7 @@ nsXPConnect::Traverse(void *p, nsCycleCollectionTraversalCallback &cb) { nsISupports *principal = nsnull; mScopes.Get(obj, &principal); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "scope prinicpal"); cb.NoteXPCOMChild(principal); } #endif