diff --git a/xpcom/base/AvailableMemoryTracker.cpp b/xpcom/base/AvailableMemoryTracker.cpp index b1985db99c4a..874a8e497a1f 100644 --- a/xpcom/base/AvailableMemoryTracker.cpp +++ b/xpcom/base/AvailableMemoryTracker.cpp @@ -1,5 +1,5 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 ci et: */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -325,47 +325,14 @@ CreateDIBSectionHook(HDC aDC, return result; } -class NumLowMemoryEventsReporter : public nsIMemoryReporter -{ - NS_IMETHOD GetProcess(nsACString &aProcess) - { - aProcess.Truncate(); - return NS_OK; - } - - NS_IMETHOD GetKind(int *aKind) - { - *aKind = KIND_OTHER; - return NS_OK; - } - - NS_IMETHOD GetUnits(int *aUnits) - { - *aUnits = UNITS_COUNT_CUMULATIVE; - return NS_OK; - } -}; - -class NumLowVirtualMemoryEventsMemoryReporter MOZ_FINAL : public NumLowMemoryEventsReporter +class LowMemoryEventsVirtualReporter MOZ_FINAL : public MemoryReporterBase { public: - NS_DECL_ISUPPORTS - - NS_IMETHOD GetPath(nsACString &aPath) - { - aPath.AssignLiteral("low-memory-events/virtual"); - return NS_OK; - } - - NS_IMETHOD GetAmount(int64_t *aAmount) - { - // This memory reporter shouldn't be installed on 64-bit machines, since we - // force-disable virtual-memory tracking there. - MOZ_ASSERT(sizeof(void*) == 4); - - *aAmount = sNumLowVirtualMemEvents; - return NS_OK; - } + // The description is "???" because we implement GetDescription(). + LowMemoryEventsVirtualReporter() + : MemoryReporterBase("low-memory-events/virtual", + KIND_OTHER, UNITS_COUNT_CUMULATIVE, "???") + {} NS_IMETHOD GetDescription(nsACString &aDescription) { @@ -388,26 +355,26 @@ public: } return NS_OK; } + +private: + int64_t Amount() MOZ_OVERRIDE + { + // This memory reporter shouldn't be installed on 64-bit machines, since we + // force-disable virtual-memory tracking there. + MOZ_ASSERT(sizeof(void*) == 4); + + return sNumLowVirtualMemEvents; + } }; -NS_IMPL_ISUPPORTS1(NumLowVirtualMemoryEventsMemoryReporter, nsIMemoryReporter) - -class NumLowCommitSpaceEventsMemoryReporter MOZ_FINAL : public NumLowMemoryEventsReporter +class LowCommitSpaceEventsReporter MOZ_FINAL : public MemoryReporterBase { public: - NS_DECL_ISUPPORTS - - NS_IMETHOD GetPath(nsACString &aPath) - { - aPath.AssignLiteral("low-commit-space-events"); - return NS_OK; - } - - NS_IMETHOD GetAmount(int64_t *aAmount) - { - *aAmount = sNumLowCommitSpaceEvents; - return NS_OK; - } + // The description is "???" because we implement GetDescription(). + LowCommitSpaceEventsReporter() + : MemoryReporterBase("low-commit-space-events", + KIND_OTHER, UNITS_COUNT_CUMULATIVE, "???") + {} NS_IMETHOD GetDescription(nsACString &aDescription) { @@ -430,26 +397,19 @@ public: } return NS_OK; } + +private: + int64_t Amount() MOZ_OVERRIDE { return sNumLowCommitSpaceEvents; } }; -NS_IMPL_ISUPPORTS1(NumLowCommitSpaceEventsMemoryReporter, nsIMemoryReporter) - -class NumLowPhysicalMemoryEventsMemoryReporter MOZ_FINAL : public NumLowMemoryEventsReporter +class LowMemoryEventsPhysicalReporter MOZ_FINAL : public MemoryReporterBase { public: - NS_DECL_ISUPPORTS - - NS_IMETHOD GetPath(nsACString &aPath) - { - aPath.AssignLiteral("low-memory-events/physical"); - return NS_OK; - } - - NS_IMETHOD GetAmount(int64_t *aAmount) - { - *aAmount = sNumLowPhysicalMemEvents; - return NS_OK; - } + // The description is "???" because we implement GetDescription(). + LowMemoryEventsPhysicalReporter() + : MemoryReporterBase("low-memory-events/physical", + KIND_OTHER, UNITS_COUNT_CUMULATIVE, "???") + {} NS_IMETHOD GetDescription(nsACString &aDescription) { @@ -473,9 +433,10 @@ public: } return NS_OK; } -}; -NS_IMPL_ISUPPORTS1(NumLowPhysicalMemoryEventsMemoryReporter, nsIMemoryReporter) +private: + int64_t Amount() MOZ_OVERRIDE { return sNumLowPhysicalMemEvents; } +}; #endif // defined(XP_WIN) @@ -592,10 +553,10 @@ void Activate() Preferences::AddUintVarCache(&sLowMemoryNotificationIntervalMS, "memory.low_memory_notification_interval_ms", 10000); - NS_RegisterMemoryReporter(new NumLowCommitSpaceEventsMemoryReporter()); - NS_RegisterMemoryReporter(new NumLowPhysicalMemoryEventsMemoryReporter()); + NS_RegisterMemoryReporter(new LowCommitSpaceEventsReporter()); + NS_RegisterMemoryReporter(new LowMemoryEventsPhysicalReporter()); if (sizeof(void*) == 4) { - NS_RegisterMemoryReporter(new NumLowVirtualMemoryEventsMemoryReporter()); + NS_RegisterMemoryReporter(new LowMemoryEventsVirtualReporter()); } sHooksActive = true; #endif diff --git a/xpcom/base/MapsMemoryReporter.cpp b/xpcom/base/MapsMemoryReporter.cpp index 757e2582fe9d..09fd1354a423 100644 --- a/xpcom/base/MapsMemoryReporter.cpp +++ b/xpcom/base/MapsMemoryReporter.cpp @@ -1,5 +1,5 @@ -/* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 ci et: */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -520,8 +520,20 @@ MapsReporter::ParseMapBody( return NS_OK; } -static nsresult GetUSS(int64_t *n) +class ResidentUniqueReporter MOZ_FINAL : public MemoryReporterBase { +public: + ResidentUniqueReporter() + : MemoryReporterBase("resident-unique", KIND_OTHER, UNITS_BYTES, +"Memory mapped by the process that is present in physical memory and not " +"shared with any other processes. This is also known as the process's unique " +"set size (USS). This is the amount of RAM we'd expect to be freed if we " +"closed this process.") + {} + +private: + NS_IMETHOD GetAmount(int64_t *aAmount) + { // You might be tempted to calculate USS by subtracting the "shared" value // from the "resident" value in /proc//statm. But at least on Linux, // statm's "shared" value actually counts pages backed by files, which has @@ -533,42 +545,33 @@ static nsresult GetUSS(int64_t *n) // smaps reporter in normal about:memory operation). Hopefully this // implementation is fast enough not to matter. - *n = 0; + *aAmount = 0; FILE *f = fopen("/proc/self/smaps", "r"); NS_ENSURE_STATE(f); int64_t total = 0; char line[256]; - while(fgets(line, sizeof(line), f)) { - long long val = 0; - if(sscanf(line, "Private_Dirty: %lld kB", &val) == 1 || - sscanf(line, "Private_Clean: %lld kB", &val) == 1) { - total += val * 1024; // convert from kB to bytes - } + while (fgets(line, sizeof(line), f)) { + long long val = 0; + if (sscanf(line, "Private_Dirty: %lld kB", &val) == 1 || + sscanf(line, "Private_Clean: %lld kB", &val) == 1) { + total += val * 1024; // convert from kB to bytes + } } - *n = total; + *aAmount = total; fclose(f); return NS_OK; -} - -NS_FALLIBLE_MEMORY_REPORTER_IMPLEMENT(USS, - "resident-unique", - KIND_OTHER, - UNITS_BYTES, - GetUSS, - "Memory mapped by the process that is present in physical memory and not " - "shared with any other processes. This is also known as the process's " - "unique set size (USS). This is the amount of RAM we'd expect to be freed " - "if we closed this process.") + } +}; void Init() { nsCOMPtr reporter = new MapsReporter(); NS_RegisterMemoryMultiReporter(reporter); - NS_RegisterMemoryReporter(new NS_MEMORY_REPORTER_NAME(USS)); + NS_RegisterMemoryReporter(new ResidentUniqueReporter()); } } // namespace MapsMemoryReporter diff --git a/xpcom/base/nsMemoryInfoDumper.cpp b/xpcom/base/nsMemoryInfoDumper.cpp index 728edf18aff9..d6716918ecbd 100644 --- a/xpcom/base/nsMemoryInfoDumper.cpp +++ b/xpcom/base/nsMemoryInfoDumper.cpp @@ -16,6 +16,7 @@ #include "mozilla/dom/ContentChild.h" #include "nsIConsoleService.h" #include "nsICycleCollectorListener.h" +#include "nsIMemoryReporter.h" #include "nsDirectoryServiceDefs.h" #include "nsGZFileWriter.h" #include "nsJSEnvironment.h" diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp index 3b35fa6fce75..b1b0d407db59 100644 --- a/xpcom/base/nsMemoryReporterManager.cpp +++ b/xpcom/base/nsMemoryReporterManager.cpp @@ -490,7 +490,7 @@ public: "exact amount requested is not recorded.)") {} private: - int64_t Amount() + int64_t Amount() MOZ_OVERRIDE { jemalloc_stats_t stats; jemalloc_stats(&stats); diff --git a/xpcom/build/XPCOM.h b/xpcom/build/XPCOM.h index 5afca04ff203..44c5059e164d 100644 --- a/xpcom/build/XPCOM.h +++ b/xpcom/build/XPCOM.h @@ -82,7 +82,6 @@ #include "nsIInterfaceRequestor.h" #include "nsILineInputStream.h" #include "nsIMemory.h" -#include "nsIMemoryReporter.h" #include "nsIMutable.h" #include "nsIObserver.h" #include "nsIObserverService.h" diff --git a/xpcom/components/nsCategoryManager.cpp b/xpcom/components/nsCategoryManager.cpp index 4d853604090a..7765add9feab 100644 --- a/xpcom/components/nsCategoryManager.cpp +++ b/xpcom/components/nsCategoryManager.cpp @@ -402,14 +402,20 @@ CategoryEnumerator::enumfunc_createenumerator(const char* aStr, CategoryNode* aN NS_IMPL_QUERY_INTERFACE1(nsCategoryManager, nsICategoryManager) -NS_MEMORY_REPORTER_MALLOC_SIZEOF_FUN(CategoryManagerMallocSizeOf) - -NS_MEMORY_REPORTER_IMPLEMENT(CategoryManager, - "explicit/xpcom/category-manager", - KIND_HEAP, - nsIMemoryReporter::UNITS_BYTES, - nsCategoryManager::GetCategoryManagerSize, - "Memory used for the XPCOM category manager.") +class XPCOMCategoryManagerReporter MOZ_FINAL : public MemoryReporterBase +{ +public: + XPCOMCategoryManagerReporter() + : MemoryReporterBase("explicit/xpcom/category-manager", + KIND_HEAP, UNITS_BYTES, + "Memory used for the XPCOM category manager.") + {} +private: + int64_t Amount() MOZ_OVERRIDE + { + return nsCategoryManager::SizeOfIncludingThis(MallocSizeOf); + } +}; NS_IMETHODIMP_(nsrefcnt) nsCategoryManager::AddRef() @@ -463,14 +469,13 @@ nsCategoryManager::nsCategoryManager() void nsCategoryManager::InitMemoryReporter() { - mReporter = new NS_MEMORY_REPORTER_NAME(CategoryManager); + mReporter = new XPCOMCategoryManagerReporter(); NS_RegisterMemoryReporter(mReporter); } nsCategoryManager::~nsCategoryManager() { - (void)::NS_UnregisterMemoryReporter(mReporter); - mReporter = nullptr; + NS_UnregisterMemoryReporter(mReporter); // the hashtable contains entries that must be deleted before the arena is // destroyed, or else you will have PRLocks undestroyed and other Really @@ -490,11 +495,12 @@ nsCategoryManager::get_category(const char* aName) { } /* static */ int64_t -nsCategoryManager::GetCategoryManagerSize() +nsCategoryManager::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) { - MOZ_ASSERT(nsCategoryManager::gCategoryManager); - return nsCategoryManager::gCategoryManager->SizeOfIncludingThis( - CategoryManagerMallocSizeOf); + return nsCategoryManager::gCategoryManager + ? nsCategoryManager::gCategoryManager->SizeOfIncludingThisHelper( + aMallocSizeOf) + : 0; } static size_t @@ -509,7 +515,7 @@ SizeOfCategoryManagerTableEntryExcludingThis(nsDepCharHashKey::KeyType aKey, } size_t -nsCategoryManager::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) +nsCategoryManager::SizeOfIncludingThisHelper(MallocSizeOf aMallocSizeOf) { size_t n = aMallocSizeOf(this); diff --git a/xpcom/components/nsCategoryManager.h b/xpcom/components/nsCategoryManager.h index 5f3e3efaad80..8bd632ed5852 100644 --- a/xpcom/components/nsCategoryManager.h +++ b/xpcom/components/nsCategoryManager.h @@ -122,8 +122,7 @@ public: static nsCategoryManager* GetSingleton(); static void Destroy(); - static int64_t GetCategoryManagerSize(); - size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf); + static int64_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf); private: static nsCategoryManager* gCategoryManager; @@ -131,6 +130,8 @@ private: nsCategoryManager(); ~nsCategoryManager(); + size_t SizeOfIncludingThisHelper(mozilla::MallocSizeOf aMallocSizeOf); + CategoryNode* get_category(const char* aName); void NotifyObservers(const char* aTopic, const char* aCategoryName, // must be a static string @@ -141,7 +142,7 @@ private: mozilla::Mutex mLock; bool mSuppressNotifications; - nsIMemoryReporter* mReporter; + nsCOMPtr mReporter; }; #endif diff --git a/xpcom/components/nsComponentManager.cpp b/xpcom/components/nsComponentManager.cpp index 3ed89ff3559f..e9cf03a9c70c 100644 --- a/xpcom/components/nsComponentManager.cpp +++ b/xpcom/components/nsComponentManager.cpp @@ -1,4 +1,5 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=4 et sw=4 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. @@ -279,22 +280,23 @@ CloneAndAppend(nsIFile* aBase, const nsACString& append) // nsComponentManagerImpl //////////////////////////////////////////////////////////////////////////////// -NS_MEMORY_REPORTER_MALLOC_SIZEOF_FUN(ComponentManagerMallocSizeOf) - -static int64_t -GetComponentManagerSize() +class XPCOMComponentManagerReporter MOZ_FINAL : public MemoryReporterBase { - MOZ_ASSERT(nsComponentManagerImpl::gComponentManager); - return nsComponentManagerImpl::gComponentManager->SizeOfIncludingThis( - ComponentManagerMallocSizeOf); -} - -NS_MEMORY_REPORTER_IMPLEMENT(ComponentManager, - "explicit/xpcom/component-manager", - KIND_HEAP, - nsIMemoryReporter::UNITS_BYTES, - GetComponentManagerSize, - "Memory used for the XPCOM component manager.") +public: + XPCOMComponentManagerReporter() + : MemoryReporterBase("explicit/xpcom/component-manager", + KIND_HEAP, UNITS_BYTES, + "Memory used for the XPCOM component manager.") + {} +private: + int64_t Amount() MOZ_OVERRIDE + { + return nsComponentManagerImpl::gComponentManager + ? nsComponentManagerImpl::gComponentManager->SizeOfIncludingThis( + MallocSizeOf) + : 0; + } +}; nsresult nsComponentManagerImpl::Create(nsISupports* aOuter, REFNSIID aIID, void** aResult) @@ -412,8 +414,8 @@ nsresult nsComponentManagerImpl::Init() nsCategoryManager::GetSingleton()->SuppressNotifications(false); - mReporter = new NS_MEMORY_REPORTER_NAME(ComponentManager); - (void)::NS_RegisterMemoryReporter(mReporter); + mReporter = new XPCOMComponentManagerReporter(); + NS_RegisterMemoryReporter(mReporter); // Unfortunately, we can't register the nsCategoryManager memory reporter // in its constructor (which is triggered by the GetSingleton() call @@ -798,7 +800,7 @@ nsresult nsComponentManagerImpl::Shutdown(void) // Shutdown the component manager PR_LOG(nsComponentManagerLog, PR_LOG_DEBUG, ("nsComponentManager: Beginning Shutdown.")); - (void)::NS_UnregisterMemoryReporter(mReporter); + NS_UnregisterMemoryReporter(mReporter); mReporter = nullptr; // Release all cached factories diff --git a/xpcom/components/nsComponentManager.h b/xpcom/components/nsComponentManager.h index f3c27d1c43d7..1351aa8ec97c 100644 --- a/xpcom/components/nsComponentManager.h +++ b/xpcom/components/nsComponentManager.h @@ -38,8 +38,8 @@ #include "mozilla/Attributes.h" struct nsFactoryEntry; -class nsIServiceManager; class nsIMemoryReporter; +class nsIServiceManager; struct PRThread; #define NS_COMPONENTMANAGER_CID \ @@ -317,7 +317,7 @@ public: private: ~nsComponentManagerImpl(); - nsIMemoryReporter* mReporter; + nsCOMPtr mReporter; }; diff --git a/xpcom/reflect/xptinfo/public/XPTInterfaceInfoManager.h b/xpcom/reflect/xptinfo/public/XPTInterfaceInfoManager.h index 74f6dbf45303..3da723e25aa0 100644 --- a/xpcom/reflect/xptinfo/public/XPTInterfaceInfoManager.h +++ b/xpcom/reflect/xptinfo/public/XPTInterfaceInfoManager.h @@ -15,6 +15,7 @@ #include "nsDataHashtable.h" template class nsCOMArray; +class nsIMemoryReporter; class XPTHeader; class XPTInterfaceDirectoryEntry; class xptiInterfaceEntry; @@ -108,6 +109,8 @@ private: xptiWorkingSet mWorkingSet; Mutex mResolveLock; + + nsCOMPtr mReporter; }; } diff --git a/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp b/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp index 7ef74dfaaf9f..c34c36b907ca 100644 --- a/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp +++ b/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp @@ -1,4 +1,5 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -19,7 +20,7 @@ using namespace mozilla; -NS_IMPL_ISUPPORTS1(XPTInterfaceInfoManager, +NS_IMPL_ISUPPORTS1(XPTInterfaceInfoManager, nsIInterfaceInfoManager) static XPTInterfaceInfoManager* gInterfaceInfoManager = nullptr; @@ -27,9 +28,6 @@ static XPTInterfaceInfoManager* gInterfaceInfoManager = nullptr; static int gCallCount = 0; #endif - -NS_MEMORY_REPORTER_MALLOC_SIZEOF_FUN(XPTMallocSizeOf) - size_t XPTInterfaceInfoManager::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) { @@ -37,30 +35,33 @@ XPTInterfaceInfoManager::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) ReentrantMonitorAutoEnter monitor(mWorkingSet.mTableReentrantMonitor); // The entries themselves are allocated out of an arena accounted // for elsewhere, so don't measure them - n += mWorkingSet.mIIDTable.SizeOfExcludingThis(NULL, XPTMallocSizeOf); - n += mWorkingSet.mNameTable.SizeOfExcludingThis(NULL, XPTMallocSizeOf); + n += mWorkingSet.mIIDTable.SizeOfExcludingThis(NULL, aMallocSizeOf); + n += mWorkingSet.mNameTable.SizeOfExcludingThis(NULL, aMallocSizeOf); return n; } -// static -int64_t -XPTInterfaceInfoManager::GetXPTIWorkingSetSize() +class XPTIWorkingSetReporter MOZ_FINAL : public MemoryReporterBase { - size_t n = XPT_SizeOfArena(gXPTIStructArena, XPTMallocSizeOf); +public: + XPTIWorkingSetReporter() + : MemoryReporterBase("explicit/xpti-working-set", KIND_HEAP, UNITS_BYTES, + "Memory used by the XPCOM typelib system.") + {} +private: + int64_t Amount() MOZ_OVERRIDE + { + size_t n = gInterfaceInfoManager + ? gInterfaceInfoManager->SizeOfIncludingThis(MallocSizeOf) + : 0; - if (gInterfaceInfoManager) { - n += gInterfaceInfoManager->SizeOfIncludingThis(XPTMallocSizeOf); + // Measure gXPTIStructArena here, too. This is a bit grotty because it + // doesn't belong to the xptiInterfaceInfoManager, but there's no + // obviously better place to measure it. + n += XPT_SizeOfArena(gXPTIStructArena, MallocSizeOf); + + return n; } - - return n; -} - -NS_MEMORY_REPORTER_IMPLEMENT(XPTInterfaceInfoManager, - "explicit/xpti-working-set", - KIND_HEAP, - UNITS_BYTES, - XPTInterfaceInfoManager::GetXPTIWorkingSetSize, - "Memory used by the XPCOM typelib system.") +}; // static XPTInterfaceInfoManager* @@ -83,7 +84,8 @@ XPTInterfaceInfoManager::XPTInterfaceInfoManager() : mWorkingSet(), mResolveLock("XPTInterfaceInfoManager.mResolveLock") { - NS_RegisterMemoryReporter(new NS_MEMORY_REPORTER_NAME(XPTInterfaceInfoManager)); + mReporter = new XPTIWorkingSetReporter(); + NS_RegisterMemoryReporter(mReporter); } XPTInterfaceInfoManager::~XPTInterfaceInfoManager() @@ -91,6 +93,8 @@ XPTInterfaceInfoManager::~XPTInterfaceInfoManager() // We only do this on shutdown of the service. mWorkingSet.InvalidateInterfaceInfos(); + NS_UnregisterMemoryReporter(mReporter); + gInterfaceInfoManager = nullptr; #ifdef DEBUG gCallCount = 0; diff --git a/xpcom/reflect/xptinfo/src/xptiprivate.h b/xpcom/reflect/xptinfo/src/xptiprivate.h index 5e718c071a9e..59c66e8823df 100644 --- a/xpcom/reflect/xptinfo/src/xptiprivate.h +++ b/xpcom/reflect/xptinfo/src/xptiprivate.h @@ -72,7 +72,6 @@ /***************************************************************************/ class xptiInterfaceInfo; -class xptiInterfaceInfoManager; class xptiInterfaceEntry; class xptiTypelibGuts;