Diff
Modified: trunk/Source/WebCore/ChangeLog (122579 => 122580)
--- trunk/Source/WebCore/ChangeLog 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/ChangeLog 2012-07-13 15:09:10 UTC (rev 122580)
@@ -1,3 +1,74 @@
+2012-07-13 Ilya Tikhonovsky <loi...@chromium.org>
+
+ Web Inspector: native memory instrumentation: extract instrumentation methods into MemoryClassInfo
+ https://bugs.webkit.org/show_bug.cgi?id=91227
+
+ Reviewed by Pavel Feldman.
+
+ void Node::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+ {
+ MemoryClassInfo<Node> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<ScriptWrappable>(this);
+
+ info.addMember(m_notInstrumentedPointer); // automatically detects poniter/reference
+ info.addInstrumentedMember(m_next);
+ info.addHashSet<MemoryInstrumentation::NonClass>(m_aHash); // NonClass value_type (report only size of internal template structures)
+ info.addHashSet<MemoryInstrumentation::NotInstrumentedClass>(m_aHashSet); // not instrumented value_type (use sizeof)
+ info.addHashSet<MemoryInstrumentation::InstrumentedClass>(m_aHashSet); // instrumented value_type (call visit)
+ }
+
+ The change is covered by existing tests for native memory snapshot.
+
+ * bindings/v8/DOMDataStore.cpp:
+ (WebCore::DOMDataStore::reportMemoryUsage):
+ * bindings/v8/IntrusiveDOMWrapperMap.h:
+ (WebCore::ChunkedTable::reportMemoryUsage):
+ * bindings/v8/ScriptWrappable.h:
+ (WebCore::ScriptWrappable::reportMemoryUsage):
+ * bindings/v8/V8Binding.cpp:
+ (WebCore::V8BindingPerIsolateData::reportMemoryUsage):
+ (WebCore::StringCache::reportMemoryUsage):
+ * bindings/v8/V8DOMMap.h:
+ * css/StylePropertySet.h:
+ (WebCore::StylePropertySet::reportMemoryUsage):
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::reportMemoryUsage):
+ * dom/ContainerNode.h:
+ (WebCore::ContainerNode::reportMemoryUsage):
+ * dom/Document.cpp:
+ (WebCore::Document::reportMemoryUsage):
+ * dom/Element.h:
+ (WebCore::Element::reportMemoryUsage):
+ * dom/ElementAttributeData.h:
+ (WebCore::ElementAttributeData::reportMemoryUsage):
+ * dom/MemoryInstrumentation.h:
+ (MemoryInstrumentation):
+ (WebCore::MemoryObjectInfo::objectType):
+ (WebCore::MemoryObjectInfo::objectSize):
+ (WebCore::MemoryObjectInfo::memoryInstrumentation):
+ (MemoryObjectInfo):
+ (WebCore::MemoryObjectInfo::reportObjectInfo):
+ (WebCore):
+ (MemoryClassInfo):
+ (WebCore::MemoryClassInfo::MemoryClassInfo):
+ (WebCore::MemoryClassInfo::visitBaseClass):
+ (WebCore::MemoryClassInfo::reportInstrumentedPointer):
+ (WebCore::MemoryClassInfo::reportInstrumentedObject):
+ (WebCore::MemoryClassInfo::reportPointer):
+ (WebCore::MemoryClassInfo::reportObject):
+ (WebCore::MemoryClassInfo::reportHashMap):
+ (WebCore::MemoryClassInfo::reportHashSet):
+ (WebCore::MemoryClassInfo::reportListHashSet):
+ (WebCore::MemoryClassInfo::reportVector):
+ (WebCore::MemoryClassInfo::reportString):
+ * dom/Node.cpp:
+ (WebCore::Node::reportMemoryUsage):
+ * dom/QualifiedName.h:
+ (WebCore::QualifiedName::QualifiedNameImpl::reportMemoryUsage):
+ (WebCore::QualifiedName::reportMemoryUsage):
+ * platform/TreeShared.h:
+ (WebCore::TreeShared::reportMemoryUsage):
+
2012-07-13 Pavel Feldman <pfeld...@chromium.org>
Web Inspector: align scope filters
Modified: trunk/Source/WebCore/bindings/js/ScriptWrappable.h (122579 => 122580)
--- trunk/Source/WebCore/bindings/js/ScriptWrappable.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/js/ScriptWrappable.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -56,8 +56,8 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportObject(m_wrapper);
+ MemoryClassInfo<ScriptWrappable> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportObject(m_wrapper);
}
private:
Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp (122579 => 122580)
--- trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp 2012-07-13 15:09:10 UTC (rev 122580)
@@ -121,11 +121,11 @@
void DOMDataStore::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
- memoryObjectInfo->reportInstrumentedPointer(m_domNodeMap);
- memoryObjectInfo->reportInstrumentedPointer(m_activeDomNodeMap);
- memoryObjectInfo->reportInstrumentedPointer(m_domObjectMap);
- memoryObjectInfo->reportInstrumentedPointer(m_activeDomObjectMap);
+ MemoryClassInfo<DOMDataStore> info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
+ info.reportInstrumentedPointer(m_domNodeMap);
+ info.reportInstrumentedPointer(m_activeDomNodeMap);
+ info.reportInstrumentedPointer(m_domObjectMap);
+ info.reportInstrumentedPointer(m_activeDomObjectMap);
}
// Called when the object is near death (not reachable from JS roots).
Modified: trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h (122579 => 122580)
--- trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -104,9 +104,9 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
+ MemoryClassInfo<ChunkedTable> info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
for (Chunk* chunk = m_chunks; chunk; chunk = chunk->m_previous)
- memoryObjectInfo->reportPointer(chunk, MemoryInstrumentation::Binding);
+ info.reportPointer(chunk);
}
private:
@@ -186,8 +186,8 @@
virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const OVERRIDE
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
- memoryObjectInfo->reportInstrumentedObject(m_table);
+ MemoryClassInfo<IntrusiveDOMWrapperMap> info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
+ info.reportInstrumentedObject(m_table);
}
private:
Modified: trunk/Source/WebCore/bindings/v8/ScriptWrappable.h (122579 => 122580)
--- trunk/Source/WebCore/bindings/v8/ScriptWrappable.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/v8/ScriptWrappable.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -54,8 +54,8 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportPointer(m_wrapper, MemoryInstrumentation::DOM);
+ MemoryClassInfo<ScriptWrappable> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportPointer(m_wrapper);
}
private:
Modified: trunk/Source/WebCore/bindings/v8/V8Binding.cpp (122579 => 122580)
--- trunk/Source/WebCore/bindings/v8/V8Binding.cpp 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/v8/V8Binding.cpp 2012-07-13 15:09:10 UTC (rev 122580)
@@ -92,14 +92,14 @@
void V8BindingPerIsolateData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
- memoryObjectInfo->reportHashMap(m_rawTemplates);
- memoryObjectInfo->reportHashMap(m_templates);
- memoryObjectInfo->reportInstrumentedObject(m_stringCache);
- memoryObjectInfo->reportVector(m_domDataList);
+ MemoryClassInfo<V8BindingPerIsolateData> info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
+ info.reportHashMap(m_rawTemplates);
+ info.reportHashMap(m_templates);
+ info.reportInstrumentedObject(m_stringCache);
+ info.reportVector(m_domDataList);
for (size_t i = 0; i < m_domDataList.size(); i++)
- memoryObjectInfo->reportInstrumentedPointer(m_domDataList[i]);
+ info.reportInstrumentedPointer(m_domDataList[i]);
}
// WebCoreStringResource is a helper class for v8ExternalString. It is used
@@ -590,8 +590,8 @@
void StringCache::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
- memoryObjectInfo->reportHashMap(m_stringCache);
+ MemoryClassInfo<StringCache> info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
+ info.reportHashMap(m_stringCache);
}
PassRefPtr<DOMStringList> v8ValueToWebCoreDOMStringList(v8::Handle<v8::Value> value)
Modified: trunk/Source/WebCore/bindings/v8/V8DOMMap.h (122579 => 122580)
--- trunk/Source/WebCore/bindings/v8/V8DOMMap.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/bindings/v8/V8DOMMap.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -136,8 +136,8 @@
virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const OVERRIDE
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding);
- memoryObjectInfo->reportHashMap(m_map);
+ MemoryClassInfo<WeakReferenceMap<KeyType, ValueType> > info(memoryObjectInfo, this, MemoryInstrumentation::Binding);
+ info.reportHashMap(m_map);
}
protected:
Modified: trunk/Source/WebCore/css/StylePropertySet.h (122579 => 122580)
--- trunk/Source/WebCore/css/StylePropertySet.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/css/StylePropertySet.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -118,9 +118,9 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::CSS);
+ MemoryClassInfo<StylePropertySet> info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
if (m_isMutable)
- memoryObjectInfo->reportPointer(m_mutablePropertyVector, MemoryInstrumentation::CSS);
+ info.reportPointer(m_mutablePropertyVector);
}
void adoptCSSOMWrapperFrom(StylePropertySet*);
Modified: trunk/Source/WebCore/dom/CharacterData.cpp (122579 => 122580)
--- trunk/Source/WebCore/dom/CharacterData.cpp 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/CharacterData.cpp 2012-07-13 15:09:10 UTC (rev 122580)
@@ -94,9 +94,9 @@
void CharacterData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- Node::reportMemoryUsage(memoryObjectInfo);
- memoryObjectInfo->reportString(m_data);
+ MemoryClassInfo<CharacterData> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<Node>(this);
+ info.reportString(m_data);
}
void CharacterData::appendData(const String& data, ExceptionCode&)
Modified: trunk/Source/WebCore/dom/ContainerNode.h (122579 => 122580)
--- trunk/Source/WebCore/dom/ContainerNode.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/ContainerNode.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -101,10 +101,10 @@
virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- Node::reportMemoryUsage(memoryObjectInfo);
- memoryObjectInfo->reportInstrumentedPointer(m_firstChild);
- memoryObjectInfo->reportInstrumentedPointer(m_lastChild);
+ MemoryClassInfo<ContainerNode> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<Node>(this);
+ info.reportInstrumentedPointer(m_firstChild);
+ info.reportInstrumentedPointer(m_lastChild);
}
protected:
Modified: trunk/Source/WebCore/dom/Document.cpp (122579 => 122580)
--- trunk/Source/WebCore/dom/Document.cpp 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/Document.cpp 2012-07-13 15:09:10 UTC (rev 122580)
@@ -6075,38 +6075,38 @@
void Document::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- ContainerNode::reportMemoryUsage(memoryObjectInfo);
- memoryObjectInfo->reportVector(m_customFonts);
- memoryObjectInfo->reportString(m_documentURI);
- memoryObjectInfo->reportString(m_baseTarget);
+ MemoryClassInfo<Document> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<ContainerNode>(this);
+ info.reportVector(m_customFonts);
+ info.reportString(m_documentURI);
+ info.reportString(m_baseTarget);
if (m_pageGroupUserSheets)
- memoryObjectInfo->reportVector(*m_pageGroupUserSheets.get());
+ info.reportVector(*m_pageGroupUserSheets.get());
if (m_userSheets)
- memoryObjectInfo->reportVector(*m_userSheets.get());
- memoryObjectInfo->reportHashSet(m_nodeIterators);
- memoryObjectInfo->reportHashSet(m_ranges);
- memoryObjectInfo->reportListHashSet(m_styleSheetCandidateNodes);
- memoryObjectInfo->reportString(m_preferredStylesheetSet);
- memoryObjectInfo->reportString(m_selectedStylesheetSet);
- memoryObjectInfo->reportString(m_title.string());
- memoryObjectInfo->reportString(m_rawTitle.string());
- memoryObjectInfo->reportString(m_xmlEncoding);
- memoryObjectInfo->reportString(m_xmlVersion);
- memoryObjectInfo->reportString(m_contentLanguage);
- memoryObjectInfo->reportHashMap(m_documentNamedItemCollections);
- memoryObjectInfo->reportHashMap(m_windowNamedItemCollections);
+ info.reportVector(*m_userSheets.get());
+ info.reportHashSet(m_nodeIterators);
+ info.reportHashSet(m_ranges);
+ info.reportListHashSet(m_styleSheetCandidateNodes);
+ info.reportString(m_preferredStylesheetSet);
+ info.reportString(m_selectedStylesheetSet);
+ info.reportString(m_title.string());
+ info.reportString(m_rawTitle.string());
+ info.reportString(m_xmlEncoding);
+ info.reportString(m_xmlVersion);
+ info.reportString(m_contentLanguage);
+ info.reportHashMap(m_documentNamedItemCollections);
+ info.reportHashMap(m_windowNamedItemCollections);
#if ENABLE(DASHBOARD_SUPPORT)
- memoryObjectInfo->reportVector(m_dashboardRegions);
+ info.reportVector(m_dashboardRegions);
#endif
- memoryObjectInfo->reportHashMap(m_cssCanvasElements);
- memoryObjectInfo->reportVector(m_iconURLs);
- memoryObjectInfo->reportHashSet(m_documentSuspensionCallbackElements);
- memoryObjectInfo->reportHashSet(m_mediaVolumeCallbackElements);
- memoryObjectInfo->reportHashSet(m_privateBrowsingStateChangedElements);
- memoryObjectInfo->reportHashMap(m_elementsByAccessKey);
- memoryObjectInfo->reportHashSet(m_mediaCanStartListeners);
- memoryObjectInfo->reportVector(m_pendingTasks);
+ info.reportHashMap(m_cssCanvasElements);
+ info.reportVector(m_iconURLs);
+ info.reportHashSet(m_documentSuspensionCallbackElements);
+ info.reportHashSet(m_mediaVolumeCallbackElements);
+ info.reportHashSet(m_privateBrowsingStateChangedElements);
+ info.reportHashMap(m_elementsByAccessKey);
+ info.reportHashSet(m_mediaCanStartListeners);
+ info.reportVector(m_pendingTasks);
}
#if ENABLE(UNDO_MANAGER)
Modified: trunk/Source/WebCore/dom/Element.h (122579 => 122580)
--- trunk/Source/WebCore/dom/Element.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/Element.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -430,10 +430,10 @@
virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- ContainerNode::reportMemoryUsage(memoryObjectInfo);
- memoryObjectInfo->reportInstrumentedObject(m_tagName);
- memoryObjectInfo->reportInstrumentedPointer(m_attributeData.get());
+ MemoryClassInfo<Element> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<ContainerNode>(this);
+ info.reportInstrumentedObject(m_tagName);
+ info.reportInstrumentedPointer(m_attributeData.get());
}
protected:
Modified: trunk/Source/WebCore/dom/ElementAttributeData.h (122579 => 122580)
--- trunk/Source/WebCore/dom/ElementAttributeData.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/ElementAttributeData.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -104,13 +104,13 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportInstrumentedPointer(m_inlineStyleDecl.get());
- memoryObjectInfo->reportInstrumentedPointer(m_attributeStyle.get());
- memoryObjectInfo->reportObject(m_classNames);
- memoryObjectInfo->reportObject(m_idForStyleResolution);
+ MemoryClassInfo<ElementAttributeData> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportInstrumentedPointer(m_inlineStyleDecl.get());
+ info.reportInstrumentedPointer(m_attributeStyle.get());
+ info.reportObject(m_classNames);
+ info.reportObject(m_idForStyleResolution);
if (m_isMutable)
- memoryObjectInfo->reportPointer(m_mutableAttributeVector, MemoryInstrumentation::DOM);
+ info.reportPointer(m_mutableAttributeVector);
}
private:
Modified: trunk/Source/WebCore/dom/MemoryInstrumentation.h (122579 => 122580)
--- trunk/Source/WebCore/dom/MemoryInstrumentation.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/MemoryInstrumentation.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -81,8 +81,7 @@
}
private:
- friend class MemoryObjectInfo;
-
+ template <typename T> friend class MemoryClassInfo;
template <typename T>
class InstrumentedPointer : public InstrumentedPointerBase {
public:
@@ -108,29 +107,15 @@
, m_objectSize(0)
{ }
- template <typename P>
- void reportInstrumentedPointer(const P* memberPointer)
- {
- m_memoryInstrumentation->reportInstrumentedPointer(memberPointer);
- }
+ MemoryInstrumentation::ObjectType objectType() const { return m_objectType; }
+ size_t objectSize() const { return m_objectSize; }
- template <typename P>
- void reportPointer(const P* pointer, MemoryInstrumentation::ObjectType objectType)
- {
- m_memoryInstrumentation->reportPointer(pointer, objectType);
- }
+ MemoryInstrumentation* memoryInstrumentation() { return m_memoryInstrumentation; }
- template <typename T>
- void reportInstrumentedObject(const T& memberObject)
- {
- m_memoryInstrumentation->reportInstrumentedObject(memberObject);
- }
+private:
+ template <typename T> friend class MemoryClassInfo;
- template <typename T>
- void reportObject(const T& object) { m_memoryInstrumentation->reportObject(object); }
-
- template <typename T>
- void reportObjectInfo(const T*, MemoryInstrumentation::ObjectType objectType)
+ template <typename T> void reportObjectInfo(const T*, MemoryInstrumentation::ObjectType objectType)
{
if (m_objectType != MemoryInstrumentation::Other)
return;
@@ -138,44 +123,41 @@
m_objectSize = sizeof(T);
}
- template <typename HashMapType>
- void reportHashMap(const HashMapType& map)
- {
- m_memoryInstrumentation->reportHashMap(map, objectType(), true);
- }
+ MemoryInstrumentation* m_memoryInstrumentation;
+ MemoryInstrumentation::ObjectType m_objectType;
+ size_t m_objectSize;
+};
- template <typename HashSetType>
- void reportHashSet(const HashSetType& set)
+template <typename T>
+class MemoryClassInfo {
+public:
+ MemoryClassInfo(MemoryObjectInfo* memoryObjectInfo, const T* ptr, MemoryInstrumentation::ObjectType objectType)
+ : m_memoryObjectInfo(memoryObjectInfo)
+ , m_memoryInstrumentation(memoryObjectInfo->memoryInstrumentation())
{
- m_memoryInstrumentation->reportHashSet(set, objectType(), true);
+ m_memoryObjectInfo->reportObjectInfo(ptr, objectType);
+ m_objectType = memoryObjectInfo->objectType();
}
- template <typename ListHashSetType>
- void reportListHashSet(const ListHashSetType& set)
- {
- m_memoryInstrumentation->reportListHashSet(set, objectType(), true);
- }
+ template <typename P> void visitBaseClass(const P* ptr) { ptr->P::reportMemoryUsage(m_memoryObjectInfo); }
- template <typename VectorType>
- void reportVector(const VectorType& vector)
- {
- m_memoryInstrumentation->reportVector(vector, objectType(), true);
- }
+ template <typename P> void reportInstrumentedPointer(const P* memberPointer) { m_memoryInstrumentation->reportInstrumentedPointer(memberPointer); }
+ template <typename O> void reportInstrumentedObject(const O& memberObject) { m_memoryInstrumentation->reportInstrumentedObject(memberObject); }
- void reportString(const String& string)
- {
- m_memoryInstrumentation->reportString(objectType(), string);
- }
+ template <typename P> void reportPointer(const P* pointer) { m_memoryInstrumentation->reportPointer(pointer, m_objectType); }
+ template <typename O> void reportObject(const O& object) { m_memoryInstrumentation->reportObject(object); }
- MemoryInstrumentation::ObjectType objectType() const { return m_objectType; }
- size_t objectSize() const { return m_objectSize; }
+ template <typename HashMapType> void reportHashMap(const HashMapType& map) { m_memoryInstrumentation->reportHashMap(map, m_objectType, true); }
+ template <typename HashSetType> void reportHashSet(const HashSetType& set) { m_memoryInstrumentation->reportHashSet(set, m_objectType, true); }
+ template <typename ListHashSetType> void reportListHashSet(const ListHashSetType& set) { m_memoryInstrumentation->reportListHashSet(set, m_objectType, true); }
+ template <typename VectorType> void reportVector(const VectorType& vector) { m_memoryInstrumentation->reportVector(vector, m_objectType, true); }
- MemoryInstrumentation* memoryInstrumentation() { return m_memoryInstrumentation; }
+ void reportString(const String& string) { m_memoryInstrumentation->reportString(m_objectType, string); }
- private:
+private:
+ MemoryObjectInfo* m_memoryObjectInfo;
MemoryInstrumentation* m_memoryInstrumentation;
MemoryInstrumentation::ObjectType m_objectType;
- size_t m_objectSize;
};
template <typename T>
Modified: trunk/Source/WebCore/dom/Node.cpp (122579 => 122580)
--- trunk/Source/WebCore/dom/Node.cpp 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/Node.cpp 2012-07-13 15:09:10 UTC (rev 122580)
@@ -2801,12 +2801,12 @@
void Node::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- TreeShared<Node, ContainerNode>::reportMemoryUsage(memoryObjectInfo);
- ScriptWrappable::reportMemoryUsage(memoryObjectInfo);
- memoryObjectInfo->reportPointer(m_document, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportInstrumentedPointer(m_next);
- memoryObjectInfo->reportInstrumentedPointer(m_previous);
+ MemoryClassInfo<Node> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.visitBaseClass<TreeShared<Node, ContainerNode> >(this);
+ info.visitBaseClass<ScriptWrappable>(this);
+ info.reportInstrumentedPointer(m_document);
+ info.reportInstrumentedPointer(m_next);
+ info.reportInstrumentedPointer(m_previous);
}
} // namespace WebCore
Modified: trunk/Source/WebCore/dom/QualifiedName.h (122579 => 122580)
--- trunk/Source/WebCore/dom/QualifiedName.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/dom/QualifiedName.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -52,11 +52,11 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportObject(m_prefix);
- memoryObjectInfo->reportObject(m_localName);
- memoryObjectInfo->reportObject(m_namespace);
- memoryObjectInfo->reportObject(m_localNameUpper);
+ MemoryClassInfo<QualifiedNameImpl> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportObject(m_prefix);
+ info.reportObject(m_localName);
+ info.reportObject(m_namespace);
+ info.reportObject(m_localNameUpper);
}
private:
QualifiedNameImpl(const AtomicString& prefix, const AtomicString& localName, const AtomicString& namespaceURI)
@@ -104,8 +104,8 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportInstrumentedPointer(m_impl);
+ MemoryClassInfo<QualifiedName> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportInstrumentedPointer(m_impl);
}
private:
void init(const AtomicString& prefix, const AtomicString& localName, const AtomicString& namespaceURI);
Modified: trunk/Source/WebCore/platform/TreeShared.h (122579 => 122580)
--- trunk/Source/WebCore/platform/TreeShared.h 2012-07-13 15:05:00 UTC (rev 122579)
+++ trunk/Source/WebCore/platform/TreeShared.h 2012-07-13 15:09:10 UTC (rev 122580)
@@ -113,8 +113,8 @@
void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
{
- memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM);
- memoryObjectInfo->reportInstrumentedPointer(m_parent);
+ MemoryClassInfo<TreeShared<NodeType, ParentNodeType> > info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
+ info.reportInstrumentedPointer(m_parent);
}
private: