mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1187151 (part 16) - Replace nsBaseHashtable::Enumerate() calls in dom/ with iterators. r=mccr8.
This commit is contained in:
parent
26cc2fd5b3
commit
9fb39bea5f
@ -1769,13 +1769,6 @@ NS_INTERFACE_MAP_END
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsGlobalWindow)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsGlobalWindow)
|
||||
|
||||
static PLDHashOperator
|
||||
MarkXBLHandlers(nsXBLPrototypeHandler* aKey, JS::Heap<JSObject*>& aData, void* aClosure)
|
||||
{
|
||||
JS::ExposeObjectToActiveJS(aData);
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_BEGIN(nsGlobalWindow)
|
||||
if (tmp->IsBlackForCC(false)) {
|
||||
if (nsCCUncollectableMarker::InGeneration(tmp->mCanSkipCCGeneration)) {
|
||||
@ -1783,7 +1776,11 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_BEGIN(nsGlobalWindow)
|
||||
}
|
||||
tmp->mCanSkipCCGeneration = nsCCUncollectableMarker::sGeneration;
|
||||
if (tmp->mCachedXBLPrototypeHandlers) {
|
||||
tmp->mCachedXBLPrototypeHandlers->Enumerate(MarkXBLHandlers, nullptr);
|
||||
for (auto iter = tmp->mCachedXBLPrototypeHandlers->Iter();
|
||||
!iter.Done();
|
||||
iter.Next()) {
|
||||
JS::ExposeObjectToActiveJS(iter.Data());
|
||||
}
|
||||
}
|
||||
if (EventListenerManager* elm = tmp->GetExistingListenerManager()) {
|
||||
elm->MarkForCC();
|
||||
@ -1979,24 +1976,14 @@ nsGlobalWindow::RiskyUnlink()
|
||||
}
|
||||
#endif
|
||||
|
||||
struct TraceData
|
||||
{
|
||||
const TraceCallbacks& callbacks;
|
||||
void* closure;
|
||||
};
|
||||
|
||||
static PLDHashOperator
|
||||
TraceXBLHandlers(nsXBLPrototypeHandler* aKey, JS::Heap<JSObject*>& aData, void* aClosure)
|
||||
{
|
||||
TraceData* data = static_cast<TraceData*>(aClosure);
|
||||
data->callbacks.Trace(&aData, "Cached XBL prototype handler", data->closure);
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsGlobalWindow)
|
||||
if (tmp->mCachedXBLPrototypeHandlers) {
|
||||
TraceData data = { aCallbacks, aClosure };
|
||||
tmp->mCachedXBLPrototypeHandlers->Enumerate(TraceXBLHandlers, &data);
|
||||
for (auto iter = tmp->mCachedXBLPrototypeHandlers->Iter();
|
||||
!iter.Done();
|
||||
iter.Next()) {
|
||||
JS::Heap<JSObject*>& data = iter.Data();
|
||||
aCallbacks.Trace(&data, "Cached XBL prototype handler", aClosure);
|
||||
}
|
||||
}
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
|
@ -294,28 +294,25 @@ BluetoothService::UnregisterBluetoothSignalHandler(
|
||||
}
|
||||
}
|
||||
|
||||
PLDHashOperator
|
||||
RemoveAllSignalHandlers(const nsAString& aKey,
|
||||
nsAutoPtr<BluetoothSignalObserverList>& aData,
|
||||
void* aUserArg)
|
||||
{
|
||||
BluetoothSignalObserver* handler =
|
||||
static_cast<BluetoothSignalObserver*>(aUserArg);
|
||||
aData->RemoveObserver(handler);
|
||||
// We shouldn't have duplicate instances in the ObserverList, but there's
|
||||
// no appropriate way to do duplication check while registering, so
|
||||
// assertions are added here.
|
||||
MOZ_ASSERT(!aData->RemoveObserver(handler));
|
||||
return aData->Length() ? PL_DHASH_NEXT : PL_DHASH_REMOVE;
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothService::UnregisterAllSignalHandlers(BluetoothSignalObserver* aHandler)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(aHandler);
|
||||
|
||||
mBluetoothSignalObserverTable.Enumerate(RemoveAllSignalHandlers, aHandler);
|
||||
for (auto iter = mBluetoothSignalObserverTable.Iter();
|
||||
!iter.Done();
|
||||
iter.Next()) {
|
||||
nsAutoPtr<BluetoothSignalObserverList>& ol = iter.Data();
|
||||
ol->RemoveObserver(aHandler);
|
||||
// We shouldn't have duplicate instances in the ObserverList, but there's
|
||||
// no appropriate way to do duplication check while registering, so
|
||||
// assertions are added here.
|
||||
MOZ_ASSERT(!ol->RemoveObserver(aHandler));
|
||||
if (ol->Length() == 0) {
|
||||
iter.Remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user