Changeset 87639 in webkit


Ignore:
Timestamp:
May 29, 2011 12:00:11 PM (13 years ago)
Author:
Darin Adler
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 <Beth Dakin> 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):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87635 r87639  
     12011-05-29  Beth Dakin  <bdakin@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=61700
     6        Need WebKit2 API to get the size of the render tree
     7        -and corresponding-
     8        <rdar://problem/9512733>
     9
     10        New member variable on RenderArena keeps track of the current amount of memory
     11        allocated in the arena. The new client function sends this piece of data to
     12        WebKit.
     13        * page/ChromeClient.h:
     14        (WebCore::ChromeClient::setRenderTreeSize):
     15        * page/FrameView.cpp:
     16        (WebCore::FrameView::performPostLayoutTasks):
     17        * rendering/RenderArena.cpp:
     18        (WebCore::RenderArena::RenderArena):
     19        (WebCore::RenderArena::allocate):
     20        (WebCore::RenderArena::free):
     21        * rendering/RenderArena.h:
     22        (WebCore::RenderArena::totalRenderArenaSize):
     23
    1242011-05-29  Sheriff Bot  <webkit.review.bot@gmail.com>
    225
  • trunk/Source/WebCore/page/ChromeClient.h

    r87521 r87639  
    325325
    326326        virtual void numWheelEventHandlersChanged(unsigned) = 0;
     327
     328        virtual void setRenderTreeSize(size_t) { }
    327329       
    328330    protected:
  • trunk/Source/WebCore/page/FrameView.cpp

    r87521 r87639  
    5151#include "InspectorInstrumentation.h"
    5252#include "OverflowEvent.h"
     53#include "RenderArena.h"
    5354#include "RenderEmbeddedObject.h"
    5455#include "RenderFullScreen.h"
     
    20622063        if (resized)
    20632064            m_frame->eventHandler()->sendResizeEvent();
     2065
     2066        if (Page* page = m_frame->page()) {
     2067            if (m_frame->page()->mainFrame() == m_frame)
     2068                page->chrome()->client()->setRenderTreeSize(m_frame->document()->renderArena()->totalRenderArenaSize());
     2069        }
    20642070    }
    20652071}
  • trunk/Source/WebCore/rendering/RenderArena.cpp

    r59525 r87639  
    6767    // Zero out the recyclers array
    6868    memset(m_recyclers, 0, sizeof(m_recyclers));
     69
     70    m_totalSize = 0;
    6971}
    7072
     
    7678void* RenderArena::allocate(size_t size)
    7779{
     80    m_totalSize += size;
     81
    7882#ifndef NDEBUG
    7983    // Use standard malloc so that memory debugging tools work.
     
    114118void RenderArena::free(size_t size, void* ptr)
    115119{
     120    m_totalSize -= size;
     121
    116122#ifndef NDEBUG
    117123    // Use standard free so that memory debugging tools work.
  • trunk/Source/WebCore/rendering/RenderArena.h

    r76248 r87639  
    5454    void free(size_t, void*);
    5555
     56    size_t totalRenderArenaSize() const { return m_totalSize; }
     57
    5658private:
    5759    // Underlying arena pool
     
    6163    // i.e., 0, 4, 8, 12, 16, 20, ...
    6264    void* m_recyclers[gMaxRecycledSize >> 2];
     65
     66    size_t m_totalSize;
    6367};
    6468
Note: See TracChangeset for help on using the changeset viewer.