Title: [165206] trunk/Source/WebCore
- Revision
- 165206
- Author
- [email protected]
- Date
- 2014-03-06 12:57:40 -0800 (Thu, 06 Mar 2014)
Log Message
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().
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (165205 => 165206)
--- trunk/Source/WebCore/ChangeLog 2014-03-06 20:16:38 UTC (rev 165205)
+++ trunk/Source/WebCore/ChangeLog 2014-03-06 20:57:40 UTC (rev 165206)
@@ -1,3 +1,29 @@
+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-03-06 Joseph Pecoraro <[email protected]>
Web Inspector: Expose the console object in JSContexts to interact with Web Inspector
Modified: trunk/Source/WebCore/rendering/RenderLayerFilterInfo.cpp (165205 => 165206)
--- trunk/Source/WebCore/rendering/RenderLayerFilterInfo.cpp 2014-03-06 20:16:38 UTC (rev 165205)
+++ trunk/Source/WebCore/rendering/RenderLayerFilterInfo.cpp 2014-03-06 20:57:40 UTC (rev 165206)
@@ -97,6 +97,12 @@
m_layer.renderer().repaint();
}
+// FIXME: Remove this helper function when <rdar://problem/16230015> is fixed.
+NEVER_INLINE Element* RenderLayer::FilterInfo::layerElement() const
+{
+ return m_layer.renderer().element();
+}
+
void RenderLayer::FilterInfo::updateReferenceFilterClients(const FilterOperations& operations)
{
removeReferenceFilterClients();
@@ -115,7 +121,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().element()->document().getElementById(referenceFilterOperation->fragment());
+ Element* filter = layerElement()->document().getElementById(referenceFilterOperation->fragment());
+
if (!filter || !filter->renderer() || !filter->renderer()->isSVGResourceFilter())
continue;
toRenderSVGResourceContainer(*filter->renderer()).addClientRenderLayer(&m_layer);
Modified: trunk/Source/WebCore/rendering/RenderLayerFilterInfo.h (165205 => 165206)
--- trunk/Source/WebCore/rendering/RenderLayerFilterInfo.h 2014-03-06 20:16:38 UTC (rev 165205)
+++ trunk/Source/WebCore/rendering/RenderLayerFilterInfo.h 2014-03-06 20:57:40 UTC (rev 165206)
@@ -62,6 +62,8 @@
explicit FilterInfo(RenderLayer&);
~FilterInfo();
+ Element* layerElement() const;
+
friend void WTF::deleteOwnedPtr<FilterInfo>(FilterInfo*);
virtual void notifyFinished(CachedResource*) override;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes