Backed out 2 changesets (bug 1755594) for causing bp-hybrid bustage on TeeState.cpp. CLOSED TREE

Backed out changeset 82a58b494f74 (bug 1755594)
Backed out changeset b347a6be8478 (bug 1755594)
This commit is contained in:
Csoregi Natalia 2022-02-23 04:25:02 +02:00
Родитель 7896427e10
Коммит dafaf9d404
8 изменённых файлов: 183 добавлений и 101 удалений

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

@ -472,23 +472,4 @@ NS_DEFINE_STATIC_IID_ACCESSOR(nsWrapperCache, NS_WRAPPERCACHE_IID)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END \
NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(_class)
#define NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_WITH_JS_MEMBERS( \
class_, native_members_, js_members_) \
NS_IMPL_CYCLE_COLLECTION_CLASS(class_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER \
NS_IMPL_CYCLE_COLLECTION_UNLINK_END \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END \
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBERS( \
MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER \
NS_IMPL_CYCLE_COLLECTION_TRACE_END
#endif /* nsWrapperCache_h___ */

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

@ -71,11 +71,22 @@ inline void ImplCycleCollectionUnlink(
namespace mozilla::dom {
// Only needed for refcounted objects.
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_WITH_JS_MEMBERS(ReadableStream,
(mGlobal, mController,
mReader, mErrorAlgorithm,
mNativeUnderlyingSource),
(mStoredError))
NS_IMPL_CYCLE_COLLECTION_CLASS(ReadableStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ReadableStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobal, mController, mReader,
mErrorAlgorithm, mNativeUnderlyingSource)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
tmp->mStoredError.setNull();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ReadableStream)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGlobal, mController, mReader,
mErrorAlgorithm, mNativeUnderlyingSource)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ReadableStream)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mStoredError)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(ReadableStream)
NS_IMPL_CYCLE_COLLECTING_RELEASE(ReadableStream)

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

@ -29,13 +29,24 @@ ReadableStreamBYOBRequest::~ReadableStreamBYOBRequest() {
mozilla::DropJSObjects(this);
}
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_WITH_JS_MEMBERS(ReadableStreamBYOBRequest,
(mGlobal, mController),
(mView))
NS_IMPL_CYCLE_COLLECTION_CLASS(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobal, mController)
tmp->mView = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGlobal, mController)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTING_RELEASE(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ReadableStreamBYOBRequest)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mView)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ReadableStreamBYOBRequest)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY(nsISupports)

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

@ -14,16 +14,38 @@
namespace mozilla::dom {
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(TeeState,
(mStream, mReader, mBranch1, mBranch2,
mCancelPromise, mPullAlgorithm),
(mReason1, mReason2))
NS_IMPL_CYCLE_COLLECTION_CLASS(TeeState)
NS_IMPL_CYCLE_COLLECTING_ADDREF(TeeState)
NS_IMPL_CYCLE_COLLECTING_RELEASE(TeeState)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TeeState)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(TeeState)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mStream)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mReader)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mBranch1)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mBranch2)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCancelPromise)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPullAlgorithm)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(TeeState)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mReader)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mBranch1)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mBranch2)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCancelPromise)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mPullAlgorithm)
tmp->mReason1.setNull();
tmp->mReason2.setNull();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(TeeState)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mReason1)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mReason2)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
TeeState::TeeState(JSContext* aCx, ReadableStream* aStream,
bool aCloneForBranch2)
: mStream(aStream),

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

@ -9,8 +9,20 @@
using namespace mozilla::dom;
// UnderlyingSinkStartCallbackHelper
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(UnderlyingSinkStartCallbackHelper,
(mCallback), (mUnderlyingSink))
NS_IMPL_CYCLE_COLLECTION_CLASS(UnderlyingSinkStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(UnderlyingSinkStartCallbackHelper)
tmp->mUnderlyingSink = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(UnderlyingSinkStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSinkStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mUnderlyingSink)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(UnderlyingSinkStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTING_RELEASE(UnderlyingSinkStartCallbackHelper)
@ -30,8 +42,20 @@ void UnderlyingSinkStartCallbackHelper::StartCallback(
}
// UnderlyingSinkWriteCallbackHelper
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(UnderlyingSinkWriteCallbackHelper,
(mCallback), (mUnderlyingSink))
NS_IMPL_CYCLE_COLLECTION_CLASS(UnderlyingSinkWriteCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(UnderlyingSinkWriteCallbackHelper)
tmp->mUnderlyingSink = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(UnderlyingSinkWriteCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSinkWriteCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mUnderlyingSink)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(UnderlyingSinkWriteCallbackHelper)
NS_IMPL_CYCLE_COLLECTING_RELEASE(UnderlyingSinkWriteCallbackHelper)
@ -52,8 +76,20 @@ already_AddRefed<Promise> UnderlyingSinkWriteCallbackHelper::WriteCallback(
}
// UnderlyingSinkCloseCallbackHelper
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(UnderlyingSinkCloseCallbackHelper,
(mCallback), (mUnderlyingSink))
NS_IMPL_CYCLE_COLLECTION_CLASS(UnderlyingSinkCloseCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(UnderlyingSinkCloseCallbackHelper)
tmp->mUnderlyingSink = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(UnderlyingSinkCloseCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSinkCloseCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mUnderlyingSink)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(UnderlyingSinkCloseCallbackHelper)
NS_IMPL_CYCLE_COLLECTING_RELEASE(UnderlyingSinkCloseCallbackHelper)
@ -73,8 +109,20 @@ already_AddRefed<Promise> UnderlyingSinkCloseCallbackHelper::CloseCallback(
}
// UnderlyingSinkAbortCallbackHelper
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(UnderlyingSinkAbortCallbackHelper,
(mCallback), (mUnderlyingSink))
NS_IMPL_CYCLE_COLLECTION_CLASS(UnderlyingSinkAbortCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(UnderlyingSinkAbortCallbackHelper)
tmp->mUnderlyingSink = nullptr;
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(UnderlyingSinkAbortCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSinkAbortCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mUnderlyingSink)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(UnderlyingSinkAbortCallbackHelper)
NS_IMPL_CYCLE_COLLECTING_RELEASE(UnderlyingSinkAbortCallbackHelper)

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

@ -12,8 +12,20 @@
namespace mozilla::dom {
// UnderlyingSourceStartCallbackHelper
NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(UnderlyingSourceStartCallbackHelper,
(mCallback), (mThisObj))
NS_IMPL_CYCLE_COLLECTION_CLASS(UnderlyingSourceStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(UnderlyingSourceStartCallbackHelper)
tmp->mThisObj.set(nullptr);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(UnderlyingSourceStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSourceStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mThisObj)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(UnderlyingSourceStartCallbackHelper)
NS_IMPL_CYCLE_COLLECTING_RELEASE(UnderlyingSourceStartCallbackHelper)
@ -34,9 +46,23 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSourcePullCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
// IDLUnderlyingSourcePullCallbackHelper
NS_IMPL_CYCLE_COLLECTION_INHERITED_WITH_JS_MEMBERS(
IDLUnderlyingSourcePullCallbackHelper, UnderlyingSourcePullCallbackHelper,
(mCallback), (mThisObj))
NS_IMPL_CYCLE_COLLECTION_CLASS(IDLUnderlyingSourcePullCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(
IDLUnderlyingSourcePullCallbackHelper, UnderlyingSourcePullCallbackHelper)
tmp->mThisObj.set(nullptr);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(
IDLUnderlyingSourcePullCallbackHelper, UnderlyingSourcePullCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(
IDLUnderlyingSourcePullCallbackHelper, UnderlyingSourcePullCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mThisObj)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_ADDREF_INHERITED(IDLUnderlyingSourcePullCallbackHelper,
UnderlyingSourcePullCallbackHelper)
@ -71,9 +97,26 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(UnderlyingSourceCancelCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
// IDLUnderlyingSourceCancelCallbackHelper
NS_IMPL_CYCLE_COLLECTION_INHERITED_WITH_JS_MEMBERS(
NS_IMPL_CYCLE_COLLECTION_CLASS(IDLUnderlyingSourceCancelCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(
IDLUnderlyingSourceCancelCallbackHelper,
UnderlyingSourceCancelCallbackHelper, (mCallback), (mThisObj))
UnderlyingSourceCancelCallbackHelper)
tmp->mThisObj.set(nullptr);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(
IDLUnderlyingSourceCancelCallbackHelper,
UnderlyingSourceCancelCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(
IDLUnderlyingSourceCancelCallbackHelper,
UnderlyingSourceCancelCallbackHelper)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mThisObj)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_ADDREF_INHERITED(IDLUnderlyingSourceCancelCallbackHelper,
UnderlyingSourceCancelCallbackHelper)

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

@ -35,12 +35,27 @@
namespace mozilla::dom {
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_WITH_JS_MEMBERS(
WritableStream,
(mGlobal, mCloseRequest, mController, mInFlightWriteRequest,
mInFlightCloseRequest, mPendingAbortRequestPromise, mWriter,
mWriteRequests),
(mPendingAbortRequestReason, mStoredError))
NS_IMPL_CYCLE_COLLECTION_CLASS(WritableStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WritableStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobal, mCloseRequest, mController,
mInFlightWriteRequest, mInFlightCloseRequest,
mPendingAbortRequestPromise, mWriter,
mWriteRequests)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
tmp->mPendingAbortRequestReason.setNull();
tmp->mStoredError.setNull();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(WritableStream)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(
mGlobal, mCloseRequest, mController, mInFlightWriteRequest,
mInFlightCloseRequest, mWriter, mWriteRequests)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(WritableStream)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mPendingAbortRequestReason)
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mStoredError)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(WritableStream)
NS_IMPL_CYCLE_COLLECTING_RELEASE(WritableStream)

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

@ -1039,53 +1039,4 @@ inline bool LowWordEquals(const nsID& aID, const nsID& aOther) {
return (((uint32_t*)&aID.m0)[3] == ((uint32_t*)&aOther.m0)[3]);
}
// Template magic to modify JS::Heap without including relevant headers, to
// prevent excessive header dependency.
template <typename T>
inline void ImplCycleCollectionUnlink(JS::Heap<T>& aField) {
aField.setNull();
}
template <typename T>
inline void ImplCycleCollectionUnlink(JS::Heap<T*>& aField) {
aField = nullptr;
}
#define NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBERS(...) \
MOZ_FOR_EACH(NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK, (), \
(__VA_ARGS__))
#define NS_IMPL_CYCLE_COLLECTION_WITH_JS_MEMBERS(class_, native_members_, \
js_members_) \
NS_IMPL_CYCLE_COLLECTION_CLASS(class_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_END \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END \
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(class_) \
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBERS( \
MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_TRACE_END
#define NS_IMPL_CYCLE_COLLECTION_INHERITED_WITH_JS_MEMBERS( \
class_, _base, native_members_, js_members_) \
NS_IMPL_CYCLE_COLLECTION_CLASS(class_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(class_, _base) \
NS_IMPL_CYCLE_COLLECTION_UNLINK( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK(MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_UNLINK_END \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(class_, _base) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE( \
MOZ_FOR_EACH_EXPAND_HELPER native_members_) \
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END \
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(class_, _base) \
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBERS( \
MOZ_FOR_EACH_EXPAND_HELPER js_members_) \
NS_IMPL_CYCLE_COLLECTION_TRACE_END
#endif // nsCycleCollectionParticipant_h__