Title: [137108] trunk/Source/WebCore
Revision
137108
Author
[email protected]
Date
2012-12-09 22:16:45 -0800 (Sun, 09 Dec 2012)

Log Message

Native Memory Instrumentation: instrument a part of RenderObject class tree.
https://bugs.webkit.org/show_bug.cgi?id=103564

Reviewed by Eric Seidel.

Many RenderObject descendants have OwnPtrs and RefPtrs members.
Looks like we have to instrument all the RenderObject classes and visit
all the render objects instead of counting entire render arena memory.

* WebCore.exp.in:
* dom/Node.cpp:
(WebCore::Node::reportMemoryUsage):
* dom/WebCoreMemoryInstrumentation.cpp:
(WebCore):
* inspector/InspectorMemoryAgent.cpp:
(WebCore::reportRenderTreeInfo):
(WebCore):
* platform/PlatformMemoryInstrumentation.cpp:
(WebCore):
* platform/PlatformMemoryInstrumentation.h:
(PlatformMemoryTypes):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::reportMemoryUsage):
(WebCore):
* platform/graphics/GraphicsLayer.h:
(GraphicsLayer):
* platform/graphics/chromium/GraphicsLayerChromium.cpp:
(WebCore::GraphicsLayerChromium::reportMemoryUsage):
(WebCore):
* platform/graphics/chromium/GraphicsLayerChromium.h:
(GraphicsLayerChromium):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::reportMemoryUsage):
(WebCore):
* rendering/RenderBlock.h:
(RenderBlock):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::reportMemoryUsage):
(WebCore):
* rendering/RenderBox.h:
(RenderBox):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::reportMemoryUsage):
(WebCore):
* rendering/RenderInline.h:
(RenderInline):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::reportMemoryUsage):
(WebCore):
* rendering/RenderLayer.h:
(RenderLayer):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::reportMemoryUsage):
(WebCore):
* rendering/RenderLayerBacking.h:
(RenderLayerBacking):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::reportMemoryUsage):
(WebCore):
* rendering/RenderLayerCompositor.h:
(RenderLayerCompositor):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::reportMemoryUsage):
(WebCore):
* rendering/RenderLayerModelObject.h:
(RenderLayerModelObject):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::reportMemoryUsage):
(WebCore):
* rendering/RenderObject.h:
(RenderObject):
* rendering/RenderText.cpp:
(WebCore::RenderText::reportMemoryUsage):
(WebCore):
* rendering/RenderText.h:
(RenderText):
* rendering/RenderView.cpp:
(WebCore::RenderView::reportMemoryUsage):
(WebCore):
* rendering/RenderView.h:
(RenderView):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (137107 => 137108)


--- trunk/Source/WebCore/ChangeLog	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/ChangeLog	2012-12-10 06:16:45 UTC (rev 137108)
@@ -1,3 +1,87 @@
+2012-12-09  Ilya Tikhonovsky  <[email protected]>
+
+        Native Memory Instrumentation: instrument a part of RenderObject class tree.
+        https://bugs.webkit.org/show_bug.cgi?id=103564
+
+        Reviewed by Eric Seidel.
+
+        Many RenderObject descendants have OwnPtrs and RefPtrs members.
+        Looks like we have to instrument all the RenderObject classes and visit
+        all the render objects instead of counting entire render arena memory.
+
+        * WebCore.exp.in:
+        * dom/Node.cpp:
+        (WebCore::Node::reportMemoryUsage):
+        * dom/WebCoreMemoryInstrumentation.cpp:
+        (WebCore):
+        * inspector/InspectorMemoryAgent.cpp:
+        (WebCore::reportRenderTreeInfo):
+        (WebCore):
+        * platform/PlatformMemoryInstrumentation.cpp:
+        (WebCore):
+        * platform/PlatformMemoryInstrumentation.h:
+        (PlatformMemoryTypes):
+        * platform/graphics/GraphicsLayer.cpp:
+        (WebCore::GraphicsLayer::reportMemoryUsage):
+        (WebCore):
+        * platform/graphics/GraphicsLayer.h:
+        (GraphicsLayer):
+        * platform/graphics/chromium/GraphicsLayerChromium.cpp:
+        (WebCore::GraphicsLayerChromium::reportMemoryUsage):
+        (WebCore):
+        * platform/graphics/chromium/GraphicsLayerChromium.h:
+        (GraphicsLayerChromium):
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderBlock.h:
+        (RenderBlock):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderBox.h:
+        (RenderBox):
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderInline.h:
+        (RenderInline):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderLayer.h:
+        (RenderLayer):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderLayerBacking.h:
+        (RenderLayerBacking):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderLayerCompositor.h:
+        (RenderLayerCompositor):
+        * rendering/RenderLayerModelObject.cpp:
+        (WebCore::RenderLayerModelObject::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderLayerModelObject.h:
+        (RenderLayerModelObject):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderObject.h:
+        (RenderObject):
+        * rendering/RenderText.cpp:
+        (WebCore::RenderText::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderText.h:
+        (RenderText):
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::reportMemoryUsage):
+        (WebCore):
+        * rendering/RenderView.h:
+        (RenderView):
+
 2012-12-09  Ryosuke Niwa  <[email protected]>
 
         REGRESSION (r137003): failures in MicroData tests on EFL, GTK

Modified: trunk/Source/WebCore/WebCore.exp.in (137107 => 137108)


--- trunk/Source/WebCore/WebCore.exp.in	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/WebCore.exp.in	2012-12-10 06:16:45 UTC (rev 137108)
@@ -84,6 +84,7 @@
 __ZNK7WebCore10ShadowRoot17hasContentElementEv
 __ZNK7WebCore10ShadowRoot18countElementShadowEv
 __ZNK7WebCore10ShadowRoot23hasShadowInsertionPointEv
+__ZNK7WebCore14ScrollableArea17reportMemoryUsageEPN3WTF16MemoryObjectInfoE
 __ZN7WebCore10ShadowRoot6createEPNS_7ElementERi
 __ZN7WebCore10deleteFileERKN3WTF6StringE
 __ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKN3WTF6StringE
@@ -1206,6 +1207,7 @@
 __ZNK7WebCore13HitTestResult5imageEv
 __ZNK7WebCore13HitTestResult5titleERNS_13TextDirectionE
 __ZNK7WebCore13HitTestResult9imageRectEv
+__ZNK7WebCore13GraphicsLayer17reportMemoryUsageEPN3WTF16MemoryObjectInfoE
 __ZNK7WebCore13ResourceError7cfErrorEv
 __ZNK7WebCore13ResourceError7nsErrorEv
 __ZNK7WebCore13ResourceErrorcvP7NSErrorEv

Modified: trunk/Source/WebCore/dom/Node.cpp (137107 => 137108)


--- trunk/Source/WebCore/dom/Node.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/dom/Node.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -2729,8 +2729,7 @@
     info.addMember(m_document);
     info.addMember(m_next);
     info.addMember(m_previous);
-    if (RenderObject* renderer = this->renderer())
-        info.addMember(renderer->style());
+    info.addMember(this->renderer());
     if (hasRareData())
         info.addMember(rareData());
 }

Modified: trunk/Source/WebCore/inspector/InspectorMemoryAgent.cpp (137107 => 137108)


