commit bad6494dd2179d1dbc950f6645a291737e1cb0f8
parent 0147760b374da72c6451351843ba53400d12a44a
Author: Paul Bone <paul@bone.id.au>
Date: Tue, 9 Dec 2025 03:12:40 +0000
Bug 1996828 - Make creation of MemoryTelemetry explicit r=toolkit-telemetry-reviewers,chutten
Until telemetry is initialised MemoryTelemetry will consume no memory.
Differential Revision: https://phabricator.services.mozilla.com/D274873
Diffstat:
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/toolkit/components/telemetry/core/Telemetry.cpp b/toolkit/components/telemetry/core/Telemetry.cpp
@@ -1212,8 +1212,8 @@ TelemetryImpl::EarlyInit() {
// Don't do anything if EarlyInit ran already.
return NS_OK;
}
- mMemoryTelemetry = MemoryTelemetry::Get();
-
+ mMemoryTelemetry = MemoryTelemetry::Create();
+ MOZ_ASSERT(mMemoryTelemetry);
return NS_OK;
}
diff --git a/xpcom/base/MemoryTelemetry.cpp b/xpcom/base/MemoryTelemetry.cpp
@@ -139,7 +139,7 @@ void MemoryTelemetry::Init() {
static StaticRefPtr<MemoryTelemetry> sInstance;
-/* static */ RefPtr<MemoryTelemetry> MemoryTelemetry::Get() {
+/* static */ RefPtr<MemoryTelemetry> MemoryTelemetry::Create() {
MOZ_ASSERT(NS_IsMainThread());
if (!sInstance) {
@@ -147,6 +147,12 @@ static StaticRefPtr<MemoryTelemetry> sInstance;
sInstance->Init();
ClearOnShutdown(&sInstance);
}
+
+ return sInstance;
+}
+
+/* static */ RefPtr<MemoryTelemetry> MemoryTelemetry::Get() {
+ MOZ_ASSERT(NS_IsMainThread());
return sInstance;
}
diff --git a/xpcom/base/MemoryTelemetry.h b/xpcom/base/MemoryTelemetry.h
@@ -37,6 +37,9 @@ class MemoryTelemetry final : public nsIObserver,
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSIOBSERVER
+ static RefPtr<MemoryTelemetry> Create();
+
+ // May return null if instance hasn't been created or was destroyed.
static RefPtr<MemoryTelemetry> Get();
nsresult GatherReports(