From 286ddca5f8cb07e36b92857fd1ea34e47f1cdded Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Tue, 3 May 2016 11:51:10 -0700 Subject: [PATCH] Backed out changeset b343790604a9 (bug 1261106) for xpcshell failures in test_locale_data.js --- xpcom/base/CycleCollectedJSRuntime.cpp | 96 ++++++++++++-------------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/xpcom/base/CycleCollectedJSRuntime.cpp b/xpcom/base/CycleCollectedJSRuntime.cpp index 113f45ce1d54..434d8bcbd4fb 100644 --- a/xpcom/base/CycleCollectedJSRuntime.cpp +++ b/xpcom/base/CycleCollectedJSRuntime.cpp @@ -433,50 +433,6 @@ mozilla::GetBuildId(JS::BuildIdCharVector* aBuildID) return true; } -struct ClearJSHolder : public TraceCallbacks -{ - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - aPtr->setUndefined(); - } - - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - *aPtr = JSID_VOID; - } - - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - *aPtr = nullptr; - } - - virtual void Trace(JSObject** aPtr, const char* aName, - void* aClosure) const override - { - *aPtr = nullptr; - } - - virtual void Trace(JS::TenuredHeap* aPtr, const char*, void*) const override - { - *aPtr = nullptr; - } - - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - *aPtr = nullptr; - } - - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - *aPtr = nullptr; - } - - virtual void Trace(JS::Heap* aPtr, const char*, void*) const override - { - *aPtr = nullptr; - } -}; - CycleCollectedJSRuntime::CycleCollectedJSRuntime() : mGCThingCycleCollectorGlobal(sGCThingCycleCollectorGlobal) , mJSZoneCycleCollectorGlobal(sJSZoneCycleCollectorGlobal) @@ -515,14 +471,6 @@ CycleCollectedJSRuntime::~CycleCollectedJSRuntime() MOZ_ASSERT(mDebuggerPromiseMicroTaskQueue.empty()); MOZ_ASSERT(mPromiseMicroTaskQueue.empty()); - for (auto iter = mJSHolders.Iter(); !iter.Done(); iter.Next()) { - void* holder = iter.Key(); - nsScriptObjectTracer*& tracer = iter.Data(); - tracer->Trace(holder, ClearJSHolder(), nullptr); - - } - mJSHolders.Clear(); - JS_DestroyRuntime(mJSRuntime); mJSRuntime = nullptr; nsCycleCollector_forgetJSRuntime(); @@ -1087,6 +1035,50 @@ CycleCollectedJSRuntime::AddJSHolder(void* aHolder, nsScriptObjectTracer* aTrace mJSHolders.Put(aHolder, aTracer); } +struct ClearJSHolder : public TraceCallbacks +{ + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + aPtr->setUndefined(); + } + + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + *aPtr = JSID_VOID; + } + + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + *aPtr = nullptr; + } + + virtual void Trace(JSObject** aPtr, const char* aName, + void* aClosure) const override + { + *aPtr = nullptr; + } + + virtual void Trace(JS::TenuredHeap* aPtr, const char*, void*) const override + { + *aPtr = nullptr; + } + + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + *aPtr = nullptr; + } + + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + *aPtr = nullptr; + } + + virtual void Trace(JS::Heap* aPtr, const char*, void*) const override + { + *aPtr = nullptr; + } +}; + void CycleCollectedJSRuntime::RemoveJSHolder(void* aHolder) {