mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-07-08 07:58:35 +00:00
Issue #316 - Make the memory GC performance object conditional (WIP)
This was only added for GCubench and likely interfering with building without devtools-server.
This commit is contained in:
@@ -96,8 +96,10 @@ public:
|
||||
|
||||
IMPL_EVENT_HANDLER(resourcetimingbufferfull)
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
virtual void GetMozMemory(JSContext *aCx,
|
||||
JS::MutableHandle<JSObject*> aObj) = 0;
|
||||
#endif
|
||||
|
||||
virtual nsDOMNavigationTiming* GetDOMTiming() const = 0;
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(PerformanceMainThread)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(PerformanceMainThread,
|
||||
@@ -36,6 +37,10 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(PerformanceMainThread, Performance)
|
||||
NS_IMPL_RELEASE_INHERITED(PerformanceMainThread, Performance)
|
||||
#else
|
||||
NS_IMPL_CYCLE_COLLECTION_INHERITED(PerformanceMainThread, Performance
|
||||
mTiming, mNavigation, mDocEntry)
|
||||
#endif
|
||||
|
||||
// QueryInterface implementation for PerformanceMainThread
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(PerformanceMainThread)
|
||||
@@ -55,9 +60,12 @@ PerformanceMainThread::PerformanceMainThread(nsPIDOMWindowInner* aWindow,
|
||||
|
||||
PerformanceMainThread::~PerformanceMainThread()
|
||||
{
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
mozilla::DropJSObjects(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
void
|
||||
PerformanceMainThread::GetMozMemory(JSContext *aCx,
|
||||
JS::MutableHandle<JSObject*> aObj)
|
||||
@@ -71,6 +79,7 @@ PerformanceMainThread::GetMozMemory(JSContext *aCx,
|
||||
|
||||
aObj.set(mMozMemory);
|
||||
}
|
||||
#endif
|
||||
|
||||
PerformanceTiming*
|
||||
PerformanceMainThread::Timing()
|
||||
|
||||
@@ -20,8 +20,12 @@ public:
|
||||
nsITimedChannel* aChannel);
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(PerformanceMainThread,
|
||||
Performance)
|
||||
#else
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(PerformanceMainThread, Performance)
|
||||
#endif
|
||||
|
||||
virtual PerformanceTiming* Timing() override;
|
||||
|
||||
@@ -34,8 +38,10 @@ public:
|
||||
|
||||
DOMHighResTimeStamp CreationTime() const override;
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
virtual void GetMozMemory(JSContext *aCx,
|
||||
JS::MutableHandle<JSObject*> aObj) override;
|
||||
#endif
|
||||
|
||||
virtual nsDOMNavigationTiming* GetDOMTiming() const override
|
||||
{
|
||||
@@ -79,7 +85,9 @@ protected:
|
||||
nsCOMPtr<nsITimedChannel> mChannel;
|
||||
RefPtr<PerformanceTiming> mTiming;
|
||||
RefPtr<PerformanceNavigation> mNavigation;
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
JS::Heap<JSObject*> mMozMemory;
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
||||
@@ -43,11 +43,13 @@ public:
|
||||
|
||||
DOMHighResTimeStamp CreationTime() const override;
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
virtual void GetMozMemory(JSContext *aCx,
|
||||
JS::MutableHandle<JSObject*> aObj) override
|
||||
{
|
||||
MOZ_CRASH("This should not be called on workers.");
|
||||
}
|
||||
#endif
|
||||
|
||||
virtual nsDOMNavigationTiming* GetDOMTiming() const override
|
||||
{
|
||||
|
||||
@@ -55,12 +55,14 @@ partial interface Performance {
|
||||
attribute EventHandler onresourcetimingbufferfull;
|
||||
};
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
// GC microbenchmarks, pref-guarded, not for general use (bug 1125412)
|
||||
[Exposed=Window]
|
||||
partial interface Performance {
|
||||
[Pref="dom.enable_memory_stats"]
|
||||
readonly attribute object mozMemory;
|
||||
};
|
||||
#endif
|
||||
|
||||
// http://www.w3.org/TR/user-timing/
|
||||
[Exposed=(Window,Worker)]
|
||||
|
||||
@@ -392,6 +392,7 @@ IsIncrementalBarrierNeededOnTenuredGCThing(JS::shadow::Runtime* rt, const JS::GC
|
||||
return JS::shadow::Zone::asShadowZone(zone)->needsIncrementalBarrier();
|
||||
}
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
/**
|
||||
* Create an object providing access to the garbage collector's internal notion
|
||||
* of the current state of memory (both GC heap memory and GCthing-controlled
|
||||
@@ -399,6 +400,7 @@ IsIncrementalBarrierNeededOnTenuredGCThing(JS::shadow::Runtime* rt, const JS::GC
|
||||
*/
|
||||
extern JS_PUBLIC_API(JSObject*)
|
||||
NewMemoryInfoObject(JSContext* cx);
|
||||
#endif
|
||||
|
||||
} /* namespace gc */
|
||||
} /* namespace js */
|
||||
|
||||
@@ -741,7 +741,9 @@ class GCRuntime
|
||||
void removeBlackRootsTracer(JSTraceDataOp traceOp, void* data);
|
||||
|
||||
void setMaxMallocBytes(size_t value);
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
int32_t getMallocBytes() const { return mallocBytesUntilGC; }
|
||||
#endif
|
||||
void resetMallocBytes();
|
||||
bool isTooMuchMalloc() const { return mallocBytesUntilGC <= 0; }
|
||||
void updateMallocCounter(JS::Zone* zone, size_t nbytes);
|
||||
|
||||
@@ -505,7 +505,10 @@ js::Nursery::collect(JSRuntime* rt, JS::gcreason::Reason reason)
|
||||
if (!isEnabled())
|
||||
return;
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
// No need to obsessively track this without devtools
|
||||
rt->gc.incMinorGcNumber();
|
||||
#endif
|
||||
|
||||
rt->gc.stats.beginNurseryCollection(reason);
|
||||
TraceMinorGCStart();
|
||||
|
||||
@@ -6776,6 +6776,7 @@ js::gc::NextCellUniqueId(JSRuntime* rt)
|
||||
return rt->gc.nextCellUniqueId();
|
||||
}
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
namespace js {
|
||||
namespace gc {
|
||||
namespace MemInfo {
|
||||
@@ -7032,6 +7033,7 @@ AutoEmptyNursery::AutoEmptyNursery(JSRuntime *rt)
|
||||
|
||||
} /* namespace gc */
|
||||
} /* namespace js */
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
void
|
||||
|
||||
@@ -1357,8 +1357,10 @@ class ZoneList
|
||||
ZoneList& operator=(const ZoneList& other) = delete;
|
||||
};
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
JSObject*
|
||||
NewMemoryStatisticsObject(JSContext* cx);
|
||||
#endif
|
||||
|
||||
struct MOZ_RAII AutoAssertNoNurseryAlloc
|
||||
{
|
||||
|
||||
@@ -7090,6 +7090,7 @@ NewGlobalObject(JSContext* cx, JS::CompartmentOptions& options,
|
||||
if (!DefineOS(cx, glob, fuzzingSafe, &gOutFile, &gErrFile))
|
||||
return nullptr;
|
||||
|
||||
#ifdef MOZ_DEVTOOLS_SERVER
|
||||
RootedObject performanceObj(cx, JS_NewObject(cx, nullptr));
|
||||
if (!performanceObj)
|
||||
return nullptr;
|
||||
@@ -7105,6 +7106,7 @@ NewGlobalObject(JSContext* cx, JS::CompartmentOptions& options,
|
||||
return nullptr;
|
||||
if (!JS_DefineProperty(cx, mozMemoryObj, "gc", gcObj, JSPROP_ENUMERATE))
|
||||
return nullptr;
|
||||
#endif
|
||||
|
||||
/* Initialize FakeDOMObject. */
|
||||
static const js::DOMCallbacks DOMcallbacks = {
|
||||
|
||||
Reference in New Issue
Block a user