--- trunk/Source/WebCore/inspector/InspectorMemoryAgent.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/inspector/InspectorMemoryAgent.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -85,6 +85,14 @@
     {
         m_sizesMap = m_client->sizesMap();
 
+        // FIXME: We filter out Rendering type because the coverage is not good enough at the moment
+        // and report RenderArena size instead.
+        for (TypeNameToSizeMap::iterator i = m_sizesMap.begin(); i != m_sizesMap.end(); ++i) {
+            if (i->key == PlatformMemoryTypes::Rendering) {
+                m_sizesMap.remove(i);
+                break;
+            }
+        }
         Vector<String> objectTypes;
         objectTypes.appendRange(m_sizesMap.keys().begin(), m_sizesMap.keys().end());
 

Modified: trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.cpp (137107 => 137108)


--- trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -39,6 +39,8 @@
 
 MemoryObjectType PlatformMemoryTypes::Image = "Page.Image";
 MemoryObjectType PlatformMemoryTypes::Loader = "Page.Loader";
+MemoryObjectType PlatformMemoryTypes::Rendering = "Page.Rendering";
+MemoryObjectType PlatformMemoryTypes::Layers = "Page.Rendering.Layers";
 
 MemoryObjectType PlatformMemoryTypes::Audio = "Page.Audio";
 MemoryObjectType PlatformMemoryTypes::AudioSharedData = "Page.Audio.SharedData";

Modified: trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.h (137107 => 137108)


--- trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/PlatformMemoryInstrumentation.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -43,6 +43,8 @@
 public:
     static MemoryObjectType Image;
     static MemoryObjectType Loader;
+    static MemoryObjectType Rendering;
+    static MemoryObjectType Layers;
 
     static MemoryObjectType Audio;
     static MemoryObjectType AudioSharedData;

Modified: trunk/Source/WebCore/platform/ScrollableArea.cpp (137107 => 137108)


--- trunk/Source/WebCore/platform/ScrollableArea.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/ScrollableArea.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -35,6 +35,7 @@
 #include "GraphicsContext.h"
 #include "GraphicsLayer.h"
 #include "FloatPoint.h"
+#include "PlatformMemoryInstrumentation.h"
 #include "PlatformWheelEvent.h"
 #include "ScrollAnimator.h"
 #include "ScrollbarTheme.h"
@@ -420,4 +421,10 @@
                    std::max(0, visibleHeight() + horizontalScrollbarHeight));
 }
 
+void ScrollableArea::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this);
+    info.addMember(m_scrollAnimator);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/ScrollableArea.h (137107 => 137108)


--- trunk/Source/WebCore/platform/ScrollableArea.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/ScrollableArea.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -174,6 +174,8 @@
     virtual bool usesCompositedScrolling() const { return false; }
 #endif
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const;
+
 protected:
     ScrollableArea();
     virtual ~ScrollableArea();

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp (137107 => 137108)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -33,9 +33,11 @@
 #include "FloatRect.h"
 #include "GraphicsContext.h"
 #include "LayoutRect.h"
+#include "PlatformMemoryInstrumentation.h"
 #include "RotateTransformOperation.h"
 #include "TextStream.h"
 #include <wtf/HashMap.h>
+#include <wtf/MemoryInstrumentationVector.h>
 #include <wtf/text/CString.h>
 #include <wtf/text/StringBuilder.h>
 #include <wtf/text/WTFString.h>
@@ -737,6 +739,16 @@
     return ts.release();
 }
 
+void GraphicsLayer::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Layers);
+    info.addMember(m_children);
+    info.addMember(m_parent);
+    info.addMember(m_maskLayer);
+    info.addMember(m_replicaLayer);
+    info.addMember(m_replicatedLayer);
+}
+
 } // namespace WebCore
 
 #ifndef NDEBUG

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.h (137107 => 137108)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -436,6 +436,8 @@
 
     void updateDebugIndicators();
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const;
+
 protected:
     // Should be called from derived class destructors. Should call willBeDestroyed() on super.
     virtual void willBeDestroyed();

Modified: trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp (137107 => 137108)


--- trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -53,6 +53,7 @@
 #include "Image.h"
 #include "NativeImageSkia.h"
 #include "PlatformContextSkia.h"
+#include "PlatformMemoryInstrumentation.h"
 #include "ScrollableArea.h"
 #include "SkImageFilter.h"
 #include "SkMatrix44.h"
@@ -70,6 +71,7 @@
 #include <public/WebTransformationMatrix.h>
 #include <wtf/CurrentTime.h>
 #include <wtf/HashSet.h>
+#include <wtf/MemoryInstrumentationHashMap.h>
 #include <wtf/StringExtras.h>
 #include <wtf/text/CString.h>
 #include <wtf/text/StringHash.h>
@@ -879,6 +881,21 @@
         m_scrollableArea->scrollToOffsetWithoutAnimation(IntPoint(m_layer->layer()->scrollPosition()));
 }
 
