Bug 856313 - Clean up some Traverse/Unlink declarations. r=smaug

This commit is contained in:
Andrew McCreight 2013-04-02 09:48:59 -07:00
parent 47910b2a56
commit 5afce95861
11 changed files with 109 additions and 192 deletions

View File

@ -44,21 +44,7 @@ nsBaseContentList::~nsBaseContentList()
{
}
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsBaseContentList)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mElements)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsBaseContentList)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
if (nsCCUncollectableMarker::sGeneration && tmp->IsBlack() &&
MOZ_LIKELY(!cb.WantAllTraces())) {
return NS_SUCCESS_INTERRUPTED_TRAVERSE;
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mElements)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsBaseContentList)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(nsBaseContentList, mElements)
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_BEGIN(nsBaseContentList)
if (nsCCUncollectableMarker::sGeneration && tmp->IsBlack()) {
@ -138,14 +124,8 @@ nsBaseContentList::IndexOf(nsIContent* aContent)
return IndexOf(aContent, true);
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsSimpleContentList,
nsBaseContentList)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRoot)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsSimpleContentList,
nsBaseContentList)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mRoot)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_INHERITED_1(nsSimpleContentList, nsBaseContentList,
mRoot)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsSimpleContentList)
NS_INTERFACE_MAP_END_INHERITING(nsBaseContentList)

View File

@ -52,31 +52,11 @@ NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMMutationRecord)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMMutationRecord)
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsDOMMutationRecord)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDOMMutationRecord)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTarget)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mPreviousSibling)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mNextSibling)
tmp->mAddedNodes = nullptr;
tmp->mRemovedNodes = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsDOMMutationRecord)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTarget)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPreviousSibling)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mNextSibling)
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mAddedNodes");
cb.NoteXPCOMChild(static_cast<nsIDOMNodeList*>(tmp->mAddedNodes));
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mRemovedNodes");
cb.NoteXPCOMChild(static_cast<nsIDOMNodeList*>(tmp->mRemovedNodes));
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_6(nsDOMMutationRecord,
mTarget,
mPreviousSibling, mNextSibling,
mAddedNodes, mRemovedNodes,
mOwner)
// Observer

View File

@ -171,27 +171,13 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDocumentEncoder)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDocumentEncoder)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocument)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mSelection)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mRange)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mNode)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCommonParent)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsDocumentEncoder)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocument)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSelection)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRange)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mNode)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCommonParent)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_5(nsDocumentEncoder,
mDocument, mSelection, mRange, mNode, mCommonParent)
nsDocumentEncoder::nsDocumentEncoder() : mCachedBuffer(nullptr)
{
Initialize();
mMimeType.AssignLiteral("text/plain");
}
void nsDocumentEncoder::Initialize(bool aClearCachedSerializer)

View File

@ -256,19 +256,7 @@ nsContentView::GetId(nsContentViewId* aId)
// we'd need to re-institute a fixed version of bug 98158.
#define MAX_DEPTH_CONTENT_FRAMES 10
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsFrameLoader)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocShell)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mMessageManager)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mChildMessageManager)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsFrameLoader)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocShell)
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "nsFrameLoader::mMessageManager");
cb.NoteXPCOMChild(static_cast<nsIContentFrameMessageManager*>(tmp->mMessageManager.get()));
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mChildMessageManager)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_3(nsFrameLoader, mDocShell, mMessageManager, mChildMessageManager)
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsFrameLoader)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsFrameLoader)

View File

@ -862,45 +862,24 @@ NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsEventStateManager)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsEventStateManager)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsEventStateManager)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCurrentTargetContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastMouseOverElement);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGestureDownContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGestureDownFrameOwner);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastLeftMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastLeftMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastMiddleMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastMiddleMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastRightMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLastRightMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mActiveContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mHoverContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mURLTargetContent);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFirstMouseOverEventElement);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFirstMouseOutEventElement);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocument);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAccessKeys);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsEventStateManager)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCurrentTargetContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastMouseOverElement);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGestureDownContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGestureDownFrameOwner);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastLeftMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastLeftMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastMiddleMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastMiddleMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastRightMouseDownContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLastRightMouseDownContentParent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mActiveContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mHoverContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mURLTargetContent);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mFirstMouseOverEventElement);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mFirstMouseOutEventElement);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocument);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAccessKeys);
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_17(nsEventStateManager,
mCurrentTargetContent,
mLastMouseOverElement,
mGestureDownContent,
mGestureDownFrameOwner,
mLastLeftMouseDownContent,
mLastLeftMouseDownContentParent,
mLastMiddleMouseDownContent,
mLastMiddleMouseDownContentParent,
mLastRightMouseDownContent,
mLastRightMouseDownContentParent,
mActiveContent,
mHoverContent,
mURLTargetContent,
mFirstMouseOverEventElement,
mFirstMouseOutEventElement,
mDocument,
mAccessKeys)
nsresult
nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,

