Changeset 125763 in webkit


Ignore:
Timestamp:
Aug 16, 2012 2:18:34 AM (12 years ago)
Author:
yurys@chromium.org
Message:

Web Inspector: memory instrumentation for Resource{Request/Response}Base
https://bugs.webkit.org/show_bug.cgi?id=94109

Reviewed by Vsevolod Vlasov.

Added reportMemoryUsage methods to ResourceRequestBase, ResourceResponseBase
and several related classes.

  • dom/MemoryInstrumentation.cpp:

(WebCore::MemoryInstrumentation::addInstrumentedObjectImpl): added overrides
for String, StringImpl and AtomicString object types so that we can reuse
existing addInstrumentedCollection method instead of adding a counterpart
that would operate on not instrumented content. Next step would be to get
rid od addObject overrides for these types so that all kinds of Strings are
considered as instrumented classes despite they don't have reportMemoryUsage
method.
(WebCore):

  • dom/MemoryInstrumentation.h:

(WebCore::MemoryInstrumentation::addInstrumentedObjectImpl):
(MemoryInstrumentation):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::reportMemoryUsage):

  • platform/network/FormData.cpp:

(WebCore::FormData::reportMemoryUsage):
(WebCore):

  • platform/network/FormData.h:

(WebCore):
(FormData):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::reportMemoryUsage):
(WebCore):

  • platform/network/ResourceRequestBase.h:

(ResourceRequestBase):

  • platform/network/ResourceResponseBase.cpp:

(WebCore):
(WebCore::ResourceResponseBase::reportMemoryUsage):

  • platform/network/ResourceResponseBase.h:

(WebCore):
(ResourceResponseBase):