+void GraphicsLayerChromium::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Layers);
+    GraphicsLayer::reportMemoryUsage(memoryObjectInfo);
+    info.addMember(m_nameBase);
+    info.addMember(m_layer);
+    info.addMember(m_transformLayer);
+    info.addMember(m_imageLayer);
+    info.addMember(m_contentsLayer);
+    info.addMember(m_linkHighlight);
+    info.addMember(m_opaqueRectTrackingContentLayerDelegate);
+    info.addMember(m_animationIdMap);
+    info.addMember(m_scrollableArea);
+}
+
 } // namespace WebCore
 
 #endif // USE(ACCELERATED_COMPOSITING)

Modified: trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h (137107 => 137108)


--- trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -152,6 +152,8 @@
     // Exposed for tests.
     WebKit::WebLayer* contentsLayer() const { return m_contentsLayer; }
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 private:
     void updateNames();
     void updateChildList();

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -61,6 +61,7 @@
 #include "SVGTextRunRenderingContext.h"
 #include "ShadowRoot.h"
 #include "TransformState.h"
+#include "WebCoreMemoryInstrumentation.h"
 #include <wtf/StdLibExtras.h>
 #if ENABLE(CSS_EXCLUSIONS)
 #include "ExclusionShapeInsideInfo.h"
@@ -7730,4 +7731,14 @@
 
 #endif
 
+void RenderBlock::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderBox::reportMemoryUsage(memoryObjectInfo);
+    info.addMember(m_floatingObjects);
+    info.addMember(m_rareData);
+    info.addMember(m_children);
+    info.addMember(m_lineBoxes);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderBlock.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderBlock.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderBlock.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -522,6 +522,8 @@
 
     virtual void checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight);
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 private:
 #if ENABLE(CSS_EXCLUSIONS)
     void computeExclusionShapeSize();

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -54,6 +54,7 @@
 #include "RenderView.h"
 #include "ScrollbarTheme.h"
 #include "TransformState.h"
+#include "WebCoreMemoryInstrumentation.h"
 #include <algorithm>
 #include <math.h>
 
@@ -4231,4 +4232,12 @@
     return beforeChild;
 }
 
+void RenderBox::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderBoxModelObject::reportMemoryUsage(memoryObjectInfo);
+    info.addWeakPointer(m_inlineBoxWrapper);
+    info.addMember(m_overflow);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderBox.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderBox.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderBox.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -600,6 +600,8 @@
 
     RenderObject* splitAnonymousBoxesAroundChild(RenderObject* beforeChild);
  
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 private:
     bool fixedElementLaysOutRelativeToFrame(Frame*, FrameView*) const;
 

Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderInline.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -39,6 +39,7 @@
 #include "StyleInheritedData.h"
 #include "TransformState.h"
 #include "VisiblePosition.h"
+#include "WebCoreMemoryInstrumentation.h"
 
 #include <wtf/TemporaryChange.h>
 
@@ -1644,4 +1645,12 @@
 }
 #endif
 
+void RenderInline::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderBoxModelObject::reportMemoryUsage(memoryObjectInfo);
+    info.addMember(m_children);
+    info.addMember(m_lineBoxes);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderInline.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderInline.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderInline.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -91,6 +91,8 @@
 
     bool hitTestCulledInline(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset);
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 protected:
     virtual void willBeDestroyed();
 

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -99,6 +99,8 @@
 #include "TextStream.h"
 #include "TransformationMatrix.h"
 #include "TranslateTransformOperation.h"
+#include "WebCoreMemoryInstrumentation.h"
+#include <wtf/MemoryInstrumentationVector.h>
 #include <wtf/StdLibExtras.h>
 #include <wtf/UnusedParam.h>
 #include <wtf/text/CString.h>
@@ -5418,6 +5420,32 @@
 }
 #endif
 
