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