Title: [121306] trunk/Source/WebCore
Revision
121306
Author
[email protected]
Date
2012-06-26 18:31:22 -0700 (Tue, 26 Jun 2012)

Log Message

Optimize mappings of simple transforms in RenderGeometryMap
https://bugs.webkit.org/show_bug.cgi?id=90034

Reviewed by Dean Jackson.

For transforms that are identity or simple translations, don't
fall off the fast path in RenderGeometryMap; we can just
treat them as offsets.

Improves performance on pages with lots of translateZ(0) elements.

Remove RenderGeometryMapStep::mapPoint() and mapQuad(), which
were unused.

No new tests; optimization only, and tested by assertions.

* rendering/RenderGeometryMap.cpp:
(WebCore::RenderGeometryMap::push):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (121305 => 121306)


--- trunk/Source/WebCore/ChangeLog	2012-06-27 00:41:28 UTC (rev 121305)
+++ trunk/Source/WebCore/ChangeLog	2012-06-27 01:31:22 UTC (rev 121306)
@@ -1,3 +1,24 @@
+2012-06-26  Simon Fraser  <[email protected]>
+
+        Optimize mappings of simple transforms in RenderGeometryMap
+        https://bugs.webkit.org/show_bug.cgi?id=90034
+
+        Reviewed by Dean Jackson.
+        
+        For transforms that are identity or simple translations, don't
+        fall off the fast path in RenderGeometryMap; we can just
+        treat them as offsets.
+        
+        Improves performance on pages with lots of translateZ(0) elements.
+        
+        Remove RenderGeometryMapStep::mapPoint() and mapQuad(), which
+        were unused.
+
+        No new tests; optimization only, and tested by assertions.
+
+        * rendering/RenderGeometryMap.cpp:
+        (WebCore::RenderGeometryMap::push):
+
 2012-06-26  Kevin Ellis  <[email protected]>
 
         Touch adjustment does not target shadow DOM elements

Modified: trunk/Source/WebCore/rendering/RenderGeometryMap.cpp (121305 => 121306)


--- trunk/Source/WebCore/rendering/RenderGeometryMap.cpp	2012-06-27 00:41:28 UTC (rev 121305)
+++ trunk/Source/WebCore/rendering/RenderGeometryMap.cpp	2012-06-27 01:31:22 UTC (rev 121306)
@@ -46,25 +46,6 @@
     {
     }
         
-    FloatPoint mapPoint(const FloatPoint& p) const
-    {
-        if (!m_transform)
-            return p + m_offset;
-        
-        return m_transform->mapPoint(p);
-    }
-    
-    FloatQuad mapQuad(const FloatQuad& quad) const
-    {
-        if (!m_transform) {
-            FloatQuad q = quad;
-            q.move(m_offset);
-            return q;
-        }
-        
-        return m_transform->mapQuad(quad);
-    }
-    
     const RenderObject* m_renderer;
     LayoutSize m_offset;
     OwnPtr<TransformationMatrix> m_transform; // Includes offset if non-null.
@@ -216,8 +197,11 @@
     ASSERT(m_insertionPosition != notFound);
 
     OwnPtr<RenderGeometryMapStep> step = adoptPtr(new RenderGeometryMapStep(renderer, accumulatingTransform, isNonUniform, isFixedPosition, hasTransform));
-    step->m_transform = adoptPtr(new TransformationMatrix(t));
-
+    if (!t.isIntegerTranslation())
+        step->m_transform = adoptPtr(new TransformationMatrix(t));
+    else
+        step->m_offset = LayoutSize(t.e(), t.f());
+    
     stepInserted(*step.get());
     m_mapping.insert(m_insertionPosition, step.release());
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to