summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dom/performance/Performance.h2
-rw-r--r--dom/performance/PerformanceMainThread.cpp9
-rw-r--r--dom/performance/PerformanceMainThread.h4
-rw-r--r--dom/performance/PerformanceWorker.h2
-rw-r--r--dom/webidl/Performance.webidl2
-rw-r--r--dom/webidl/moz.build2
-rw-r--r--js/public/HeapAPI.h2
-rw-r--r--js/src/gc/GCRuntime.h2
-rw-r--r--js/src/gc/Nursery.cpp3
-rw-r--r--js/src/jsgc.cpp2
-rw-r--r--js/src/jsgc.h2
-rw-r--r--js/src/shell/js.cpp2
12 files changed, 33 insertions, 1 deletions
diff --git a/dom/performance/Performance.h b/dom/performance/Performance.h
index 4debecc90..c40dd8aff 100644
--- a/dom/performance/Performance.h
+++ b/dom/performance/Performance.h
@@ -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;
diff --git a/dom/performance/PerformanceMainThread.cpp b/dom/performance/PerformanceMainThread.cpp
index 5a84f5fb1..b95a91ea6 100644
--- a/dom/performance/PerformanceMainThread.cpp
+++ b/dom/performance/PerformanceMainThread.cpp
@@ -11,6 +11,7 @@
namespace mozilla {
namespace dom {
+
NS_IMPL_CYCLE_COLLECTION_CLASS(PerformanceMainThread)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(PerformanceMainThread,
@@ -18,8 +19,10 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(PerformanceMainThread,
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTiming,
mNavigation,
mDocEntry)
+#ifdef MOZ_DEVTOOLS_SERVER
tmp->mMozMemory = nullptr;
mozilla::DropJSObjects(this);
+#endif
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(PerformanceMainThread,
@@ -31,7 +34,9 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(PerformanceMainThread,
Performance)
+#ifdef MOZ_DEVTOOLS_SERVER
NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mMozMemory)
+#endif
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_ADDREF_INHERITED(PerformanceMainThread, Performance)
@@ -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()
diff --git a/dom/performance/PerformanceMainThread.h b/dom/performance/PerformanceMainThread.h
index 9f0e185fc..a90a53520 100644
--- a/dom/performance/PerformanceMainThread.h
+++ b/dom/performance/PerformanceMainThread.h
@@ -34,8 +34,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 +81,9 @@ protected:
nsCOMPtr<nsITimedChannel> mChannel;
RefPtr<PerformanceTiming> mTiming;
RefPtr<PerformanceNavigation> mNavigation;
+#ifdef MOZ_DEVTOOLS_SERVER
JS::Heap<JSObject*> mMozMemory;
+#endif
};
} // namespace dom
diff --git a/dom/performance/PerformanceWorker.h b/dom/performance/PerformanceWorker.h
index 346bdd026..ffe2a1998 100644
--- a/dom/performance/PerformanceWorker.h
+++ b/dom/performance/PerformanceWorker.h
@@ -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
{
diff --git a/dom/webidl/Performance.webidl b/dom/webidl/Performance.webidl
index 0bd2677df..e811e1cee 100644
--- a/dom/webidl/Performance.webidl
+++ b/dom/webidl/Performance.webidl
@@ -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)]
diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build
index 89c149db7..156da302d 100644
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -12,6 +12,7 @@ PREPROCESSED_WEBIDL_FILES = [
'HTMLMediaElement.webidl',
'Navigator.webidl',
'Node.webidl',
+ 'Performance.webidl',
'Window.webidl',
]
@@ -329,7 +330,6 @@ WEBIDL_FILES = [
'PaintRequestList.webidl',
'PannerNode.webidl',
'ParentNode.webidl',
- 'Performance.webidl',
'PerformanceEntry.webidl',
'PerformanceMark.webidl',
'PerformanceMeasure.webidl',
diff --git a/js/public/HeapAPI.h b/js/public/HeapAPI.h
index e37d13e93..fef6c0c78 100644
--- a/js/public/HeapAPI.h
+++ b/js/public/HeapAPI.h
@@ -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 */
diff --git a/js/src/gc/GCRuntime.h b/js/src/gc/GCRuntime.h
index f102e9ef0..f43dcd351 100644
--- a/js/src/gc/GCRuntime.h
+++ b/js/src/gc/GCRuntime.h
@@ -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);
diff --git a/js/src/gc/Nursery.cpp b/js/src/gc/Nursery.cpp
index 93a0eb6a8..737d68bd0 100644
--- a/js/src/gc/Nursery.cpp
+++ b/js/src/gc/Nursery.cpp
@@ -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();
diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp
index 5a9d732b6..3ad526f74 100644
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -6778,6 +6778,7 @@ js::gc::NextCellUniqueId(JSRuntime* rt)
namespace js {
namespace gc {
+#ifdef MOZ_DEVTOOLS_SERVER
namespace MemInfo {
static bool
@@ -6993,6 +6994,7 @@ NewMemoryInfoObject(JSContext* cx)
return obj;
}
+#endif // MOZ_DEVTOOLS_SERVER
const char*
StateName(State state)
diff --git a/js/src/jsgc.h b/js/src/jsgc.h
index 952fd6bae..601f63daa 100644
--- a/js/src/jsgc.h
+++ b/js/src/jsgc.h
@@ -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
{
diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp
index 36558a694..4b0c858a4 100644
--- a/js/src/shell/js.cpp
+++ b/js/src/shell/js.cpp
@@ -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 = {