author | Andrew Osmond <aosmond@mozilla.com> |
Mon, 19 Sep 2016 13:29:59 -0400 | |
changeset 315850 | 738bab069e736293e8f159cc560a35f05209d8b0 |
parent 315849 | c5b5b2bbba91bde8e3b4f9dee0a5cc653f0e0062 |
child 315851 | f451982cae7cd667dea82640196cd6942beef235 |
push id | 30757 |
push user | cbook@mozilla.com |
push date | Fri, 30 Sep 2016 10:02:43 +0000 |
treeherder | mozilla-central@5ffed033557e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | njn |
bugs | 1275464 |
milestone | 52.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/image/imgLoader.cpp +++ b/image/imgLoader.cpp @@ -1212,16 +1212,22 @@ void imgLoader::GlobalInit() sCacheMaxSize = cachesize > 0 ? cachesize : 0; sMemReporter = new imgMemoryReporter(); RegisterStrongMemoryReporter(sMemReporter); RegisterImagesContentUsedUncompressedDistinguishedAmount( imgMemoryReporter::ImagesContentUsedUncompressedDistinguishedAmount); } +void imgLoader::ShutdownMemoryReporter() +{ + UnregisterImagesContentUsedUncompressedDistinguishedAmount(); + UnregisterStrongMemoryReporter(sMemReporter); +} + nsresult imgLoader::InitCache() { nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); if (!os) { return NS_ERROR_FAILURE; } @@ -1276,19 +1282,21 @@ imgLoader::Observe(nsISupports* aSubject strcmp(aTopic, "chrome-flush-caches") == 0) { MinimizeCaches(); ClearChromeImageCache(); } else if (strcmp(aTopic, "last-pb-context-exited") == 0) { if (mRespectPrivacy) { ClearImageCache(); ClearChromeImageCache(); } - } else if (strcmp(aTopic, "profile-before-change") == 0 || - strcmp(aTopic, "xpcom-shutdown") == 0) { + } else if (strcmp(aTopic, "profile-before-change") == 0) { mCacheTracker = nullptr; + } else if (strcmp(aTopic, "xpcom-shutdown") == 0) { + mCacheTracker = nullptr; + ShutdownMemoryReporter(); } else { // (Nothing else should bring us here) MOZ_ASSERT(0, "Invalid topic received"); } return NS_OK; }
--- a/image/imgLoader.h +++ b/image/imgLoader.h @@ -327,16 +327,17 @@ public: */ static bool SupportImageWithMimeType(const char* aMimeType, AcceptedMimeTypes aAccept = AcceptedMimeTypes::IMAGES); static void GlobalInit(); // for use by the factory static void Shutdown(); // for use by the factory + static void ShutdownMemoryReporter(); nsresult ClearChromeImageCache(); nsresult ClearImageCache(); void MinimizeCaches(); nsresult InitCache(); bool RemoveFromCache(const ImageCacheKey& aKey);
--- a/xpcom/base/nsIMemoryReporter.idl +++ b/xpcom/base/nsIMemoryReporter.idl @@ -484,16 +484,17 @@ typedef int64_t (*InfallibleAmountFn)(); nsresult Unregister##name##DistinguishedAmount(); DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeGCHeap) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeTemporaryPeak) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeCompartmentsSystem) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeCompartmentsUser) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, ImagesContentUsedUncompressed) +DECL_UNREGISTER_DISTINGUISHED_AMOUNT(ImagesContentUsedUncompressed) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, StorageSQLite) DECL_UNREGISTER_DISTINGUISHED_AMOUNT(StorageSQLite) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, LowMemoryEventsVirtual) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, LowMemoryEventsPhysical) DECL_REGISTER_DISTINGUISHED_AMOUNT(Infallible, GhostWindows)
--- a/xpcom/base/nsMemoryReporterManager.cpp +++ b/xpcom/base/nsMemoryReporterManager.cpp @@ -2680,16 +2680,17 @@ UnregisterWeakMemoryReporter(nsIMemoryRe } DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeGCHeap) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeTemporaryPeak) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeCompartmentsSystem) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, JSMainRuntimeCompartmentsUser) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, ImagesContentUsedUncompressed) +DEFINE_UNREGISTER_DISTINGUISHED_AMOUNT(ImagesContentUsedUncompressed) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, StorageSQLite) DEFINE_UNREGISTER_DISTINGUISHED_AMOUNT(StorageSQLite) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, LowMemoryEventsVirtual) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, LowMemoryEventsPhysical) DEFINE_REGISTER_DISTINGUISHED_AMOUNT(Infallible, GhostWindows)