<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[179548] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/179548">179548</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-02-03 08:58:08 -0800 (Tue, 03 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
https://bugs.webkit.org/show_bug.cgi?id=141148

Reviewed by Brent Fulgham.

Inspired by this change Rob Buis made in Blink:

    http://src.chromium.org/viewvc/blink?view=revision&amp;revision=173343

I actually wrote the whole thing and then discovered we did it almost identically.

* svg/SVGAnimatedTypeAnimator.cpp:
(WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this
helper function to get around a circular header dependency.
* svg/SVGAnimatedTypeAnimator.h:
(WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked.

* svg/SVGElement.cpp:
(WebCore::SVGElement::removedFrom): Use invalidateInstances.
(WebCore::SVGElement::finishParsingChildren): Ditto.
(WebCore::SVGElement::svgAttributeChanged): Ditto.
(WebCore::SVGElement::childrenChanged): Ditto.
(WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will
catch anyone who nests InstanceUpdateBlocker by accident.
(WebCore::SVGElement::invalidateInstances): Moved this here from
SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this
so it had nothing to do with SVGElementInstance, so it was a simple matter of
converting this into a member function. Added a FIXME about the mysterious
updateStyleIfNeeded that makes multiple tests fail if it's removed.

* svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected
InstanceInvalidationGuard class, and private invalidateInstances function.
Unlike the ones in SVGElementInstance these use references so they are then
not copyable without using the WTF_MAKE_NONCOPYABLE macro.

* svg/SVGElementInstance.cpp:
(WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted.
* svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and
invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will
delete this entire file.

* svg/SVGAElement.cpp:
(WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference
instead of pointer.
* svg/SVGAnimateElementBase.cpp:
(WebCore::applyCSSPropertyToTargetAndInstances): Ditto.
(WebCore::removeCSSPropertyFromTargetAndInstances): Ditto.
(WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto.
* svg/SVGAnimatedPath.cpp:
(WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto.
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::svgAttributeChanged): Ditto.
* svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::svgAttributeChanged): Ditto.
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto.
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::svgAttributeChanged): Ditto.
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::svgAttributeChanged): Ditto.
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto.
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto.
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto.
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto.
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto.
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::svgAttributeChanged): Ditto.
* svg/SVGFELightElement.cpp:
(WebCore::SVGFELightElement::svgAttributeChanged): Ditto.
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto.
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto.
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto.
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::svgAttributeChanged): Ditto.
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto.
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::svgAttributeChanged): Ditto.
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto.
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto.
* svg/SVGGElement.cpp:
(WebCore::SVGGElement::svgAttributeChanged): Ditto.
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::svgAttributeChanged): Ditto.
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::svgAttributeChanged): Ditto.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::svgAttributeChanged): Ditto.
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto.
* svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::svgAttributeChanged): Ditto.
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::svgAttributeChanged): Ditto.
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::svgAttributeChanged): Ditto.
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::svgAttributeChanged): Ditto.
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::svgAttributeChanged): Ditto.
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::svgAttributeChanged): Ditto.
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto.
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::svgAttributeChanged): Ditto.
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::svgAttributeChanged): Ditto.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::svgAttributeChanged): Ditto.
* svg/SVGStopElement.cpp:
(WebCore::SVGStopElement::svgAttributeChanged): Ditto.
* svg/SVGSymbolElement.cpp:
(WebCore::SVGSymbolElement::svgAttributeChanged): Ditto.
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::svgAttributeChanged): Ditto.
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::svgAttributeChanged): Ditto.
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::svgAttributeChanged): Ditto.
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::svgAttributeChanged): Ditto.
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::svgAttributeChanged): Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAElementcpp">trunk/Source/WebCore/svg/SVGAElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateElementBasecpp">trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedPathcpp">trunk/Source/WebCore/svg/SVGAnimatedPath.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedTypeAnimatorcpp">trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh">trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCircleElementcpp">trunk/Source/WebCore/svg/SVGCircleElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGClipPathElementcpp">trunk/Source/WebCore/svg/SVGClipPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp">trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCursorElementcpp">trunk/Source/WebCore/svg/SVGCursorElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementh">trunk/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementInstancecpp">trunk/Source/WebCore/svg/SVGElementInstance.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementInstanceh">trunk/Source/WebCore/svg/SVGElementInstance.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGEllipseElementcpp">trunk/Source/WebCore/svg/SVGEllipseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEBlendElementcpp">trunk/Source/WebCore/svg/SVGFEBlendElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEColorMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFECompositeElementcpp">trunk/Source/WebCore/svg/SVGFECompositeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp">trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp">trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDropShadowElementcpp">trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp">trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEImageElementcpp">trunk/Source/WebCore/svg/SVGFEImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFELightElementcpp">trunk/Source/WebCore/svg/SVGFELightElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMergeNodeElementcpp">trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMorphologyElementcpp">trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEOffsetElementcpp">trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFESpecularLightingElementcpp">trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETileElementcpp">trunk/Source/WebCore/svg/SVGFETileElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETurbulenceElementcpp">trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterElementcpp">trunk/Source/WebCore/svg/SVGFilterElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp">trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGForeignObjectElementcpp">trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGElementcpp">trunk/Source/WebCore/svg/SVGGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGradientElementcpp">trunk/Source/WebCore/svg/SVGGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGraphicsElementcpp">trunk/Source/WebCore/svg/SVGGraphicsElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageElementcpp">trunk/Source/WebCore/svg/SVGImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLineElementcpp">trunk/Source/WebCore/svg/SVGLineElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLinearGradientElementcpp">trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMPathElementcpp">trunk/Source/WebCore/svg/SVGMPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementcpp">trunk/Source/WebCore/svg/SVGMarkerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMaskElementcpp">trunk/Source/WebCore/svg/SVGMaskElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathElementcpp">trunk/Source/WebCore/svg/SVGPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPatternElementcpp">trunk/Source/WebCore/svg/SVGPatternElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPolyElementcpp">trunk/Source/WebCore/svg/SVGPolyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRadialGradientElementcpp">trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRectElementcpp">trunk/Source/WebCore/svg/SVGRectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementcpp">trunk/Source/WebCore/svg/SVGScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStopElementcpp">trunk/Source/WebCore/svg/SVGStopElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSymbolElementcpp">trunk/Source/WebCore/svg/SVGSymbolElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTRefElementcpp">trunk/Source/WebCore/svg/SVGTRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextContentElementcpp">trunk/Source/WebCore/svg/SVGTextContentElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPathElementcpp">trunk/Source/WebCore/svg/SVGTextPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPositioningElementcpp">trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvganimationSVGSMILElementcpp">trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/ChangeLog        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -1,3 +1,154 @@
</span><ins>+2015-02-03  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
+        https://bugs.webkit.org/show_bug.cgi?id=141148
+
+        Reviewed by Brent Fulgham.
+
+        Inspired by this change Rob Buis made in Blink:
+
+            http://src.chromium.org/viewvc/blink?view=revision&amp;revision=173343
+
+        I actually wrote the whole thing and then discovered we did it almost identically.
+
+        * svg/SVGAnimatedTypeAnimator.cpp:
+        (WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this
+        helper function to get around a circular header dependency.
+        * svg/SVGAnimatedTypeAnimator.h:
+        (WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked.
+
+        * svg/SVGElement.cpp:
+        (WebCore::SVGElement::removedFrom): Use invalidateInstances.
+        (WebCore::SVGElement::finishParsingChildren): Ditto.
+        (WebCore::SVGElement::svgAttributeChanged): Ditto.
+        (WebCore::SVGElement::childrenChanged): Ditto.
+        (WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will
+        catch anyone who nests InstanceUpdateBlocker by accident.
+        (WebCore::SVGElement::invalidateInstances): Moved this here from
+        SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this
+        so it had nothing to do with SVGElementInstance, so it was a simple matter of
+        converting this into a member function. Added a FIXME about the mysterious
+        updateStyleIfNeeded that makes multiple tests fail if it's removed.
+
+        * svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected
+        InstanceInvalidationGuard class, and private invalidateInstances function.
+        Unlike the ones in SVGElementInstance these use references so they are then
+        not copyable without using the WTF_MAKE_NONCOPYABLE macro.
+
+        * svg/SVGElementInstance.cpp:
+        (WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted.
+        (WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted.
+        (WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted.
+        * svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and
+        invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will
+        delete this entire file.
+
+        * svg/SVGAElement.cpp:
+        (WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference
+        instead of pointer.
+        * svg/SVGAnimateElementBase.cpp:
+        (WebCore::applyCSSPropertyToTargetAndInstances): Ditto.
+        (WebCore::removeCSSPropertyFromTargetAndInstances): Ditto.
+        (WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto.
+        * svg/SVGAnimatedPath.cpp:
+        (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto.
+        * svg/SVGCircleElement.cpp:
+        (WebCore::SVGCircleElement::svgAttributeChanged): Ditto.
+        * svg/SVGClipPathElement.cpp:
+        (WebCore::SVGClipPathElement::svgAttributeChanged): Ditto.
+        * svg/SVGComponentTransferFunctionElement.cpp:
+        (WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto.
+        * svg/SVGCursorElement.cpp:
+        (WebCore::SVGCursorElement::svgAttributeChanged): Ditto.
+        * svg/SVGEllipseElement.cpp:
+        (WebCore::SVGEllipseElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEBlendElement.cpp:
+        (WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEColorMatrixElement.cpp:
+        (WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto.
+        * svg/SVGFECompositeElement.cpp:
+        (WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEConvolveMatrixElement.cpp:
+        (WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEDiffuseLightingElement.cpp:
+        (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEDisplacementMapElement.cpp:
+        (WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEDropShadowElement.cpp:
+        (WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEGaussianBlurElement.cpp:
+        (WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEImageElement.cpp:
+        (WebCore::SVGFEImageElement::svgAttributeChanged): Ditto.
+        * svg/SVGFELightElement.cpp:
+        (WebCore::SVGFELightElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEMergeNodeElement.cpp:
+        (WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEMorphologyElement.cpp:
+        (WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto.
+        * svg/SVGFEOffsetElement.cpp:
+        (WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto.
+        * svg/SVGFESpecularLightingElement.cpp:
+        (WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto.
+        * svg/SVGFETileElement.cpp:
+        (WebCore::SVGFETileElement::svgAttributeChanged): Ditto.
+        * svg/SVGFETurbulenceElement.cpp:
+        (WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto.
+        * svg/SVGFilterElement.cpp:
+        (WebCore::SVGFilterElement::svgAttributeChanged): Ditto.
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto.
+        * svg/SVGForeignObjectElement.cpp:
+        (WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto.
+        * svg/SVGGElement.cpp:
+        (WebCore::SVGGElement::svgAttributeChanged): Ditto.
+        * svg/SVGGradientElement.cpp:
+        (WebCore::SVGGradientElement::svgAttributeChanged): Ditto.
+        * svg/SVGGraphicsElement.cpp:
+        (WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto.
+        * svg/SVGImageElement.cpp:
+        (WebCore::SVGImageElement::svgAttributeChanged): Ditto.
+        * svg/SVGLineElement.cpp:
+        (WebCore::SVGLineElement::svgAttributeChanged): Ditto.
+        * svg/SVGLinearGradientElement.cpp:
+        (WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto.
+        * svg/SVGMPathElement.cpp:
+        (WebCore::SVGMPathElement::svgAttributeChanged): Ditto.
+        * svg/SVGMarkerElement.cpp:
+        (WebCore::SVGMarkerElement::svgAttributeChanged): Ditto.
+        * svg/SVGMaskElement.cpp:
+        (WebCore::SVGMaskElement::svgAttributeChanged): Ditto.
+        * svg/SVGPathElement.cpp:
+        (WebCore::SVGPathElement::svgAttributeChanged): Ditto.
+        * svg/SVGPatternElement.cpp:
+        (WebCore::SVGPatternElement::svgAttributeChanged): Ditto.
+        * svg/SVGPolyElement.cpp:
+        (WebCore::SVGPolyElement::svgAttributeChanged): Ditto.
+        * svg/SVGRadialGradientElement.cpp:
+        (WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto.
+        * svg/SVGRectElement.cpp:
+        (WebCore::SVGRectElement::svgAttributeChanged): Ditto.
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::svgAttributeChanged): Ditto.
+        * svg/SVGScriptElement.cpp:
+        (WebCore::SVGScriptElement::svgAttributeChanged): Ditto.
+        * svg/SVGStopElement.cpp:
+        (WebCore::SVGStopElement::svgAttributeChanged): Ditto.
+        * svg/SVGSymbolElement.cpp:
+        (WebCore::SVGSymbolElement::svgAttributeChanged): Ditto.
+        * svg/SVGTRefElement.cpp:
+        (WebCore::SVGTRefElement::svgAttributeChanged): Ditto.
+        * svg/SVGTextContentElement.cpp:
+        (WebCore::SVGTextContentElement::svgAttributeChanged): Ditto.
+        * svg/SVGTextPathElement.cpp:
+        (WebCore::SVGTextPathElement::svgAttributeChanged): Ditto.
+        * svg/SVGTextPositioningElement.cpp:
+        (WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto.
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::svgAttributeChanged): Ditto.
+        * svg/animation/SVGSMILElement.cpp:
+        (WebCore::SVGSMILElement::svgAttributeChanged): Ditto.
+
</ins><span class="cx"> 2015-02-02  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r170576): Storage leaks in parsing of CSS image sizes
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIReference changes
</span><span class="cx">     // as none of the other properties changes the linking behaviour for our &lt;a&gt; element.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -258,7 +258,7 @@
</span><span class="cx"> 
</span><span class="cx">     CSSPropertyID id = cssPropertyID(attributeName.localName());
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InstanceUpdateBlocker blocker(&amp;targetElement);
</del><ins>+    SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx">     applyCSSPropertyToTarget(targetElement, id, valueAsString);
</span><span class="cx"> 
</span><span class="cx">     // If the target element has instances, update them as well, w/o requiring the &lt;use&gt; tree to be rebuilt.
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx"> 
</span><span class="cx">     CSSPropertyID id = cssPropertyID(attributeName.localName());
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InstanceUpdateBlocker blocker(&amp;targetElement);
</del><ins>+    SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx">     removeCSSPropertyFromTarget(targetElement, id);
</span><span class="cx"> 
</span><span class="cx">     // If the target element has instances, update them as well, w/o requiring the &lt;use&gt; tree to be rebuilt.
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">     if (attributeName == anyQName() || !targetElement.inDocument() || !targetElement.parentNode())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InstanceUpdateBlocker blocker(&amp;targetElement);
</del><ins>+    SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx">     notifyTargetAboutAnimValChange(targetElement, attributeName);
</span><span class="cx"> 
</span><span class="cx">     // If the target element has instances, update them as well, w/o requiring the &lt;use&gt; tree to be rebuilt.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedPathcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedPath.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it)
</span><span class="cx">         result.append(castAnimatedPropertyToActualType&lt;SVGAnimatedPathSegListPropertyTearOff&gt;(it-&gt;properties[0].get()));
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InstanceUpdateBlocker blocker(property-&gt;contextElement());
</del><ins>+    SVGElement::InstanceUpdateBlocker blocker(*property-&gt;contextElement());
</ins><span class="cx"> 
</span><span class="cx">     size_t resultSize = result.size();
</span><span class="cx">     for (size_t i = 0; i &lt; resultSize; ++i)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedTypeAnimatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -83,4 +83,9 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void SVGAnimatedTypeAnimator::setInstanceUpdatesBlocked(SVGElement&amp; element, bool blocked)
+{
+    element.setInstanceUpdatesBlocked(blocked);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -189,7 +189,8 @@
</span><span class="cx">     template&lt;typename AnimValType&gt;
</span><span class="cx">     void executeAction(AnimationAction action, const SVGElementAnimatedPropertyList&amp; animatedTypes, unsigned whichProperty, typename AnimValType::ContentType* type = 0)
</span><span class="cx">     {
</span><del>-        SVGElementInstance::InstanceUpdateBlocker blocker(animatedTypes[0].element);
</del><ins>+        // FIXME: Can't use SVGElement::InstanceUpdateBlocker because of circular header dependency. Would be nice to untangle this.
+        setInstanceUpdatesBlocked(*animatedTypes[0].element, true);
</ins><span class="cx"> 
</span><span class="cx">         SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end();
</span><span class="cx">         for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it) {
</span><span class="lines">@@ -216,7 +217,11 @@
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">         }
</span><ins>+
+        setInstanceUpdatesBlocked(*animatedTypes[0].element, false);
</ins><span class="cx">     }
</span><ins>+
+    static void setInstanceUpdatesBlocked(SVGElement&amp;, bool);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCircleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCircleElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::cxAttr
</span><span class="cx">         || attrName == SVGNames::cyAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGClipPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGClipPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (RenderObject* object = renderer())
</span><span class="cx">         object-&gt;setNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     invalidateFilterPrimitiveParent(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCursorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCursorElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     // Any change of a cursor specific attribute triggers this recalc.
</span><span class="cx">     HashSet&lt;SVGElement*&gt;::const_iterator it = m_clients.begin();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -392,7 +392,7 @@
</span><span class="cx">         document().accessSVGExtensions().clearTargetDependencies(*this);
</span><span class="cx">         document().accessSVGExtensions().removeAllElementReferencesForTarget(this);
</span><span class="cx">     }
</span><del>-    SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+    invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGSVGElement* SVGElement::ownerSVGElement() const
</span><span class="lines">@@ -713,7 +713,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Notify all the elements which have references to this element to rebuild their shadow and render
</span><span class="cx">     // trees, e.g. a &lt;use&gt; element references a target element before this target element is defined.
</span><del>-    SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+    invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGElement::childShouldCreateRenderer(const Node&amp; child) const
</span><span class="lines">@@ -1044,13 +1044,13 @@
</span><span class="cx"> {
</span><span class="cx">     CSSPropertyID propId = cssPropertyIdForSVGAttributeName(attrName);
</span><span class="cx">     if (propId &gt; 0) {
</span><del>-        SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+        invalidateInstances();
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == HTMLNames::classAttr) {
</span><span class="cx">         classAttributeChanged(className());
</span><del>-        SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+        invalidateInstances();
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1061,7 +1061,7 @@
</span><span class="cx">             downcast&lt;RenderSVGResourceContainer&gt;(*renderer).idChanged();
</span><span class="cx">         if (inDocument())
</span><span class="cx">             buildPendingResourcesIfNeeded();
</span><del>-        SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+        invalidateInstances();
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1103,7 +1103,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (change.source == ChildChangeSourceParser)
</span><span class="cx">         return;
</span><del>-    SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+    invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;CSSValue&gt; SVGElement::getPresentationAttribute(const String&amp; name)
</span><span class="lines">@@ -1130,6 +1130,10 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGElement::setInstanceUpdatesBlocked(bool value)
</span><span class="cx"> {
</span><ins>+    // Catch any callers that calls setInstanceUpdatesBlocked(true) twice in a row.
+    // That probably indicates nested use of InstanceUpdateBlocker and a bug.
+    ASSERT(!value || !instanceUpdatesBlocked());
+
</ins><span class="cx">     if (m_svgRareData)
</span><span class="cx">         m_svgRareData-&gt;setInstanceUpdatesBlocked(value);
</span><span class="cx"> }
</span><span class="lines">@@ -1201,4 +1205,30 @@
</span><span class="cx">     dispatchSimulatedClick(0, sendMouseEvents ? SendMouseUpDownEvents : SendNoEvents);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void SVGElement::invalidateInstances()
+{
+    if (!inDocument())
+        return;
+
+    if (instanceUpdatesBlocked())
+        return;
+
+    auto&amp; instances = this-&gt;instances();
+    if (instances.isEmpty())
+        return;
+
+    // Mark all use elements referencing 'element' for rebuilding
+    do {
+        SVGElement* instance = *instances.begin();
+        if (SVGUseElement* element = instance-&gt;correspondingUseElement()) {
+            ASSERT(element-&gt;inDocument());
+            element-&gt;invalidateShadowTree();
+        }
+        instance-&gt;setCorrespondingElement(nullptr);
+    } while (!instances.isEmpty());
+
+    // FIXME: Why is this needed?
+    document().updateStyleIfNeeded();
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElement.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,6 +155,8 @@
</span><span class="cx"> 
</span><span class="cx">     void callClearTarget() { clearTarget(); }
</span><span class="cx"> 
</span><ins>+    class InstanceUpdateBlocker;
+
</ins><span class="cx"> protected:
</span><span class="cx">     SVGElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     virtual ~SVGElement();
</span><span class="lines">@@ -183,6 +185,8 @@
</span><span class="cx">     void updateRelativeLengthsInformation() { updateRelativeLengthsInformation(selfHasRelativeLengths(), this); }
</span><span class="cx">     void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGElement*);
</span><span class="cx"> 
</span><ins>+    class InstanceInvalidationGuard;
+
</ins><span class="cx"> private:
</span><span class="cx">     friend class SVGElementInstance;
</span><span class="cx"> 
</span><span class="lines">@@ -200,6 +204,8 @@
</span><span class="cx">     virtual bool filterOutAnimatableAttribute(const QualifiedName&amp;) const;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void invalidateInstances();
+
</ins><span class="cx">     std::unique_ptr&lt;SVGElementRareData&gt; m_svgRareData;
</span><span class="cx"> 
</span><span class="cx">     HashSet&lt;SVGElement*&gt; m_elementsWithRelativeLengths;
</span><span class="lines">@@ -210,6 +216,22 @@
</span><span class="cx"> 
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+class SVGElement::InstanceInvalidationGuard {
+public:
+    InstanceInvalidationGuard(SVGElement&amp;);
+    ~InstanceInvalidationGuard();
+private:
+    SVGElement&amp; m_element;
+};
+
+class SVGElement::InstanceUpdateBlocker {
+public:
+    InstanceUpdateBlocker(SVGElement&amp;);
+    ~InstanceUpdateBlocker();
+private:
+    SVGElement&amp; m_element;
+};
+
</ins><span class="cx"> struct SVGAttributeHashTranslator {
</span><span class="cx">     static unsigned hash(const QualifiedName&amp; key)
</span><span class="cx">     {
</span><span class="lines">@@ -222,6 +244,28 @@
</span><span class="cx">     static bool equal(const QualifiedName&amp; a, const QualifiedName&amp; b) { return a.matches(b); }
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+inline SVGElement::InstanceInvalidationGuard::InstanceInvalidationGuard(SVGElement&amp; element)
+    : m_element(element)
+{
+}
+
+inline SVGElement::InstanceInvalidationGuard::~InstanceInvalidationGuard()
+{
+    m_element.invalidateInstances();
+}
+
+inline SVGElement::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement&amp; element)
+    : m_element(element)
+{
+    m_element.setInstanceUpdatesBlocked(true);
+}
+
+inline SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
+{
+    ASSERT(m_element.instanceUpdatesBlocked());
+    m_element.setInstanceUpdatesBlocked(false);
+}
+
</ins><span class="cx"> inline bool Node::hasTagName(const SVGQualifiedName&amp; name) const
</span><span class="cx"> {
</span><span class="cx">     return isSVGElement() &amp;&amp; downcast&lt;SVGElement&gt;(*this).hasTagName(name);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElementInstance.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElementInstance.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElementInstance.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -167,31 +167,6 @@
</span><span class="cx">     appendChildToContainer&lt;SVGElementInstance, SVGElementInstance&gt;(child.get(), *this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element)
-{
-    if (!element || !element-&gt;inDocument())
-        return;
-
-    if (element-&gt;instanceUpdatesBlocked())
-        return;
-
-    auto&amp; instances = element-&gt;instances();
-    if (instances.isEmpty())
-        return;
-
-    // Mark all use elements referencing 'element' for rebuilding
-    do {
-        SVGElement* instance = *instances.begin();
-        if (SVGUseElement* element = instance-&gt;correspondingUseElement()) {
-            ASSERT(element-&gt;inDocument());
-            element-&gt;invalidateShadowTree();
-        }
-        instance-&gt;setCorrespondingElement(nullptr);
-    } while (!instances.isEmpty());
-
-    element-&gt;document().updateStyleIfNeeded();
-}
-
</del><span class="cx"> EventTargetInterface SVGElementInstance::eventTargetInterface() const
</span><span class="cx"> {
</span><span class="cx">     return SVGElementInstanceEventTargetInterfaceType;
</span><span class="lines">@@ -240,17 +215,4 @@
</span><span class="cx">     return *eventTargetData();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetElement)
-    : m_targetElement(targetElement)
-{
-    if (m_targetElement)
-        m_targetElement-&gt;setInstanceUpdatesBlocked(true);
</del><span class="cx"> }
</span><del>-
-SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker()
-{
-    if (m_targetElement)
-        m_targetElement-&gt;setInstanceUpdatesBlocked(false);
-}
-   
-}
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementInstanceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElementInstance.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElementInstance.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElementInstance.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -71,27 +71,6 @@
</span><span class="cx"> 
</span><span class="cx">     Document* ownerDocument() const;
</span><span class="cx"> 
</span><del>-    class InvalidationGuard {
-        WTF_MAKE_NONCOPYABLE(InvalidationGuard);
-    public:    
-        InvalidationGuard(SVGElement* element) : m_element(element) { }
-        ~InvalidationGuard() { SVGElementInstance::invalidateAllInstancesOfElement(m_element); }
-    private:
-        SVGElement* m_element;
-    };
-
-    class InstanceUpdateBlocker {
-        WTF_MAKE_NONCOPYABLE(InstanceUpdateBlocker);
-    public:
-        InstanceUpdateBlocker(SVGElement* targetElement);
-        ~InstanceUpdateBlocker();
-
-    private:
-        SVGElement* m_targetElement;
-    };
-    
-    static void invalidateAllInstancesOfElement(SVGElement*);
-
</del><span class="cx">     using TreeShared&lt;SVGElementInstance&gt;::ref;
</span><span class="cx">     using TreeShared&lt;SVGElementInstance&gt;::deref;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGEllipseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGEllipseElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::cxAttr
</span><span class="cx">         || attrName == SVGNames::cyAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEBlendElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::modeAttr) {
</span><span class="cx">         primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEColorMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::typeAttr || attrName == SVGNames::valuesAttr) {
</span><span class="cx">         primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFECompositeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::operatorAttr
</span><span class="cx">         || attrName == SVGNames::k1Attr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::edgeModeAttr
</span><span class="cx">         || attrName == SVGNames::divisorAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::surfaceScaleAttr
</span><span class="cx">         || attrName == SVGNames::diffuseConstantAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::xChannelSelectorAttr || attrName == SVGNames::yChannelSelectorAttr || attrName == SVGNames::scaleAttr) {
</span><span class="cx">         primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDropShadowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::inAttr
</span><span class="cx">         || attrName == SVGNames::stdDeviationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::inAttr
</span><span class="cx">         || attrName == SVGNames::stdDeviationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEImageElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::preserveAspectRatioAttr) {
</span><span class="cx">         invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFELightElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFELightElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::azimuthAttr
</span><span class="cx">         || attrName == SVGNames::elevationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMergeNodeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><span class="cx">         invalidateFilterPrimitiveParent(this);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMorphologyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::operatorAttr || attrName == SVGNames::radiusAttr) {
</span><span class="cx">         primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEOffsetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::inAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr) {
</span><span class="cx">         invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFESpecularLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::surfaceScaleAttr
</span><span class="cx">         || attrName == SVGNames::specularConstantAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETileElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETileElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><span class="cx">         invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETurbulenceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::baseFrequencyAttr
</span><span class="cx">         || attrName == SVGNames::numOctavesAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr
</span><span class="cx">         || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);    
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGForeignObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::widthAttr
</span><span class="cx">         || attrName == SVGNames::heightAttr) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (auto renderer = this-&gt;renderer())
</span><span class="cx">         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (RenderObject* object = renderer())
</span><span class="cx">         object-&gt;setNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGraphicsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGraphicsElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (SVGTests::handleAttributeChange(this, attrName))
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGImageElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::widthAttr
</span><span class="cx">         || attrName == SVGNames::heightAttr) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLineElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLineElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     bool isLengthAttribute = attrName == SVGNames::x1Attr
</span><span class="cx">                           || attrName == SVGNames::y1Attr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLinearGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     updateRelativeLengthsInformation();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx">         buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     if (attrName == SVGNames::refXAttr
</span><span class="cx">         || attrName == SVGNames::refYAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMaskElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMaskElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr
</span><span class="cx">         || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     RenderSVGPath* renderer = downcast&lt;RenderSVGPath&gt;(this-&gt;renderer());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPatternElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPatternElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr
</span><span class="cx">         || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPolyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPolyElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer());
</span><span class="cx">     if (!renderer)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRadialGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx">     
</span><span class="cx">     updateRelativeLengthsInformation();
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRectElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr
</span><span class="cx">         || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -300,7 +300,7 @@
</span><span class="cx">             object-&gt;setNeedsTransformUpdate();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (updateRelativeLengthsOrViewBox
</span><span class="cx">         || SVGLangSpace::isKnownAttribute(attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::typeAttr || attrName == HTMLNames::onerrorAttr)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStopElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStopElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::offsetAttr) {
</span><span class="cx">         if (auto renderer = this-&gt;renderer())
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSymbolElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSymbolElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     // Every other property change is ignored.
</span><span class="cx">     if (attrName == SVGNames::viewBoxAttr)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTRefElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx">         buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextContentElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextContentElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::textLengthAttr)
</span><span class="cx">         m_specifiedTextLength = m_textLength.value;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx">         buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPositioningElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     bool updateRelativeLengths = attrName == SVGNames::xAttr
</span><span class="cx">                               || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+    InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) {
</span><span class="cx">         updateRelativeLengthsInformation();
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSVGSMILElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -499,7 +499,7 @@
</span><span class="cx">     else if (attrName == SVGNames::attributeNameAttr)
</span><span class="cx">         setAttributeName(constructQualifiedName(this, fastGetAttribute(SVGNames::attributeNameAttr)));
</span><span class="cx">     else if (attrName.matches(XLinkNames::hrefAttr)) {
</span><del>-        SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         buildPendingResource();
</span><span class="cx">     } else if (inDocument()) {
</span><span class="cx">         if (attrName == SVGNames::beginAttr)
</span></span></pre>
</div>
</div>

</body>
</html>