diff --git a/content/base/src/nsContentList.cpp b/content/base/src/nsContentList.cpp index c5197006642..b1609655964 100644 --- a/content/base/src/nsContentList.cpp +++ b/content/base/src/nsContentList.cpp @@ -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) diff --git a/content/base/src/nsDOMMutationObserver.cpp b/content/base/src/nsDOMMutationObserver.cpp index 369753871b0..1340de48428 100644 --- a/content/base/src/nsDOMMutationObserver.cpp +++ b/content/base/src/nsDOMMutationObserver.cpp @@ -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(tmp->mAddedNodes)); - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mRemovedNodes"); - cb.NoteXPCOMChild(static_cast(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 diff --git a/content/base/src/nsDocumentEncoder.cpp b/content/base/src/nsDocumentEncoder.cpp index 1fd35b34d71..7b448e390dc 100644 --- a/content/base/src/nsDocumentEncoder.cpp +++ b/content/base/src/nsDocumentEncoder.cpp @@ -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) diff --git a/content/base/src/nsFrameLoader.cpp b/content/base/src/nsFrameLoader.cpp index 41fc326f644..b67b23c98c6 100644 --- a/content/base/src/nsFrameLoader.cpp +++ b/content/base/src/nsFrameLoader.cpp @@ -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(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) diff --git a/content/events/src/nsEventStateManager.cpp b/content/events/src/nsEventStateManager.cpp index 900cb74aab0..70f99c90774 100644 --- a/content/events/src/nsEventStateManager.cpp +++ b/content/events/src/nsEventStateManager.cpp @@ -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, diff --git a/content/html/content/src/HTMLOptionsCollection.cpp b/content/html/content/src/HTMLOptionsCollection.cpp index e0e47ee3d70..4eee3f4463f 100644 --- a/content/html/content/src/HTMLOptionsCollection.cpp +++ b/content/html/content/src/HTMLOptionsCollection.cpp @@ -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(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 diff --git a/content/html/content/src/HTMLTableElement.cpp b/content/html/content/src/HTMLTableElement.cpp index 9ca7080aef5..8bac43bc79a 100644 --- a/content/html/content/src/HTMLTableElement.cpp +++ b/content/html/content/src/HTMLTableElement.cpp @@ -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) diff --git a/dom/src/geolocation/nsGeolocation.cpp b/dom/src/geolocation/nsGeolocation.cpp index f0539c3c268..563e8530d8e 100644 --- a/dom/src/geolocation/nsGeolocation.cpp +++ b/dom/src/geolocation/nsGeolocation.cpp @@ -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() diff --git a/dom/src/storage/nsDOMStorage.cpp b/dom/src/storage/nsDOMStorage.cpp index e3c6ebfd04f..028b0cd0e48 100644 --- a/dom/src/storage/nsDOMStorage.cpp +++ b/dom/src/storage/nsDOMStorage.cpp @@ -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) diff --git a/js/jsd/jsd_xpc.cpp b/js/jsd/jsd_xpc.cpp index 4f7c849a0d4..8ce10b93255 100644 --- a/js/jsd/jsd_xpc.cpp +++ b/js/jsd/jsd_xpc.cpp @@ -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) diff --git a/xpcom/glue/nsCycleCollectionParticipant.h b/xpcom/glue/nsCycleCollectionParticipant.h index a9862a12ec0..19686fcd48d 100644 --- a/xpcom/glue/nsCycleCollectionParticipant.h +++ b/xpcom/glue/nsCycleCollectionParticipant.h @@ -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) \