Title: [169212] branches/safari-537.77-branch/Source/WebCore

Diff

Modified: branches/safari-537.77-branch/Source/WebCore/ChangeLog (169211 => 169212)


--- branches/safari-537.77-branch/Source/WebCore/ChangeLog	2014-05-22 19:37:14 UTC (rev 169211)
+++ branches/safari-537.77-branch/Source/WebCore/ChangeLog	2014-05-22 20:00:52 UTC (rev 169212)
@@ -1,3 +1,33 @@
+2014-05-22  Dana Burkart  <[email protected]>
+
+        Merge r165206
+
+    2014-03-05  Jon Honeycutt  <[email protected]>
+
+            Invalid cast in WebCore::RenderLayer::FilterInfo::updateReferenceFilterClients()
+
+            <https://bugs.webkit.org/show_bug.cgi?id=121887>
+            <rdar://problem/15073043>
+
+            Clang appears to be optimizing out a branch in RenderObject::node()
+            when compiling RenderLayer::FilterInfo::updateReferenceFilterClients().
+            We'll work around this by factoring out the code in question into a
+            separate member function marked NEVER_INLINE.
+
+            No test possible due to <https://bugs.webkit.org/show_bug.cgi?id=129757>.
+
+            Reviewed by David Kilzer.
+
+            * rendering/RenderLayerFilterInfo.cpp:
+            (WebCore::RenderLayer::FilterInfo::layerElement):
+            Code moved from updateReferenceFilterClients(). Returns the Element*
+            for m_layer.
+            (WebCore::RenderLayer::FilterInfo::updateReferenceFilterClients):
+            Use layerElement().
+
+            * rendering/RenderLayerFilterInfo.h:
+            Declared layerElement().
+
 2014-05-22  Lucas Forschler  <[email protected]>
 
         Merge r164950

Modified: branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.cpp (169211 => 169212)


--- branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.cpp	2014-05-22 19:37:14 UTC (rev 169211)
+++ branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.cpp	2014-05-22 20:00:52 UTC (rev 169212)
@@ -122,6 +122,12 @@
     renderer->repaint();
 }
 
+// FIXME: Remove this helper function when <rdar://problem/16230015> is fixed.
+NEVER_INLINE ContainerNode* RenderLayerFilterInfo::layerElement() const
+{
+    return m_layer->renderer()->node();
+}
+
 void RenderLayerFilterInfo::updateReferenceFilterClients(const FilterOperations& operations)
 {
     removeReferenceFilterClients();
@@ -140,7 +146,8 @@
         } else {
             // Reference is internal; add layer as a client so we can trigger
             // filter repaint on SVG attribute change.
-            Element* filter = m_layer->renderer()->node()->document()->getElementById(referenceFilterOperation->fragment());
+            Element* filter = layerElement()->document()->getElementById(referenceFilterOperation->fragment());
+
             if (!filter || !filter->renderer() || !filter->renderer()->isSVGResourceFilter())
                 continue;
             filter->renderer()->toRenderSVGResourceContainer()->addClientRenderLayer(m_layer);

Modified: branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.h (169211 => 169212)


--- branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.h	2014-05-22 19:37:14 UTC (rev 169211)
+++ branches/safari-537.77-branch/Source/WebCore/rendering/RenderLayerFilterInfo.h	2014-05-22 20:00:52 UTC (rev 169212)
@@ -98,6 +98,8 @@
     ~RenderLayerFilterInfo();
     
     RenderLayer* m_layer;
+
+    ContainerNode* layerElement() const;
     
     RefPtr<FilterEffectRenderer> m_renderer;
     LayoutRect m_dirtySourceRect;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to