Title: [133711] trunk/Source/WebCore
Revision
133711
Author
[email protected]
Date
2012-11-06 19:31:32 -0800 (Tue, 06 Nov 2012)

Log Message

Make Document::renderer faster by using the cached ptr for RenderView
https://bugs.webkit.org/show_bug.cgi?id=101409

Patch by Elliott Sprehn <[email protected]> on 2012-11-06
Reviewed by Eric Seidel.

In Bug 101277 I made Document::renderView() just return m_renderView instead
of casting the result of renderer(). While this made renderView() cheaper it
makes more sense to just make renderer() faster for Document pointers and
go back to the out of line method in RenderView.h because lots of places in
the code do document()->renderer().

No new tests, this is just a refactor.

* dom/Document.h:
(WebCore::Document::renderer):
* rendering/RenderView.h:
(WebCore::Document::renderView):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (133710 => 133711)


--- trunk/Source/WebCore/ChangeLog	2012-11-07 02:47:06 UTC (rev 133710)
+++ trunk/Source/WebCore/ChangeLog	2012-11-07 03:31:32 UTC (rev 133711)
@@ -1,3 +1,23 @@
+2012-11-06  Elliott Sprehn  <[email protected]>
+
+        Make Document::renderer faster by using the cached ptr for RenderView
+        https://bugs.webkit.org/show_bug.cgi?id=101409
+
+        Reviewed by Eric Seidel.
+
+        In Bug 101277 I made Document::renderView() just return m_renderView instead
+        of casting the result of renderer(). While this made renderView() cheaper it
+        makes more sense to just make renderer() faster for Document pointers and
+        go back to the out of line method in RenderView.h because lots of places in
+        the code do document()->renderer().
+
+        No new tests, this is just a refactor.
+
+        * dom/Document.h:
+        (WebCore::Document::renderer):
+        * rendering/RenderView.h:
+        (WebCore::Document::renderView):
+
 2012-11-06  Adam Barth  <[email protected]>
 
         [V8] neuterBinding should remember the type of its argument

Modified: trunk/Source/WebCore/dom/Document.cpp (133710 => 133711)


--- trunk/Source/WebCore/dom/Document.cpp	2012-11-07 02:47:06 UTC (rev 133710)
+++ trunk/Source/WebCore/dom/Document.cpp	2012-11-07 03:31:32 UTC (rev 133711)
@@ -478,7 +478,7 @@
     , m_isViewSource(false)
     , m_sawElementsInKnownNamespaces(false)
     , m_isSrcdocDocument(false)
-    , m_renderView(0)
+    , m_renderer(0)
     , m_eventQueue(DocumentEventQueue::create(this))
     , m_weakReference(DocumentWeakReference::create(this))
     , m_idAttributeName(idAttr)
@@ -2055,12 +2055,6 @@
     m_styleResolver.clear();
 }
 
-void Document::setRenderer(RenderObject* renderer)
-{
-    m_renderView = toRenderView(renderer);
-    Node::setRenderer(renderer);
-}
-
 void Document::attach()
 {
     ASSERT(!attached());

Modified: trunk/Source/WebCore/dom/Document.h (133710 => 133711)


--- trunk/Source/WebCore/dom/Document.h	2012-11-07 02:47:06 UTC (rev 133710)
+++ trunk/Source/WebCore/dom/Document.h	2012-11-07 03:31:32 UTC (rev 133711)
@@ -556,9 +556,18 @@
 
     RenderArena* renderArena() { return m_renderArena.get(); }
 
-    RenderView* renderView() const { return m_renderView; }
-    void setRenderer(RenderObject*);
+    // Implemented in RenderView.h to avoid a cyclic header dependency this just
+    // returns renderer so callers can avoid verbose casts.
+    RenderView* renderView() const;
 
+    // Shadow the implementations on Node to provide faster access for documents.
+    RenderObject* renderer() const { return m_renderer; }
+    void setRenderer(RenderObject* renderer)
+    {
+        m_renderer = renderer;
+        Node::setRenderer(renderer);
+    }
+
     void clearAXObjectCache();
     AXObjectCache* axObjectCache() const;
     bool axObjectCacheExists() const;
@@ -1436,7 +1445,7 @@
     bool m_sawElementsInKnownNamespaces;
     bool m_isSrcdocDocument;
 
-    RenderView* m_renderView;
+    RenderObject* m_renderer;
     RefPtr<DocumentEventQueue> m_eventQueue;
 
     RefPtr<DocumentWeakReference> m_weakReference;

Modified: trunk/Source/WebCore/rendering/RenderView.h (133710 => 133711)


--- trunk/Source/WebCore/rendering/RenderView.h	2012-11-07 02:47:06 UTC (rev 133710)
+++ trunk/Source/WebCore/rendering/RenderView.h	2012-11-07 03:31:32 UTC (rev 133711)
@@ -349,6 +349,11 @@
 // This will catch anyone doing an unnecessary cast.
 void toRenderView(const RenderView*);
 
+ALWAYS_INLINE RenderView* Document::renderView() const
+{
+    return toRenderView(renderer());
+}
+
 // Stack-based class to assist with LayoutState push/pop
 class LayoutStateMaintainer {
     WTF_MAKE_NONCOPYABLE(LayoutStateMaintainer);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to