зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1136357 - Make Promise skippable, r=mccr8
--HG-- extra : rebase_source : e9679e163117aeabb69e3d919a1eaaba5b02b28c
This commit is contained in:
Родитель
b894344adc
Коммит
ed036ca142
|
@ -283,6 +283,32 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(Promise)
|
|||
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_BEGIN(Promise)
|
||||
if (tmp->IsBlack()) {
|
||||
if (tmp->mResult.isObject()) {
|
||||
JS::ExposeObjectToActiveJS(&(tmp->mResult.toObject()));
|
||||
}
|
||||
if (tmp->mAllocationStack) {
|
||||
JS::ExposeObjectToActiveJS(tmp->mAllocationStack);
|
||||
}
|
||||
if (tmp->mRejectionStack) {
|
||||
JS::ExposeObjectToActiveJS(tmp->mRejectionStack);
|
||||
}
|
||||
if (tmp->mFullfillmentStack) {
|
||||
JS::ExposeObjectToActiveJS(tmp->mFullfillmentStack);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_IN_CC_BEGIN(Promise)
|
||||
return tmp->IsBlackAndDoesNotNeedTracing(tmp);
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_IN_CC_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_BEGIN(Promise)
|
||||
return tmp->IsBlack();
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(Promise)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(Promise)
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ class Promise : public nsISupports,
|
|||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_PROMISE_IID)
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Promise)
|
||||
NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(Promise)
|
||||
MOZ_DECLARE_REFCOUNTED_TYPENAME(Promise)
|
||||
|
||||
// Promise creation tries to create a JS reflector for the Promise, so is
|
||||
|
|
Загрузка…
Ссылка в новой задаче