From 04c8768d94309bb02054a8d2f0e68341e41d06d2 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 30 Dec 2015 16:34:18 -0800 Subject: [PATCH] Backed out changeset 0d55a6e4e98e (bug 1120016) for 980 b2g hazards a=merge --HG-- extra : commitid : L7E30GOfLn2 extra : source : 081379edf00389a50773ef45e30e6620c76c9ef6 --- dom/base/nsWrapperCache.cpp | 17 +----- dom/base/nsWrapperCache.h | 21 ++++--- dom/base/nsWrapperCacheInlines.h | 6 ++ dom/bindings/Codegen.py | 2 - dom/bindings/parser/WebIDL.py | 14 +---- dom/events/Event.cpp | 3 + dom/webidl/Event.webidl | 2 +- dom/webidl/MutationObserver.webidl | 1 - js/src/devtools/rootAnalysis/annotations.js | 5 +- js/src/gc/GCRuntime.h | 4 -- js/src/gc/Marking.cpp | 2 - js/src/gc/Nursery.cpp | 5 -- js/src/jsapi.cpp | 8 --- js/src/jsapi.h | 7 --- js/src/jsgc.cpp | 15 ----- xpcom/base/CycleCollectedJSRuntime.cpp | 59 ------------------- xpcom/base/CycleCollectedJSRuntime.h | 14 ----- xpcom/base/nsCycleCollector.cpp | 20 +++---- xpcom/base/nsCycleCollectorTraceJSHelpers.cpp | 7 --- xpcom/glue/nsCycleCollectionParticipant.h | 4 -- 20 files changed, 33 insertions(+), 183 deletions(-) diff --git a/dom/base/nsWrapperCache.cpp b/dom/base/nsWrapperCache.cpp index e1d88feaee10..0b19e1a3630f 100644 --- a/dom/base/nsWrapperCache.cpp +++ b/dom/base/nsWrapperCache.cpp @@ -9,7 +9,6 @@ #include "js/Class.h" #include "js/Proxy.h" #include "mozilla/dom/DOMJSProxyHandler.h" -#include "mozilla/CycleCollectedJSRuntime.h" #include "mozilla/HoldDropJSObjects.h" #include "nsCycleCollectionTraversalCallback.h" #include "nsCycleCollector.h" @@ -25,25 +24,11 @@ nsWrapperCache::HasJSObjectMovedOp(JSObject* aWrapper) } #endif -void +/* static */ void nsWrapperCache::HoldJSObjects(void* aScriptObjectHolder, nsScriptObjectTracer* aTracer) { cyclecollector::HoldJSObjectsImpl(aScriptObjectHolder, aTracer); - if (mWrapper && !JS::ObjectIsTenured(mWrapper)) { - CycleCollectedJSRuntime::Get()->NurseryWrapperPreserved(mWrapper); - } -} - -void -nsWrapperCache::SetWrapperJSObject(JSObject* aWrapper) -{ - mWrapper = aWrapper; - UnsetWrapperFlags(kWrapperFlagsMask & ~WRAPPER_IS_NOT_DOM_BINDING); - - if (aWrapper && !JS::ObjectIsTenured(aWrapper)) { - CycleCollectedJSRuntime::Get()->NurseryWrapperAdded(this); - } } void diff --git a/dom/base/nsWrapperCache.h b/dom/base/nsWrapperCache.h index 0c8daaa35baa..af645a66a8b4 100644 --- a/dom/base/nsWrapperCache.h +++ b/dom/base/nsWrapperCache.h @@ -258,15 +258,14 @@ protected: void TraceWrapper(JSTracer* aTrc, const char* name) { if (mWrapper) { - JS_CallUnbarrieredObjectTracer(aTrc, &mWrapper, name); + JS_CallObjectTracer(aTrc, &mWrapper, name); } } void PoisonWrapper() { if (mWrapper) { - // See setToCrashOnTouch() in RootingAPI.h - mWrapper = reinterpret_cast(1); + mWrapper.setToCrashOnTouch(); } } @@ -288,7 +287,13 @@ private: return mWrapper; } - void SetWrapperJSObject(JSObject* aWrapper); + void SetWrapperJSObject(JSObject* aWrapper) + { + mWrapper = aWrapper; + UnsetWrapperFlags(kWrapperFlagsMask & ~WRAPPER_IS_NOT_DOM_BINDING); + } + + void TraceWrapperJSObject(JSTracer* aTrc, const char* aName); FlagsType GetWrapperFlags() const { @@ -313,8 +318,8 @@ private: mFlags &= ~aFlagsToUnset; } - void HoldJSObjects(void* aScriptObjectHolder, - nsScriptObjectTracer* aTracer); + static void HoldJSObjects(void* aScriptObjectHolder, + nsScriptObjectTracer* aTracer); #ifdef DEBUG public: @@ -344,8 +349,8 @@ private: enum { kWrapperFlagsMask = (WRAPPER_BIT_PRESERVED | WRAPPER_IS_NOT_DOM_BINDING) }; - JSObject* mWrapper; - FlagsType mFlags; + JS::Heap mWrapper; + FlagsType mFlags; }; enum { WRAPPER_CACHE_FLAGS_BITS_USED = 2 }; diff --git a/dom/base/nsWrapperCacheInlines.h b/dom/base/nsWrapperCacheInlines.h index f91e5db591ea..6bba5350acf9 100644 --- a/dom/base/nsWrapperCacheInlines.h +++ b/dom/base/nsWrapperCacheInlines.h @@ -53,4 +53,10 @@ nsWrapperCache::IsBlackAndDoesNotNeedTracing(nsISupports* aThis) return IsBlack() && HasNothingToTrace(aThis); } +inline void +nsWrapperCache::TraceWrapperJSObject(JSTracer* aTrc, const char* aName) +{ + JS_CallObjectTracer(aTrc, &mWrapper, aName); +} + #endif /* nsWrapperCache_h___ */ diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index 6dfe6825f270..66d66c9fb879 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -422,8 +422,6 @@ class CGDOMJSClass(CGThing): classFlags += "JSCLASS_HAS_RESERVED_SLOTS(%d)" % slotCount traceHook = 'nullptr' reservedSlots = slotCount - if self.descriptor.interface.isProbablyShortLivingObject(): - classFlags += " | JSCLASS_SKIP_NURSERY_FINALIZE" if self.descriptor.interface.getExtendedAttribute("NeedResolve"): resolveHook = RESOLVE_HOOK_NAME mayResolveHook = MAY_RESOLVE_HOOK_NAME diff --git a/dom/bindings/parser/WebIDL.py b/dom/bindings/parser/WebIDL.py index e664988d2c01..bee6af4d92cc 100644 --- a/dom/bindings/parser/WebIDL.py +++ b/dom/bindings/parser/WebIDL.py @@ -564,9 +564,6 @@ class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins): def isJSImplemented(self): return False - def isProbablyShortLivingObject(self): - return False - def getNavigatorProperty(self): return None @@ -1411,8 +1408,7 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins): identifier == "ChromeOnly" or identifier == "Unforgeable" or identifier == "UnsafeInPrerendering" or - identifier == "LegacyEventInit" or - identifier == "ProbablyShortLivingObject"): + identifier == "LegacyEventInit"): # Known extended attributes that do not take values if not attr.noArguments(): raise WebIDLError("[%s] must take no arguments" % identifier, @@ -1526,14 +1522,6 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins): def isJSImplemented(self): return bool(self.getJSImplementation()) - def isProbablyShortLivingObject(self): - current = self - while current: - if current.getExtendedAttribute("ProbablyShortLivingObject"): - return True - current = current.parent - return False - def getNavigatorProperty(self): naviProp = self.getExtendedAttribute("NavigatorProperty") if not naviProp: diff --git a/dom/events/Event.cpp b/dom/events/Event.cpp index e600094e90c9..9d12b2fb4609 100644 --- a/dom/events/Event.cpp +++ b/dom/events/Event.cpp @@ -237,6 +237,9 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END JSObject* Event::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { + if (mIsMainThreadEvent && !GetWrapperPreserveColor()) { + nsJSContext::LikelyShortLivingObjectCreated(); + } return WrapObjectInternal(aCx, aGivenProto); } diff --git a/dom/webidl/Event.webidl b/dom/webidl/Event.webidl index 3b479c1f0920..8e908db743e0 100644 --- a/dom/webidl/Event.webidl +++ b/dom/webidl/Event.webidl @@ -11,7 +11,7 @@ */ [Constructor(DOMString type, optional EventInit eventInitDict), - Exposed=(Window,Worker,System), ProbablyShortLivingObject] + Exposed=(Window,Worker,System)] interface Event { [Pure] readonly attribute DOMString type; diff --git a/dom/webidl/MutationObserver.webidl b/dom/webidl/MutationObserver.webidl index a891205c2773..ccb188b65e7e 100644 --- a/dom/webidl/MutationObserver.webidl +++ b/dom/webidl/MutationObserver.webidl @@ -7,7 +7,6 @@ * http://dom.spec.whatwg.org */ -[ProbablyShortLivingObject] interface MutationRecord { [Constant] readonly attribute DOMString type; diff --git a/js/src/devtools/rootAnalysis/annotations.js b/js/src/devtools/rootAnalysis/annotations.js index 911af6ff73ab..860e06eacb52 100644 --- a/js/src/devtools/rootAnalysis/annotations.js +++ b/js/src/devtools/rootAnalysis/annotations.js @@ -78,8 +78,7 @@ var ignoreCallees = { "z_stream_s.zfree" : true, "GrGLInterface.fCallback" : true, "std::strstreambuf._M_alloc_fun" : true, - "std::strstreambuf._M_free_fun" : true, - "struct js::gc::Callback.op" : true, + "std::strstreambuf._M_free_fun" : true }; function fieldCallCannotGC(csu, fullfield) @@ -188,8 +187,6 @@ var ignoreFunctions = { "void test::RingbufferDumper::OnTestPartResult(testing::TestPartResult*)" : true, "float64 JS_GetCurrentEmbedderTime()" : true, - - "uint64 js::TenuringTracer::moveObjectToTenured(JSObject*, JSObject*, int32)" : true, }; function isProtobuf(name) diff --git a/js/src/gc/GCRuntime.h b/js/src/gc/GCRuntime.h index 0ee6357a11c7..d7cf559b9874 100644 --- a/js/src/gc/GCRuntime.h +++ b/js/src/gc/GCRuntime.h @@ -756,9 +756,6 @@ class GCRuntime void setGCCallback(JSGCCallback callback, void* data); void callGCCallback(JSGCStatus status) const; - void setObjectsTenuredCallback(JSObjectsTenuredCallback callback, - void* data); - void callObjectsTenuredCallback(); bool addFinalizeCallback(JSFinalizeCallback callback, void* data); void removeFinalizeCallback(JSFinalizeCallback func); bool addWeakPointerZoneGroupCallback(JSWeakPointerZoneGroupCallback callback, void* data); @@ -1276,7 +1273,6 @@ class GCRuntime bool fullCompartmentChecks; Callback gcCallback; - Callback tenuredCallback; CallbackVector finalizeCallbacks; CallbackVector updateWeakPointerZoneGroupCallbacks; CallbackVector updateWeakPointerCompartmentCallbacks; diff --git a/js/src/gc/Marking.cpp b/js/src/gc/Marking.cpp index 2627b12cc9ae..8df3c3c6d226 100644 --- a/js/src/gc/Marking.cpp +++ b/js/src/gc/Marking.cpp @@ -2215,8 +2215,6 @@ js::TenuringTracer::moveObjectToTenured(JSObject* dst, JSObject* src, AllocKind tenuredSize += UnboxedArrayObject::objectMovedDuringMinorGC(this, dst, src, dstKind); } else if (src->is()) { tenuredSize += ArgumentsObject::objectMovedDuringMinorGC(this, dst, src); - } else if (JSObjectMovedOp op = dst->getClass()->ext.objectMovedOp) { - op(dst, src); } else { // Objects with JSCLASS_SKIP_NURSERY_FINALIZE need to be handled above // to ensure any additional nursery buffers they hold are moved. diff --git a/js/src/gc/Nursery.cpp b/js/src/gc/Nursery.cpp index 8d03adc05073..a5bcb6b9696d 100644 --- a/js/src/gc/Nursery.cpp +++ b/js/src/gc/Nursery.cpp @@ -496,10 +496,6 @@ js::Nursery::collect(JSRuntime* rt, JS::gcreason::Reason reason, ObjectGroupList forwardedBuffers.finish(); TIME_END(updateJitActivations); - TIME_START(objectsTenuredCallback); - rt->gc.callObjectsTenuredCallback(); - TIME_END(objectsTenuredCallback); - // Sweep. TIME_START(freeMallocedBuffers); freeMallocedBuffers(); @@ -580,7 +576,6 @@ js::Nursery::collect(JSRuntime* rt, JS::gcreason::Reason reason, ObjectGroupList {"mkDbgr", TIME_TOTAL(markDebugger)}, {"clrNOC", TIME_TOTAL(clearNewObjectCache)}, {"collct", TIME_TOTAL(collectToFP)}, - {" tenCB", TIME_TOTAL(objectsTenuredCallback)}, {"swpABO", TIME_TOTAL(sweepArrayBufferViewList)}, {"updtIn", TIME_TOTAL(updateJitActivations)}, {"frSlts", TIME_TOTAL(freeMallocedBuffers)}, diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 07a75f3f9d71..e3e0cad2eb0c 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1395,14 +1395,6 @@ JS_SetGCCallback(JSRuntime* rt, JSGCCallback cb, void* data) rt->gc.setGCCallback(cb, data); } -JS_PUBLIC_API(void) -JS_SetObjectsTenuredCallback(JSRuntime* rt, JSObjectsTenuredCallback cb, - void* data) -{ - AssertHeapIsIdle(rt); - rt->gc.setObjectsTenuredCallback(cb, data); -} - JS_PUBLIC_API(bool) JS_AddFinalizeCallback(JSRuntime* rt, JSFinalizeCallback cb, void* data) { diff --git a/js/src/jsapi.h b/js/src/jsapi.h index c4ac9cb69c75..fd8e23699aff 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -572,9 +572,6 @@ typedef enum JSGCStatus { typedef void (* JSGCCallback)(JSRuntime* rt, JSGCStatus status, void* data); -typedef void -(* JSObjectsTenuredCallback)(JSRuntime* rt, void* data); - typedef enum JSFinalizeStatus { /** * Called when preparing to sweep a group of compartments, before anything @@ -1657,10 +1654,6 @@ JS_MaybeGC(JSContext* cx); extern JS_PUBLIC_API(void) JS_SetGCCallback(JSRuntime* rt, JSGCCallback cb, void* data); -extern JS_PUBLIC_API(void) -JS_SetObjectsTenuredCallback(JSRuntime* rt, JSObjectsTenuredCallback cb, - void* data); - extern JS_PUBLIC_API(bool) JS_AddFinalizeCallback(JSRuntime* rt, JSFinalizeCallback cb, void* data); diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 99ee99ee1b53..e8d3d583d878 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1606,21 +1606,6 @@ GCRuntime::callGCCallback(JSGCStatus status) const gcCallback.op(rt, status, gcCallback.data); } -void -GCRuntime::setObjectsTenuredCallback(JSObjectsTenuredCallback callback, - void* data) -{ - tenuredCallback.op = callback; - tenuredCallback.data = data; -} - -void -GCRuntime::callObjectsTenuredCallback() -{ - if (tenuredCallback.op) - tenuredCallback.op(rt, tenuredCallback.data); -} - namespace { class AutoNotifyGCActivity { diff --git a/xpcom/base/CycleCollectedJSRuntime.cpp b/xpcom/base/CycleCollectedJSRuntime.cpp index d7da4ff126e0..8e92c4278ba7 100644 --- a/xpcom/base/CycleCollectedJSRuntime.cpp +++ b/xpcom/base/CycleCollectedJSRuntime.cpp @@ -73,7 +73,6 @@ #include "nsCycleCollector.h" #include "nsDOMJSUtils.h" #include "nsJSUtils.h" -#include "nsWrapperCache.h" #ifdef MOZ_CRASHREPORTER #include "nsExceptionHandler.h" @@ -398,12 +397,6 @@ NoteJSChildGrayWrapperShim(void* aData, JS::GCCellPtr aThing) // CycleCollectedJSRuntime. It should never be used directly. static const JSZoneParticipant sJSZoneCycleCollectorGlobal; -static -void JSObjectsTenuredCb(JSRuntime* aRuntime, void* aData) -{ - static_cast(aData)->JSObjectsTenured(aRuntime); -} - CycleCollectedJSRuntime::CycleCollectedJSRuntime(JSRuntime* aParentRuntime, uint32_t aMaxBytes, uint32_t aMaxNurseryBytes) @@ -437,7 +430,6 @@ CycleCollectedJSRuntime::CycleCollectedJSRuntime(JSRuntime* aParentRuntime, JS_SetGrayGCRootsTracer(mJSRuntime, TraceGrayJS, this); JS_SetGCCallback(mJSRuntime, GCCallback, this); mPrevGCSliceCallback = JS::SetGCSliceCallback(mJSRuntime, GCSliceCallback); - JS_SetObjectsTenuredCallback(mJSRuntime, JSObjectsTenuredCb, this); JS::SetOutOfMemoryCallback(mJSRuntime, OutOfMemoryCallback, this); JS::SetLargeAllocationFailureCallback(mJSRuntime, LargeAllocationFailureCallback, this); @@ -793,11 +785,6 @@ struct JsGcTracer : public TraceCallbacks { JS_CallObjectTracer(static_cast(aClosure), aPtr, aName); } - virtual void Trace(JSObject** aPtr, const char* aName, - void* aClosure) const override - { - JS_CallUnbarrieredObjectTracer(static_cast(aClosure), aPtr, aName); - } virtual void Trace(JS::TenuredHeap* aPtr, const char* aName, void* aClosure) const override { @@ -865,12 +852,6 @@ struct ClearJSHolder : TraceCallbacks *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; @@ -1027,46 +1008,6 @@ CycleCollectedJSRuntime::GarbageCollect(uint32_t aReason) const JS::GCForReason(mJSRuntime, GC_NORMAL, gcreason); } -void -CycleCollectedJSRuntime::JSObjectsTenured(JSRuntime* aRuntime) -{ - for (auto iter = mNurseryObjects.Iter(); !iter.Done(); iter.Next()) { - nsWrapperCache* cache = iter.Get(); - JSObject* wrapper = cache->GetWrapperPreserveColor(); - MOZ_ASSERT(wrapper); - if (!JS::ObjectIsTenured(wrapper)) { - MOZ_ASSERT(!cache->PreservingWrapper()); - const JSClass* jsClass = js::GetObjectJSClass(wrapper); - jsClass->finalize(nullptr, wrapper); - } - } - -#ifdef DEBUG -for (auto iter = mPreservedNurseryObjects.Iter(); !iter.Done(); iter.Next()) { - MOZ_ASSERT(JS::ObjectIsTenured(iter.Get().get())); -} -#endif - - mNurseryObjects.Clear(); - mPreservedNurseryObjects.Clear(); -} - -void -CycleCollectedJSRuntime::NurseryWrapperAdded(nsWrapperCache* aCache) -{ - MOZ_ASSERT(aCache); - MOZ_ASSERT(aCache->GetWrapperPreserveColor()); - MOZ_ASSERT(!JS::ObjectIsTenured(aCache->GetWrapperPreserveColor())); - mNurseryObjects.InfallibleAppend(aCache); -} - -void -CycleCollectedJSRuntime::NurseryWrapperPreserved(JSObject* aWrapper) -{ - mPreservedNurseryObjects.InfallibleAppend( - JS::PersistentRooted(mJSRuntime, aWrapper)); -} - void CycleCollectedJSRuntime::DeferredFinalize(DeferredFinalizeAppendFunction aAppendFunc, DeferredFinalizeFunction aFunc, diff --git a/xpcom/base/CycleCollectedJSRuntime.h b/xpcom/base/CycleCollectedJSRuntime.h index e9d83bd9363b..53875db9085d 100644 --- a/xpcom/base/CycleCollectedJSRuntime.h +++ b/xpcom/base/CycleCollectedJSRuntime.h @@ -10,9 +10,7 @@ #include #include "mozilla/DeferredFinalize.h" -#include "mozilla/mozalloc.h" #include "mozilla/MemoryReporting.h" -#include "mozilla/SegmentedVector.h" #include "jsapi.h" #include "nsCycleCollectionParticipant.h" @@ -24,7 +22,6 @@ class nsCycleCollectionNoteRootCallback; class nsIException; class nsIRunnable; class nsThread; -class nsWrapperCache; namespace js { struct Class; @@ -283,10 +280,6 @@ public: bool AreGCGrayBitsValid() const; void GarbageCollect(uint32_t aReason) const; - void NurseryWrapperAdded(nsWrapperCache* aCache); - void NurseryWrapperPreserved(JSObject* aWrapper); - void JSObjectsTenured(JSRuntime* aRuntime); - void DeferredFinalize(DeferredFinalizeAppendFunction aAppendFunc, DeferredFinalizeFunction aFunc, void* aThing); @@ -368,13 +361,6 @@ private: OOMState mOutOfMemoryState; OOMState mLargeAllocationFailureState; - - static const size_t kSegmentSize = 512; - SegmentedVector - mNurseryObjects; - SegmentedVector, kSegmentSize, - InfallibleAllocPolicy> - mPreservedNurseryObjects; }; void TraceScriptHolder(nsISupports* aHolder, JSTracer* aTracer); diff --git a/xpcom/base/nsCycleCollector.cpp b/xpcom/base/nsCycleCollector.cpp index cc92b560278a..a046f6ea705d 100644 --- a/xpcom/base/nsCycleCollector.cpp +++ b/xpcom/base/nsCycleCollector.cpp @@ -2677,7 +2677,7 @@ public: } virtual void Trace(JS::Heap* aValue, const char* aName, - void* aClosure) const override + void* aClosure) const { if (aValue->isMarkable() && ValueIsGrayCCThing(*aValue)) { MOZ_ASSERT(!js::gc::IsInsideNursery(aValue->toGCThing())); @@ -2686,7 +2686,7 @@ public: } virtual void Trace(JS::Heap* aId, const char* aName, - void* aClosure) const override + void* aClosure) const { } @@ -2699,35 +2699,29 @@ public: } virtual void Trace(JS::Heap* aObject, const char* aName, - void* aClosure) const override - { - AppendJSObjectToPurpleBuffer(*aObject); - } - - virtual void Trace(JSObject** aObject, const char* aName, - void* aClosure) const override + void* aClosure) const { AppendJSObjectToPurpleBuffer(*aObject); } virtual void Trace(JS::TenuredHeap* aObject, const char* aName, - void* aClosure) const override + void* aClosure) const { AppendJSObjectToPurpleBuffer(*aObject); } virtual void Trace(JS::Heap* aString, const char* aName, - void* aClosure) const override + void* aClosure) const { } virtual void Trace(JS::Heap* aScript, const char* aName, - void* aClosure) const override + void* aClosure) const { } virtual void Trace(JS::Heap* aFunction, const char* aName, - void* aClosure) const override + void* aClosure) const { } diff --git a/xpcom/base/nsCycleCollectorTraceJSHelpers.cpp b/xpcom/base/nsCycleCollectorTraceJSHelpers.cpp index 0e4e5d876a4f..7687be0ccebd 100644 --- a/xpcom/base/nsCycleCollectorTraceJSHelpers.cpp +++ b/xpcom/base/nsCycleCollectorTraceJSHelpers.cpp @@ -61,13 +61,6 @@ TraceCallbackFunc::Trace(JS::Heap* aPtr, const char* aName, mCallback(JS::GCCellPtr(aPtr->get()), aName, aClosure); } -void -TraceCallbackFunc::Trace(JSObject** aPtr, const char* aName, - void* aClosure) const -{ - mCallback(JS::GCCellPtr(*aPtr), aName, aClosure); -} - void TraceCallbackFunc::Trace(JS::TenuredHeap* aPtr, const char* aName, void* aClosure) const diff --git a/xpcom/glue/nsCycleCollectionParticipant.h b/xpcom/glue/nsCycleCollectionParticipant.h index fd114b76f018..5db54b3adc8b 100644 --- a/xpcom/glue/nsCycleCollectionParticipant.h +++ b/xpcom/glue/nsCycleCollectionParticipant.h @@ -64,8 +64,6 @@ struct TraceCallbacks void* aClosure) const = 0; virtual void Trace(JS::Heap* aPtr, const char* aName, void* aClosure) const = 0; - virtual void Trace(JSObject** aPtr, const char* aName, - void* aClosure) const = 0; virtual void Trace(JS::TenuredHeap* aPtr, const char* aName, void* aClosure) const = 0; virtual void Trace(JS::Heap* aPtr, const char* aName, @@ -92,8 +90,6 @@ struct TraceCallbackFunc : public TraceCallbacks void* aClosure) const override; virtual void Trace(JS::Heap* aPtr, const char* aName, void* aClosure) const override; - virtual void Trace(JSObject** aPtr, const char* aName, - void* aClosure) const override; virtual void Trace(JS::TenuredHeap* aPtr, const char* aName, void* aClosure) const override; virtual void Trace(JS::Heap* aPtr, const char* aName,