Title: [125763] trunk/Source/WebCore
Revision
125763
Author
[email protected]
Date
2012-08-16 02:18:34 -0700 (Thu, 16 Aug 2012)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (125762 => 125763)


--- trunk/Source/WebCore/ChangeLog	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/ChangeLog	2012-08-16 09:18:34 UTC (rev 125763)
@@ -1,3 +1,45 @@
+2012-08-16  Yury Semikhatsky  <[email protected]>
+
+        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):
+
 2012-08-16  Adam Barth  <[email protected]>
 
         Delete DOMWindow::securityOrigin()

Modified: trunk/Source/WebCore/dom/MemoryInstrumentation.cpp (125762 => 125763)


--- trunk/Source/WebCore/dom/MemoryInstrumentation.cpp	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/dom/MemoryInstrumentation.cpp	2012-08-16 09:18:34 UTC (rev 125763)
@@ -58,4 +58,9 @@
         addObject(url.innerURL(), objectType);
 }
 
+void MemoryInstrumentation::addInstrumentedObjectImpl(const AtomicString* const& string, ObjectType objectType, OwningType)
+{
+    addObject(static_cast<const String&>(*string), objectType);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/MemoryInstrumentation.h (125762 => 125763)


--- trunk/Source/WebCore/dom/MemoryInstrumentation.h	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/dom/MemoryInstrumentation.h	2012-08-16 09:18:34 UTC (rev 125763)
@@ -137,6 +137,10 @@
         static void addObject(MemoryInstrumentation* instrumentation, const T* const& t, ObjectType ownerObjectType) { instrumentation->addObjectImpl(t, ownerObjectType, byPointer); }
     };
 
+    // FIXME: get rid of addObject(String)
+    void addInstrumentedObjectImpl(const String* const& string, ObjectType objectType, OwningType) { addObject(*string, objectType); }
+    void addInstrumentedObjectImpl(const StringImpl* const& string, ObjectType objectType, OwningType) { addObject(string, objectType); }
+    void addInstrumentedObjectImpl(const AtomicString* const&, ObjectType, OwningType);
     template <typename T> void addInstrumentedObjectImpl(const T* const&, ObjectType, OwningType);
     template <typename T> void addInstrumentedObjectImpl(const DataRef<T>* const&, ObjectType, OwningType);
     template <typename T> void addInstrumentedObjectImpl(const OwnPtr<T>* const&, ObjectType, OwningType);

Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (125762 => 125763)


--- trunk/Source/WebCore/loader/DocumentLoader.cpp	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp	2012-08-16 09:18:34 UTC (rev 125763)
@@ -363,11 +363,18 @@
     info.addInstrumentedHashSet(m_subresourceLoaders);
     info.addInstrumentedHashSet(m_multipartSubresourceLoaders);
     info.addInstrumentedHashSet(m_plugInStreamLoaders);
+    info.addInstrumentedMember(m_substituteData);
     info.addMember(m_pageTitle.string());
     info.addMember(m_overrideEncoding);
     info.addVector(m_responses);
+    info.addInstrumentedMember(m_originalRequest);
+    info.addInstrumentedMember(m_originalRequestCopy);
+    info.addInstrumentedMember(m_request);
+    info.addInstrumentedMember(m_response);
+    info.addInstrumentedMember(m_lastCheckedRequest);
+    info.addInstrumentedVector(m_responses);
     info.addHashMap(m_pendingSubstituteResources);
-    info.addHashSet(m_resourcesClientKnowsAbout);
+    info.addInstrumentedHashSet(m_resourcesClientKnowsAbout);
     info.addVector(m_resourcesLoadedFromMemoryCacheForClientNotification);
     info.addMember(m_clientRedirectSourceForHistory);
     info.addInstrumentedMember(m_mainResourceData);

Modified: trunk/Source/WebCore/platform/network/FormData.cpp (125762 => 125763)


--- trunk/Source/WebCore/platform/network/FormData.cpp	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/FormData.cpp	2012-08-16 09:18:34 UTC (rev 125763)
@@ -32,6 +32,7 @@
 #include "FormDataBuilder.h"
 #include "FormDataList.h"
 #include "MIMETypeRegistry.h"
+#include "MemoryInstrumentation.h"
 #include "Page.h"
 #include "TextEncoding.h"
 #include <wtf/Decoder.h>
@@ -356,6 +357,12 @@
     m_hasGeneratedFiles = false;
 }
 
