Bug 1136357 - Make Promise skippable, r=mccr8

--HG--
extra : rebase_source : e9679e163117aeabb69e3d919a1eaaba5b02b28c
This commit is contained in:
Olli Pettay 2015-02-25 00:24:45 +02:00
Родитель b894344adc
Коммит ed036ca142
2 изменённых файлов: 27 добавлений и 1 удалений

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

@ -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