+void RenderLayer::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Rendering);
+    ScrollableArea::reportMemoryUsage(memoryObjectInfo);
+    info.addWeakPointer(m_renderer);
+    info.addWeakPointer(m_parent);
+    info.addWeakPointer(m_previous);
+    info.addWeakPointer(m_next);
+    info.addWeakPointer(m_first);
+    info.addWeakPointer(m_last);
+    info.addMember(m_hBar);
+    info.addMember(m_vBar);
+    info.addMember(m_posZOrderList);
+    info.addMember(m_negZOrderList);
+    info.addMember(m_normalFlowList);
+    info.addMember(m_clipRectsCache);
+    info.addMember(m_marquee);
+    info.addMember(m_transform);
+    info.addWeakPointer(m_reflection);
+    info.addWeakPointer(m_scrollCorner);
+    info.addWeakPointer(m_resizer);
+#if USE(ACCELERATED_COMPOSITING)
+    info.addMember(m_backing);
+#endif
+}
+
 } // namespace WebCore
 
 #ifndef NDEBUG

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -709,6 +709,8 @@
     bool isInTopLayerSubtree() const;
 #endif
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 private:
     void updateZOrderLists();
     void rebuildZOrderLists();

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -55,6 +55,7 @@
 #include "Settings.h"
 #include "StyleResolver.h"
 #include "TiledBacking.h"
+#include "WebCoreMemoryInstrumentation.h"
 #include <wtf/CurrentTime.h>
 #include <wtf/text/StringBuilder.h>
 
@@ -2030,6 +2031,22 @@
 }
 #endif
 
+void RenderLayerBacking::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    info.addWeakPointer(m_owningLayer);
+    info.addMember(m_ancestorClippingLayer);
+    info.addMember(m_graphicsLayer);
+    info.addMember(m_foregroundLayer);
+    info.addMember(m_containmentLayer);
+    info.addMember(m_maskLayer);
+    info.addMember(m_layerForHorizontalScrollbar);
+    info.addMember(m_layerForVerticalScrollbar);
+    info.addMember(m_layerForScrollCorner);
+    info.addMember(m_scrollingLayer);
+    info.addMember(m_scrollingContentsLayer);
+}
+
 } // namespace WebCore
 
 #endif // USE(ACCELERATED_COMPOSITING)

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -185,6 +185,7 @@
 #if ENABLE(CSS_COMPOSITING)
     void setBlendMode(BlendMode);
 #endif
+    void reportMemoryUsage(MemoryObjectInfo*) const;
 
 private:
     void createPrimaryGraphicsLayer();

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -58,6 +58,7 @@
 #include "Settings.h"
 #include "TiledBacking.h"
 #include "TransformState.h"
+#include "WebCoreMemoryInstrumentation.h"
 
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
 #include "HTMLMediaElement.h"
@@ -2777,6 +2778,27 @@
     return 0;
 }
 
+void RenderLayerCompositor::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    info.addWeakPointer(m_renderView);
+    info.addMember(m_rootContentLayer);
+    info.addMember(m_updateCompositingLayersTimer);
+    info.addMember(m_clipLayer);
+    info.addMember(m_scrollLayer);
+    info.addMember(m_viewportConstrainedLayers);
+    info.addMember(m_viewportConstrainedLayersNeedingUpdate);
+    info.addMember(m_overflowControlsHostLayer);
+    info.addMember(m_layerForHorizontalScrollbar);
+    info.addMember(m_layerForVerticalScrollbar);
+    info.addMember(m_layerForScrollCorner);
+#if ENABLE(RUBBER_BANDING)
+    info.addMember(m_layerForOverhangAreas);
+    info.addMember(m_contentShadowLayer);
+#endif
+    info.addMember(m_layerUpdater);
+}
+
 } // namespace WebCore
 
 #endif // USE(ACCELERATED_COMPOSITING)

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -227,6 +227,8 @@
     void resetTrackedRepaintRects();
     void setTracksRepaints(bool);
 
+    void reportMemoryUsage(MemoryObjectInfo*) const;
+
 private:
     class OverlapMap;
 

Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -27,6 +27,7 @@
 
 #include "RenderLayer.h"
 #include "RenderView.h"
+#include "WebCoreMemoryInstrumentation.h"
 
 using namespace std;
 
@@ -174,5 +175,12 @@
     }
 }
 
