Changeset 122466 in webkit
- Timestamp:
- Jul 12, 2012 8:59:49 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r122465 r122466 1 2012-07-12 Ilya Tikhonovsky <loislo@chromium.org> 2 3 Web Inspector: fix native memory instrumentation code for the bindings instrumentation. 4 https://bugs.webkit.org/show_bug.cgi?id=91096 5 6 The instrumented class has to have instrumentation method which reports class size and type and 7 the member objects and pointers. 8 9 Sample: 10 void Node::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 11 { 12 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::DOM); // report object size and type. 13 TreeShared<Node, ContainerNode>::reportMemoryUsage(memoryObjectInfo); // call base class instrumentation. 14 ScriptWrappable::reportMemoryUsage(memoryObjectInfo); // call base class instrumentation. 15 memoryObjectInfo->reportPointer(m_document, MemoryInstrumentation::DOM); // report uninstrumented pointer. 16 memoryObjectInfo->reportInstrumentedPointer(m_next); // report instrumented pointer. 17 memoryObjectInfo->reportInstrumentedObject(m_anObject); // report instrumented object. 18 } 19 20 Reviewed by Pavel Feldman. 21 22 Existing tests for native memory instrumentation. 23 24 * bindings/v8/DOMDataStore.cpp: 25 (WebCore::DOMDataStore::reportMemoryUsage): 26 * bindings/v8/DOMDataStore.h: 27 (WebCore): 28 (DOMDataStore): 29 * bindings/v8/IntrusiveDOMWrapperMap.h: 30 (WebCore::ChunkedTable::reportMemoryUsage): 31 * bindings/v8/ScriptProfiler.cpp: 32 (WebCore::ScriptProfiler::collectBindingMemoryInfo): 33 * bindings/v8/V8Binding.cpp: 34 (WebCore::V8BindingPerIsolateData::reportMemoryUsage): 35 (WebCore::StringCache::reportMemoryUsage): 36 * bindings/v8/V8Binding.h: 37 (WebCore): 38 (StringCache): 39 (V8BindingPerIsolateData): 40 * bindings/v8/V8DOMMap.h: 41 (WebCore): 42 (AbstractWeakReferenceMap): 43 * inspector/InspectorMemoryAgent.cpp: 44 (WebCore): 45 1 46 2012-07-12 Pavel Feldman <pfeldman@chromium.org> 2 47 -
trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp
r121658 r122466 120 120 } 121 121 122 void DOMDataStore::reportMemoryUsage(Memory Instrumentation* instrumentation)122 void DOMDataStore::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 123 123 { 124 instrumentation->reportPointer(this, MemoryInstrumentation::Binding);125 domNodeMap().reportMemoryUsage(instrumentation);126 activeDomNodeMap().reportMemoryUsage(instrumentation);127 domObjectMap().reportMemoryUsage(instrumentation);128 activeDomObjectMap().reportMemoryUsage(instrumentation);124 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 125 memoryObjectInfo->reportInstrumentedPointer(m_domNodeMap); 126 memoryObjectInfo->reportInstrumentedPointer(m_activeDomNodeMap); 127 memoryObjectInfo->reportInstrumentedPointer(m_domObjectMap); 128 memoryObjectInfo->reportInstrumentedPointer(m_activeDomObjectMap); 129 129 } 130 130 -
trunk/Source/WebCore/bindings/v8/DOMDataStore.h
r121658 r122466 48 48 class DOMData; 49 49 class DOMDataStore; 50 class Memory Instrumentation;50 class MemoryObjectInfo; 51 51 52 52 typedef WTF::Vector<DOMDataStore*> DOMDataList; … … 88 88 static void weakNodeCallback(v8::Persistent<v8::Value> v8Object, void* domObject); 89 89 90 void reportMemoryUsage(Memory Instrumentation*);90 void reportMemoryUsage(MemoryObjectInfo*) const; 91 91 92 92 protected: -
trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h
r121658 r122466 103 103 } 104 104 105 void reportMemoryUsage(MemoryInstrumentation* instrumentation) 106 { 105 void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 106 { 107 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 107 108 for (Chunk* chunk = m_chunks; chunk; chunk = chunk->m_previous) 108 instrumentation->reportPointer(chunk, MemoryInstrumentation::Binding);109 memoryObjectInfo->reportPointer(chunk, MemoryInstrumentation::Binding); 109 110 } 110 111 … … 184 185 } 185 186 186 virtual void reportMemoryUsage(Memory Instrumentation* instrumentation)OVERRIDE187 { 188 instrumentation->reportPointer(this, MemoryInstrumentation::Binding);189 m _table.reportMemoryUsage(instrumentation);187 virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const OVERRIDE 188 { 189 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 190 memoryObjectInfo->reportInstrumentedObject(m_table); 190 191 } 191 192 -
trunk/Source/WebCore/bindings/v8/ScriptProfiler.cpp
r121658 r122466 224 224 { 225 225 V8BindingPerIsolateData* data = V8BindingPerIsolateData::current(); 226 if (!data) 227 return; 228 data->reportMemoryUsage(instrumentation); 226 instrumentation->reportInstrumentedPointer(data); 229 227 } 230 228 -
trunk/Source/WebCore/bindings/v8/V8Binding.cpp
r121658 r122466 91 91 } 92 92 93 void V8BindingPerIsolateData::reportMemoryUsage(MemoryInstrumentation* instrumentation) 94 { 95 instrumentation->reportPointer(this, MemoryInstrumentation::Binding); 96 instrumentation->reportHashMap(m_rawTemplates, MemoryInstrumentation::Binding); 97 instrumentation->reportHashMap(m_templates, MemoryInstrumentation::Binding); 98 m_stringCache.reportMemoryUsage(instrumentation); 93 void V8BindingPerIsolateData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 94 { 95 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 96 memoryObjectInfo->reportHashMap(m_rawTemplates); 97 memoryObjectInfo->reportHashMap(m_templates); 98 memoryObjectInfo->reportInstrumentedObject(m_stringCache); 99 memoryObjectInfo->reportVector(m_domDataList); 99 100 100 101 for (size_t i = 0; i < m_domDataList.size(); i++) 101 m _domDataList[i]->reportMemoryUsage(instrumentation);102 memoryObjectInfo->reportInstrumentedPointer(m_domDataList[i]); 102 103 } 103 104 … … 588 589 } 589 590 590 void StringCache::reportMemoryUsage(MemoryInstrumentation* instrumentation) 591 { 592 instrumentation->reportHashMap(m_stringCache, MemoryInstrumentation::Binding); 591 void StringCache::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 592 { 593 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 594 memoryObjectInfo->reportHashMap(m_stringCache); 593 595 } 594 596 -
trunk/Source/WebCore/bindings/v8/V8Binding.h
r121663 r122466 50 50 class EventTarget; 51 51 class ExternalStringVisitor; 52 class Memory Instrumentation;52 class MemoryObjectInfo; 53 53 54 54 // FIXME: Remove V8Binding. … … 80 80 void remove(StringImpl*); 81 81 82 void reportMemoryUsage(Memory Instrumentation*);82 void reportMemoryUsage(MemoryObjectInfo*) const; 83 83 84 84 private: … … 218 218 GCEventData& gcEventData() { return m_gcEventData; } 219 219 220 void reportMemoryUsage(Memory Instrumentation*);220 void reportMemoryUsage(MemoryObjectInfo*) const; 221 221 222 222 private: -
trunk/Source/WebCore/bindings/v8/V8DOMMap.h
r121818 r122466 40 40 class DOMDataStore; 41 41 class Node; 42 class Memory Instrumentation;42 class MemoryObjectInfo; 43 43 44 44 template <class KeyType, class ValueType> class AbstractWeakReferenceMap { … … 65 65 v8::WeakReferenceCallback weakReferenceCallback() { return m_weakReferenceCallback; } 66 66 67 virtual void reportMemoryUsage(Memory Instrumentation*)= 0;67 virtual void reportMemoryUsage(MemoryObjectInfo*) const = 0; 68 68 69 69 private: … … 135 135 } 136 136 137 virtual void reportMemoryUsage(Memory Instrumentation* instrumentation)OVERRIDE137 virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const OVERRIDE 138 138 { 139 instrumentation->reportHashMap(m_map, MemoryInstrumentation::Binding); 139 memoryObjectInfo->reportObjectInfo(this, MemoryInstrumentation::Binding); 140 memoryObjectInfo->reportHashMap(m_map); 140 141 } 141 142 -
trunk/Source/WebCore/inspector/InspectorMemoryAgent.cpp
r122243 r122466 549 549 { 550 550 ScriptProfiler::collectBindingMemoryInfo(&m_domMemoryUsage); 551 m_domMemoryUsage.processDeferredInstrumentedPointers(); 551 552 } 552 553
Note: See TracChangeset
for help on using the changeset viewer.