Location:
trunk/Source/WebCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r125761 r125763  
     12012-08-16  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Web Inspector: memory instrumentation for Resource{Request/Response}Base
     4        https://bugs.webkit.org/show_bug.cgi?id=94109
     5
     6        Reviewed by Vsevolod Vlasov.
     7
     8        Added reportMemoryUsage methods to ResourceRequestBase, ResourceResponseBase
     9        and several related classes.
     10
     11        * dom/MemoryInstrumentation.cpp:
     12        (WebCore::MemoryInstrumentation::addInstrumentedObjectImpl): added overrides
     13        for String, StringImpl and AtomicString object types so that we can reuse
     14        existing addInstrumentedCollection method instead of adding a counterpart
     15        that would operate on not instrumented content. Next step would be to get
     16        rid od addObject overrides for these types so that all kinds of Strings are
     17        considered as instrumented classes despite they don't have reportMemoryUsage
     18        method.
     19        (WebCore):
     20        * dom/MemoryInstrumentation.h:
     21        (WebCore::MemoryInstrumentation::addInstrumentedObjectImpl):
     22        (MemoryInstrumentation):
     23        * loader/DocumentLoader.cpp:
     24        (WebCore::DocumentLoader::reportMemoryUsage):
     25        * platform/network/FormData.cpp:
     26        (WebCore::FormData::reportMemoryUsage):
     27        (WebCore):
     28        * platform/network/FormData.h:
     29        (WebCore):
     30        (FormData):
     31        * platform/network/ResourceRequestBase.cpp:
     32        (WebCore::ResourceRequestBase::reportMemoryUsage):
     33        (WebCore):
     34        * platform/network/ResourceRequestBase.h:
     35        (ResourceRequestBase):
     36        * platform/network/ResourceResponseBase.cpp:
     37        (WebCore):
     38        (WebCore::ResourceResponseBase::reportMemoryUsage):
     39        * platform/network/ResourceResponseBase.h:
     40        (WebCore):
     41        (ResourceResponseBase):
     42
    1432012-08-16  Adam Barth  <abarth@webkit.org>
    244
  • trunk/Source/WebCore/dom/MemoryInstrumentation.cpp

    r125265 r125763  
    5959}
    6060
     61void MemoryInstrumentation::addInstrumentedObjectImpl(const AtomicString* const& string, ObjectType objectType, OwningType)
     62{
     63    addObject(static_cast<const String&>(*string), objectType);
     64}
     65
    6166} // namespace WebCore
  • trunk/Source/WebCore/dom/MemoryInstrumentation.h

    r125265 r125763  
    138138    };
    139139
     140    // FIXME: get rid of addObject(String)
     141    void addInstrumentedObjectImpl(const String* const& string, ObjectType objectType, OwningType) { addObject(*string, objectType); }
     142    void addInstrumentedObjectImpl(const StringImpl* const& string, ObjectType objectType, OwningType) { addObject(string, objectType); }
     143    void addInstrumentedObjectImpl(const AtomicString* const&, ObjectType, OwningType);
    140144    template <typename T> void addInstrumentedObjectImpl(const T* const&, ObjectType, OwningType);
    141145    template <typename T> void addInstrumentedObjectImpl(const DataRef<T>* const&, ObjectType, OwningType);
  • trunk/Source/WebCore/loader/DocumentLoader.cpp

    r125615 r125763  
    364364    info.addInstrumentedHashSet(m_multipartSubresourceLoaders);
    365365    info.addInstrumentedHashSet(m_plugInStreamLoaders);
     366    info.addInstrumentedMember(m_substituteData);
    366367    info.addMember(m_pageTitle.string());
    367368    info.addMember(m_overrideEncoding);
    368369    info.addVector(m_responses);
     370    info.addInstrumentedMember(m_originalRequest);
     371    info.addInstrumentedMember(m_originalRequestCopy);
     372    info.addInstrumentedMember(m_request);
     373    info.addInstrumentedMember(m_response);
     374    info.addInstrumentedMember(m_lastCheckedRequest);
     375    info.addInstrumentedVector(m_responses);
    369376    info.addHashMap(m_pendingSubstituteResources);
    370     info.addHashSet(m_resourcesClientKnowsAbout);
     377    info.addInstrumentedHashSet(m_resourcesClientKnowsAbout);
    371378    info.addVector(m_resourcesLoadedFromMemoryCacheForClientNotification);
    372379    info.addMember(m_clientRedirectSourceForHistory);
  • trunk/Source/WebCore/platform/network/FormData.cpp

    r125391 r125763  
    3333#include "FormDataList.h"
    3434#include "MIMETypeRegistry.h"
     35#include "MemoryInstrumentation.h"
    3536#include "Page.h"
    3637#include "TextEncoding.h"
     
    357358}
    358359
     360void FormData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
     361{
     362    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
     363    info.addVector(m_boundary);
     364}
     365
    359366static void encode(Encoder& encoder, const FormDataElement& element)
    360367{
  • trunk/Source/WebCore/platform/network/FormData.h

    r125391 r125763  
    3131class Document;
    3232class FormDataList;
     33class MemoryObjectInfo;
    3334class TextEncoding;
    3435
     
    153154    void setContainsPasswordData(bool containsPasswordData) { m_containsPasswordData = containsPasswordData; }
    154155
     156    void reportMemoryUsage(MemoryObjectInfo*) const;
     157
    155158    static EncodingType parseEncodingType(const String& type)
    156159    {
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r112555 r125763  
    2525 */
    2626#include "config.h"
    27 
    2827#include "ResourceRequestBase.h"
     28
     29#include "MemoryInstrumentation.h"
    2930#include "ResourceRequest.h"
    3031
     
    444445}
    445446
     447void ResourceRequestBase::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
     448{
     449    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
     450    info.addMember(m_url);
     451    info.addMember(m_firstPartyForCookies);
     452    info.addInstrumentedMember(m_httpMethod);
     453    info.addHashMap(m_httpHeaderFields);
     454    info.addInstrumentedMapEntries(m_httpHeaderFields);
     455    info.addInstrumentedVector(m_responseContentDispositionEncodingFallbackArray);
     456    info.addInstrumentedMember(m_httpBody);
     457}
     458
    446459double ResourceRequestBase::defaultTimeoutInterval()
    447460{
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r112217 r125763  
    4545    };
    4646
     47    class MemoryObjectInfo;
    4748    class ResourceRequest;
    4849    struct CrossThreadResourceRequestData;
     
    132133        bool reportRawHeaders() const { return m_reportRawHeaders; }
    133134        void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; }
     135
     136        void reportMemoryUsage(MemoryObjectInfo*) const;
    134137
    135138        static double defaultTimeoutInterval(); // May return 0 when using platform default.
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp

    r115290 r125763  
    2929
    3030#include "HTTPParsers.h"
     31#include "MemoryInstrumentation.h"
    3132#include "ResourceResponse.h"
    3233#include <wtf/CurrentTime.h>
     
    566567{
    567568    const_cast<ResourceResponse*>(static_cast<const ResourceResponse*>(this))->platformLazyInit(initLevel);
     569}
     570
     571void ResourceResponseBase::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
     572{
     573    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
     574    info.addMember(m_url);
     575    info.addInstrumentedMember(m_mimeType);
     576    info.addInstrumentedMember(m_textEncodingName);
     577    info.addInstrumentedMember(m_suggestedFilename);
     578    info.addInstrumentedMember(m_httpStatusText);
     579    info.addHashMap(m_httpHeaderFields);
     580    info.addInstrumentedMapEntries(m_httpHeaderFields);
     581    info.addMember(m_resourceLoadTiming);
     582    info.addMember(m_resourceLoadInfo);
    568583}
    569584   
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.h

    r87460 r125763  
    4242namespace WebCore {
    4343
     44class MemoryObjectInfo;
    4445class ResourceResponse;
    4546struct CrossThreadResourceResponseData;
     
    126127        return 1280;
    127128    }
     129
     130    void reportMemoryUsage(MemoryObjectInfo*) const;
    128131
    129132    static bool compare(const ResourceResponse&, const ResourceResponse&);
Note: See TracChangeset for help on using the changeset viewer.