+void RenderLayerModelObject::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderObject::reportMemoryUsage(memoryObjectInfo);
+    info.addWeakPointer(m_layer);
+}
+
 } // namespace WebCore
 

Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderLayerModelObject.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -46,6 +46,8 @@
 
     virtual bool requiresLayer() const = 0;
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 protected:
     void ensureLayer();
 

Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderObject.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -68,6 +68,7 @@
 #include "Settings.h"
 #include "StyleResolver.h"
 #include "TransformState.h"
+#include "WebCoreMemoryInstrumentation.h"
 #include "htmlediting.h"
 #include <algorithm>
 #include <stdio.h>
@@ -3083,6 +3084,16 @@
     return true;
 }
 
+void RenderObject::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    info.addMember(m_style);
+    info.addWeakPointer(m_node);
+    info.addWeakPointer(m_parent);
+    info.addWeakPointer(m_previous);
+    info.addWeakPointer(m_next);
+}
+
 #if ENABLE(SVG)
 
 RenderSVGResourceContainer* RenderObject::toRenderSVGResourceContainer()

Modified: trunk/Source/WebCore/rendering/RenderObject.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderObject.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderObject.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -282,6 +282,8 @@
     virtual bool createsAnonymousWrapper() const { return false; }
     //////////////////////////////////////////
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const;
+
 protected:
     //////////////////////////////////////////
     // Helper functions. Dangerous to use!

Modified: trunk/Source/WebCore/rendering/RenderText.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderText.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderText.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -43,6 +43,7 @@
 #include "TextBreakIterator.h"
 #include "TextResourceDecoder.h"
 #include "VisiblePosition.h"
+#include "WebCoreMemoryInstrumentation.h"
 #include "break_lines.h"
 #include <wtf/AlwaysInline.h>
 #include <wtf/text/StringBuffer.h>
@@ -1930,4 +1931,13 @@
     secureTextTimer->restartWithNewText(lastTypedCharacterOffset);
 }
 
+void RenderText::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderObject::reportMemoryUsage(memoryObjectInfo);
+    info.addMember(m_text);
+    info.addMember(m_firstTextBox);
+    info.addMember(m_lastTextBox);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderText.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderText.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderText.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -144,6 +144,8 @@
 
     void removeAndDestroyTextBoxes();
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 protected:
     virtual void willBeDestroyed();
 

Modified: trunk/Source/WebCore/rendering/RenderView.cpp (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderView.cpp	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderView.cpp	2012-12-10 06:16:45 UTC (rev 137108)
@@ -40,6 +40,7 @@
 #include "RenderWidgetProtector.h"
 #include "StyleInheritedData.h"
 #include "TransformState.h"
+#include "WebCoreMemoryInstrumentation.h"
 
 #if USE(ACCELERATED_COMPOSITING)
 #include "RenderLayerCompositor.h"
@@ -1010,4 +1011,24 @@
     return m_intervalArena.get();
 }
 
+void RenderView::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering);
+    RenderBlock::reportMemoryUsage(memoryObjectInfo);
+    info.addWeakPointer(m_frameView);
+    info.addWeakPointer(m_selectionStart);
+    info.addWeakPointer(m_selectionEnd);
+    info.addMember(m_widgets);
+    info.addMember(m_layoutState);
+#if USE(ACCELERATED_COMPOSITING)
+    info.addMember(m_compositor);
+#endif
+#if ENABLE(CSS_SHADERS) && USE(3D_GRAPHICS)
+    info.addMember(m_customFilterGlobalContext);
+#endif
+    info.addMember(m_flowThreadController);
+    info.addMember(m_intervalArena);
+    info.addWeakPointer(m_renderQuoteHead);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderView.h (137107 => 137108)


--- trunk/Source/WebCore/rendering/RenderView.h	2012-12-10 05:39:08 UTC (rev 137107)
+++ trunk/Source/WebCore/rendering/RenderView.h	2012-12-10 06:16:45 UTC (rev 137108)
@@ -283,6 +283,8 @@
     friend class LayoutStateMaintainer;
     friend class LayoutStateDisabler;
 
+    virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
+
 protected:
     FrameView* m_frameView;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to