View File

@ -95,23 +95,7 @@ HTMLOptionsCollection::GetOptionIndex(Element* aOption,
}
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(HTMLOptionsCollection)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mElements)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(HTMLOptionsCollection)
{
uint32_t i;
for (i = 0; i < tmp->mElements.Length(); ++i) {
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mElements[i]");
cb.NoteXPCOMChild(static_cast<Element*>(tmp->mElements[i]));
}
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(HTMLOptionsCollection)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(HTMLOptionsCollection, mElements)
// nsISupports

View File

@ -82,18 +82,7 @@ TableRowsCollection::~TableRowsCollection()
// reference for us.
}
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(TableRowsCollection)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK(mOrphanRows)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(TableRowsCollection)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOrphanRows)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(TableRowsCollection)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(TableRowsCollection, mOrphanRows)
NS_IMPL_CYCLE_COLLECTING_ADDREF(TableRowsCollection)
NS_IMPL_CYCLE_COLLECTING_RELEASE(TableRowsCollection)

View File

@ -1129,20 +1129,16 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(nsGeolocation)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGeolocation)
tmp->mPendingRequests.Clear();
tmp->mPendingCallbacks.Clear();
tmp->mWatchingCallbacks.Clear();
NS_IMPL_CYCLE_COLLECTION_UNLINK(mPendingCallbacks)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mWatchingCallbacks)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsGeolocation)
uint32_t i;
for (i = 0; i < tmp->mPendingRequests.Length(); ++i)
for (uint32_t i = 0; i < tmp->mPendingRequests.Length(); ++i)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPendingRequests[i].request)
for (i = 0; i < tmp->mPendingCallbacks.Length(); ++i)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPendingCallbacks[i])
for (i = 0; i < tmp->mWatchingCallbacks.Length(); ++i)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWatchingCallbacks[i])
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPendingCallbacks)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWatchingCallbacks)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
nsGeolocation::nsGeolocation()

View File

@ -1691,17 +1691,7 @@ nsDOMStorage2::Clear()
// nsDOMStorageItem
//
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDOMStorageItem)
{
tmp->mStorage = nullptr;
}
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsDOMStorageItem)
{
cb.NoteXPCOMChild(tmp->mStorage);
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_1(nsDOMStorageItem, mStorage)
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMStorageItem)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMStorageItem)

View File

@ -2412,33 +2412,11 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(jsdService)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, jsdIDebuggerService)
NS_INTERFACE_MAP_END
/* NS_IMPL_CYCLE_COLLECTION_10(jsdService, ...) */
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(jsdService)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mErrorHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mBreakpointHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDebugHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDebuggerHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mInterruptHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mScriptHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mThrowHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTopLevelHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mFunctionHook)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mActivationCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(jsdService)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mErrorHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mBreakpointHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDebugHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDebuggerHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mInterruptHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mScriptHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mThrowHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTopLevelHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFunctionHook)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mActivationCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_10(jsdService,
mErrorHook, mBreakpointHook, mDebugHook,
mDebuggerHook, mInterruptHook, mScriptHook,
mThrowHook, mTopLevelHook, mFunctionHook,
mActivationCallback)
NS_IMPL_CYCLE_COLLECTING_ADDREF(jsdService)
NS_IMPL_CYCLE_COLLECTING_RELEASE(jsdService)

View File

@ -957,6 +957,73 @@ struct Skippable
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f9) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
#define NS_IMPL_CYCLE_COLLECTION_10(_class, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, _f9, _f10) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(_class) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f1) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f2) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f3) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f4) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f5) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f6) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f7) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f8) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f9) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f10) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_END \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(_class) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f1) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f2) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f3) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f4) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f5) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f6) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f7) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f8) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f9) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f10) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
#define NS_IMPL_CYCLE_COLLECTION_17(_class, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, _f9, \
_f10, _f11, _f12, _f13, _f14, _f15, _f16, _f17) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(_class) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f1) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f2) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f3) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f4) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f5) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f6) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f7) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f8) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f9) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f10) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f11) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f12) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f13) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f14) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f15) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f16) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f17) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_END \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(_class) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f1) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f2) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f3) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f4) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f5) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f6) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f7) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f8) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f9) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f10) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f11) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f12) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f13) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f14) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f15) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f16) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(_f17) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
#define NS_IMPL_CYCLE_COLLECTION_INHERITED_1(_class, _base, _f1) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(_class, _base) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(_f1) \