Web Inspector: extract HashSet instrumentation from core NMI code and put it into MemoryInstrumentationHashSet.h
https://bugs.webkit.org/show_bug.cgi?id=97198
Reviewed by Yury Semikhatsky.
Current implementation has overloads for HashSet.
This prevents us from instrumenting complex cases like Vector<HashSet<...> >.
Source/WebCore:
* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::reportDescendantMemoryUsage):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::Features::reportMemoryUsage):
(WebCore::StyleResolver::collectMatchingRulesForList):
* dom/Document.cpp:
(WebCore::Document::reportMemoryUsage):
* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::reportMemoryUsage):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::reportMemoryUsage):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::reportMemoryUsage):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::reportMemoryUsage):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::reportMemoryUsage):
Source/WebKit/chromium:
* tests/MemoryInstrumentationTest.cpp:
(WebCore::TEST):
(WebCore):
Source/WTF:
* GNUmakefile.list.am:
* WTF.gypi:
* WTF.pro:
* WTF.vcproj/WTF.vcproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/HashSet.h:
(WTF):
(HashSet):
* wtf/HashTable.h:
(WTF):
(HashTable):
* wtf/MemoryInstrumentation.h:
(WTF::MemoryClassInfo::addCollectionElements):
(WTF::MemoryClassInfo::addHashCountedSet):
* wtf/MemoryInstrumentationHashSet.h: Added.
(WTF):
(WTF::reportMemoryUsage):
* wtf/MemoryInstrumentationHashTable.h: Added.
(WTF):
(WTF::reportMemoryUsage):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129637 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp
index df2ebeff..00de0e7 100644
--- a/Source/WebCore/dom/Document.cpp
+++ b/Source/WebCore/dom/Document.cpp
@@ -109,6 +109,7 @@
#include "Language.h"
#include "Localizer.h"
#include "Logging.h"
+#include "MediaCanStartListener.h"
#include "MediaQueryList.h"
#include "MediaQueryMatcher.h"
#include "MouseEventWithHitTestResults.h"
@@ -174,6 +175,7 @@
#include <wtf/CurrentTime.h>
#include <wtf/HashFunctions.h>
#include <wtf/MainThread.h>
+#include <wtf/MemoryInstrumentationHashSet.h>
#include <wtf/MemoryInstrumentationVector.h>
#include <wtf/PassRefPtr.h>
#include <wtf/StdLibExtras.h>
@@ -5865,8 +5867,8 @@
void Document::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::DOM);
- info.addMember(m_styleResolver);
ContainerNode::reportMemoryUsage(memoryObjectInfo);
+ info.addMember(m_styleResolver);
info.addMember(m_customFonts);
info.addMember(m_url);
info.addMember(m_baseURL);
@@ -5876,12 +5878,16 @@
info.addMember(m_firstPartyForCookies);
info.addMember(m_documentURI);
info.addMember(m_baseTarget);
+ info.addMember(m_docType);
+ info.addMember(m_implementation);
+ info.addMember(m_elemSheet);
info.addMember(m_frame);
info.addMember(m_cachedResourceLoader);
- info.addMember(m_elemSheet);
info.addMember(m_styleSheetCollection);
- info.addHashSet(m_nodeIterators);
- info.addHashSet(m_ranges);
+ info.addMember(m_styleSheetList);
+ info.addMember(m_formController);
+ info.addMember(m_nodeIterators);
+ info.addMember(m_ranges);
info.addMember(m_title.string());
info.addMember(m_rawTitle.string());
info.addMember(m_xmlEncoding);
@@ -5894,12 +5900,12 @@
#endif
info.addHashMap(m_cssCanvasElements);
info.addMember(m_iconURLs);
- info.addHashSet(m_documentSuspensionCallbackElements);
- info.addHashSet(m_mediaVolumeCallbackElements);
- info.addHashSet(m_privateBrowsingStateChangedElements);
+ info.addMember(m_documentSuspensionCallbackElements);
+ info.addMember(m_mediaVolumeCallbackElements);
+ info.addMember(m_privateBrowsingStateChangedElements);
info.addHashMap(m_elementsByAccessKey);
info.addMember(m_eventQueue);
- info.addHashSet(m_mediaCanStartListeners);
+ info.addMember(m_mediaCanStartListeners);
info.addMember(m_pendingTasks);
}
diff --git a/Source/WebCore/dom/DocumentEventQueue.cpp b/Source/WebCore/dom/DocumentEventQueue.cpp
index 6396f01..f3601cf 100644
--- a/Source/WebCore/dom/DocumentEventQueue.cpp
+++ b/Source/WebCore/dom/DocumentEventQueue.cpp
@@ -35,6 +35,7 @@
#include "ScriptExecutionContext.h"
#include "SuspendableTimer.h"
#include "WebCoreMemoryInstrumentation.h"
+#include <wtf/MemoryInstrumentationHashSet.h>
namespace WebCore {
@@ -112,8 +113,8 @@
{
MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::DOM);
info.addMember(m_pendingEventTimer);
- info.addInstrumentedHashSet(m_queuedEvents);
- info.addInstrumentedHashSet(m_nodesWithQueuedScrollEvents);
+ info.addMember(m_queuedEvents);
+ info.addMember(m_nodesWithQueuedScrollEvents);
}
bool DocumentEventQueue::cancelEvent(Event* event)