+void FormData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
+    info.addVector(m_boundary);
+}
+
 static void encode(Encoder& encoder, const FormDataElement& element)
 {
     encoder.encodeUInt32(element.m_type);

Modified: trunk/Source/WebCore/platform/network/FormData.h (125762 => 125763)


--- trunk/Source/WebCore/platform/network/FormData.h	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/FormData.h	2012-08-16 09:18:34 UTC (rev 125763)
@@ -30,6 +30,7 @@
 
 class Document;
 class FormDataList;
+class MemoryObjectInfo;
 class TextEncoding;
 
 class FormDataElement {
@@ -152,6 +153,8 @@
     bool containsPasswordData() const { return m_containsPasswordData; }
     void setContainsPasswordData(bool containsPasswordData) { m_containsPasswordData = containsPasswordData; }
 
+    void reportMemoryUsage(MemoryObjectInfo*) const;
+
     static EncodingType parseEncodingType(const String& type)
     {
         if (equalIgnoringCase(type, "text/plain"))

Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp (125762 => 125763)


--- trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp	2012-08-16 09:18:34 UTC (rev 125763)
@@ -24,8 +24,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 #include "config.h"
+#include "ResourceRequestBase.h"
 
-#include "ResourceRequestBase.h"
+#include "MemoryInstrumentation.h"
 #include "ResourceRequest.h"
 
 using namespace std;
@@ -443,6 +444,18 @@
             m_httpHeaderFields.contains("If-Unmodified-Since"));
 }
 
+void ResourceRequestBase::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
+    info.addMember(m_url);
+    info.addMember(m_firstPartyForCookies);
+    info.addInstrumentedMember(m_httpMethod);
+    info.addHashMap(m_httpHeaderFields);
+    info.addInstrumentedMapEntries(m_httpHeaderFields);
+    info.addInstrumentedVector(m_responseContentDispositionEncodingFallbackArray);
+    info.addInstrumentedMember(m_httpBody);
+}
+
 double ResourceRequestBase::defaultTimeoutInterval()
 {
     return s_defaultTimeoutInterval;

Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (125762 => 125763)


--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2012-08-16 09:18:34 UTC (rev 125763)
@@ -44,6 +44,7 @@
         ReturnCacheDataDontLoad  // results of a post - allow stale data and only use cache
     };
 
+    class MemoryObjectInfo;
     class ResourceRequest;
     struct CrossThreadResourceRequestData;
 
@@ -132,6 +133,8 @@
         bool reportRawHeaders() const { return m_reportRawHeaders; }
         void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; }
 
+        void reportMemoryUsage(MemoryObjectInfo*) const;
+
         static double defaultTimeoutInterval(); // May return 0 when using platform default.
         static void setDefaultTimeoutInterval(double);
 

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp (125762 => 125763)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2012-08-16 09:18:34 UTC (rev 125763)
@@ -28,6 +28,7 @@
 #include "ResourceResponseBase.h"
 
 #include "HTTPParsers.h"
+#include "MemoryInstrumentation.h"
 #include "ResourceResponse.h"
 #include <wtf/CurrentTime.h>
 #include <wtf/MathExtras.h>
@@ -566,6 +567,20 @@
 {
     const_cast<ResourceResponse*>(static_cast<const ResourceResponse*>(this))->platformLazyInit(initLevel);
 }
+
+void ResourceResponseBase::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::Loader);
+    info.addMember(m_url);
+    info.addInstrumentedMember(m_mimeType);
+    info.addInstrumentedMember(m_textEncodingName);
+    info.addInstrumentedMember(m_suggestedFilename);
+    info.addInstrumentedMember(m_httpStatusText);
+    info.addHashMap(m_httpHeaderFields);
+    info.addInstrumentedMapEntries(m_httpHeaderFields);
+    info.addMember(m_resourceLoadTiming);
+    info.addMember(m_resourceLoadInfo);
+}
     
 bool ResourceResponseBase::compare(const ResourceResponse& a, const ResourceResponse& b)
 {

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (125762 => 125763)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2012-08-16 09:12:57 UTC (rev 125762)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2012-08-16 09:18:34 UTC (rev 125763)
@@ -41,6 +41,7 @@
 
 namespace WebCore {
 
+class MemoryObjectInfo;
 class ResourceResponse;
 struct CrossThreadResourceResponseData;
 
@@ -126,6 +127,8 @@
         return 1280;
     }
 
+    void reportMemoryUsage(MemoryObjectInfo*) const;
+
     static bool compare(const ResourceResponse&, const ResourceResponse&);
 
 protected:
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to