Title: [87639] trunk/Source/WebCore
Revision
87639
Author
[email protected]
Date
2011-05-29 12:00:11 -0700 (Sun, 29 May 2011)

Log Message

https://bugs.webkit.org/show_bug.cgi?id=61700
Need WebKit2 API to get the size of the render tree
-and corresponding-
<rdar://problem/9512733>

Patch by Beth Dakin <[email protected]> on 2011-05-29
Reviewed by Darin Adler.

New member variable on RenderArena keeps track of the current amount of memory 
allocated in the arena. The new client function sends this piece of data to 
WebKit.
* page/ChromeClient.h:
(WebCore::ChromeClient::setRenderTreeSize):
* page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks):
* rendering/RenderArena.cpp:
(WebCore::RenderArena::RenderArena):
(WebCore::RenderArena::allocate):
(WebCore::RenderArena::free):
* rendering/RenderArena.h:
(WebCore::RenderArena::totalRenderArenaSize):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (87638 => 87639)


--- trunk/Source/WebCore/ChangeLog	2011-05-29 18:13:14 UTC (rev 87638)
+++ trunk/Source/WebCore/ChangeLog	2011-05-29 19:00:11 UTC (rev 87639)
@@ -1,3 +1,26 @@
+2011-05-29  Beth Dakin  <[email protected]>
+
+        Reviewed by Darin Adler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=61700
+        Need WebKit2 API to get the size of the render tree
+        -and corresponding-
+        <rdar://problem/9512733>
+
+        New member variable on RenderArena keeps track of the current amount of memory 
+        allocated in the arena. The new client function sends this piece of data to 
+        WebKit.
+        * page/ChromeClient.h:
+        (WebCore::ChromeClient::setRenderTreeSize):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::performPostLayoutTasks):
+        * rendering/RenderArena.cpp:
+        (WebCore::RenderArena::RenderArena):
+        (WebCore::RenderArena::allocate):
+        (WebCore::RenderArena::free):
+        * rendering/RenderArena.h:
+        (WebCore::RenderArena::totalRenderArenaSize):
+
 2011-05-29  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r87566.

Modified: trunk/Source/WebCore/page/ChromeClient.h (87638 => 87639)


--- trunk/Source/WebCore/page/ChromeClient.h	2011-05-29 18:13:14 UTC (rev 87638)
+++ trunk/Source/WebCore/page/ChromeClient.h	2011-05-29 19:00:11 UTC (rev 87639)
@@ -324,6 +324,8 @@
         virtual void willRunModalDialogDuringPageDismissal(const DialogType&) const { }
 
         virtual void numWheelEventHandlersChanged(unsigned) = 0;
+
+        virtual void setRenderTreeSize(size_t) { }
         
     protected:
         virtual ~ChromeClient() { }

Modified: trunk/Source/WebCore/page/FrameView.cpp (87638 => 87639)


--- trunk/Source/WebCore/page/FrameView.cpp	2011-05-29 18:13:14 UTC (rev 87638)
+++ trunk/Source/WebCore/page/FrameView.cpp	2011-05-29 19:00:11 UTC (rev 87639)
@@ -50,6 +50,7 @@
 #include "HTMLPlugInImageElement.h"
 #include "InspectorInstrumentation.h"
 #include "OverflowEvent.h"
+#include "RenderArena.h"
 #include "RenderEmbeddedObject.h"
 #include "RenderFullScreen.h"
 #include "RenderLayer.h"
@@ -2061,6 +2062,11 @@
         m_lastZoomFactor = currentZoomFactor;
         if (resized)
             m_frame->eventHandler()->sendResizeEvent();
+
+        if (Page* page = m_frame->page()) {
+            if (m_frame->page()->mainFrame() == m_frame)
+                page->chrome()->client()->setRenderTreeSize(m_frame->document()->renderArena()->totalRenderArenaSize());
+        }
     }
 }
 

Modified: trunk/Source/WebCore/rendering/RenderArena.cpp (87638 => 87639)


--- trunk/Source/WebCore/rendering/RenderArena.cpp	2011-05-29 18:13:14 UTC (rev 87638)
+++ trunk/Source/WebCore/rendering/RenderArena.cpp	2011-05-29 19:00:11 UTC (rev 87639)
@@ -66,6 +66,8 @@
 
     // Zero out the recyclers array
     memset(m_recyclers, 0, sizeof(m_recyclers));
+
+    m_totalSize = 0;
 }
 
 RenderArena::~RenderArena()
@@ -75,6 +77,8 @@
 
 void* RenderArena::allocate(size_t size)
 {
+    m_totalSize += size;
+
 #ifndef NDEBUG
     // Use standard malloc so that memory debugging tools work.
     ASSERT(this);
@@ -113,6 +117,8 @@
 
 void RenderArena::free(size_t size, void* ptr)
 {
+    m_totalSize -= size;
+
 #ifndef NDEBUG
     // Use standard free so that memory debugging tools work.
     void* block = static_cast<char*>(ptr) - debugHeaderSize;

Modified: trunk/Source/WebCore/rendering/RenderArena.h (87638 => 87639)


--- trunk/Source/WebCore/rendering/RenderArena.h	2011-05-29 18:13:14 UTC (rev 87638)
+++ trunk/Source/WebCore/rendering/RenderArena.h	2011-05-29 19:00:11 UTC (rev 87639)
@@ -53,6 +53,8 @@
     void* allocate(size_t);
     void free(size_t, void*);
 
+    size_t totalRenderArenaSize() const { return m_totalSize; }
+
 private:
     // Underlying arena pool
     ArenaPool m_pool;
@@ -60,6 +62,8 @@
     // The recycler array is sparse with the indices being multiples of 4,
     // i.e., 0, 4, 8, 12, 16, 20, ...
     void* m_recyclers[gMaxRecycledSize >> 2];
+
+    size_t m_totalSize;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to