No subject


Mon Jan 28 08:41:14 PST 2013


8628">r148628</a> by &lt;cevans at chromium.org&gt;:

FINAL is a macro in wtf/Compiler.h that does the correct thing if the com=
piler does not support &quot;final&quot;)
The approach used is as simple as possible whilst being thorough.
So, leaf classes have FINAL applied to the whole class whereas intermedia=
ry classes have FINAL applied to relevant methods.

FINAL allows a compiler to devirtualize call sites and turn them into dir=
ect calls. As you might expect, this is perf positive:
(clang on Linux):
- line_layout.html goes from 120 runs/s -&gt; 123 runs/2, +2.5%
- html5-full-render.html goes from 3176ms -&gt; 3162ms, +0.4%

I have confidence that the former result is statistically significant (as=
 the numbers are very very stable) but not the latter.

* rendering/EllipsisBox.h:
* rendering/InlineFlowBox.h:
* rendering/InlineTextBox.h:
* rendering/RootInlineBox.h:
* rendering/TrailingFloatsRootInlineBox.h:
* rendering/svg/SVGInlineFlowBox.h:
* rendering/svg/SVGInlineTextBox.h:
* rendering/svg/SVGRootInlineBox.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href=3D"#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeL=
og</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingEllipsisBoxh">trunk/Source/Web=
Core/rendering/EllipsisBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingInlineFlowBoxh">trunk/Source/W=
ebCore/rendering/InlineFlowBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingInlineTextBoxh">trunk/Source/W=
ebCore/rendering/InlineTextBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingRootInlineBoxh">trunk/Source/W=
ebCore/rendering/RootInlineBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingTrailingFloatsRootInlineBoxh">=
trunk/Source/WebCore/rendering/TrailingFloatsRootInlineBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingsvgSVGInlineFlowBoxh">trunk/So=
urce/WebCore/rendering/svg/SVGInlineFlowBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingsvgSVGInlineTextBoxh">trunk/So=
urce/WebCore/rendering/svg/SVGInlineTextBox.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingsvgSVGRootInlineBoxh">trunk/So=
urce/WebCore/rendering/svg/SVGRootInlineBox.h</a></li>
</ul>

</div>
<div id=3D"patch">
<h3>Diff</h3>
<a id=3D"trunkSourceWebCoreChangeLog"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (1491=
09 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/ChangeLog	2013-04-25 14:19:=
40 UTC (rev 149109)
+++ trunk/Source/WebCore/ChangeLog	2013-04-25 14:33:54 UTC (rev 149110)
</span><span class=3D"lines">@@ -1,5 +1,34 @@
</span><span class=3D"cx"> 2013-04-25  Andreas Kling  &lt;akling at apple.co=
m&gt;
</span><span class=3D"cx">=20
</span><ins>+        Add FINAL decorators to the InlineBox class hierarch=
y.
+        &lt;http://webkit.org/b/115177&gt;
+
+        Reviewed by Antti Koivisto.
+
+        From Blink r148628 by &lt;cevans at chromium.org&gt;:
+
+        FINAL is a macro in wtf/Compiler.h that does the correct thing i=
f the compiler does not support &quot;final&quot;)
+        The approach used is as simple as possible whilst being thorough=
.
+        So, leaf classes have FINAL applied to the whole class whereas i=
ntermediary classes have FINAL applied to relevant methods.
+
+        FINAL allows a compiler to devirtualize call sites and turn them=
 into direct calls. As you might expect, this is perf positive:
+        (clang on Linux):
+        - line_layout.html goes from 120 runs/s -&gt; 123 runs/2, +2.5%
+        - html5-full-render.html goes from 3176ms -&gt; 3162ms, +0.4%
+
+        I have confidence that the former result is statistically signif=
icant (as the numbers are very very stable) but not the latter.
+
+        * rendering/EllipsisBox.h:
+        * rendering/InlineFlowBox.h:
+        * rendering/InlineTextBox.h:
+        * rendering/RootInlineBox.h:
+        * rendering/TrailingFloatsRootInlineBox.h:
+        * rendering/svg/SVGInlineFlowBox.h:
+        * rendering/svg/SVGInlineTextBox.h:
+        * rendering/svg/SVGRootInlineBox.h:
+
+2013-04-25  Andreas Kling  &lt;akling at apple.com&gt;
+
</ins><span class=3D"cx">         CSS parser: Add error recovery while pa=
rsing @-webkit-keyframes key values.
</span><span class=3D"cx">         &lt;http://webkit.org/b/115175&gt;
</span><span class=3D"cx">=20
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingEllipsisBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Ellip=
sisBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/EllipsisBox.h	201=
3-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/EllipsisBox.h	2013-04-25 14:33:54 UTC =
(rev 149110)
</span><span class=3D"lines">@@ -27,7 +27,7 @@
</span><span class=3D"cx"> class HitTestRequest;
</span><span class=3D"cx"> class HitTestResult;
</span><span class=3D"cx">=20
</span><del>-class EllipsisBox : public InlineBox {
</del><ins>+class EllipsisBox FINAL : public InlineBox {
</ins><span class=3D"cx"> public:
</span><span class=3D"cx">     EllipsisBox(RenderObject* obj, const Atomi=
cString&amp; ellipsisStr, InlineFlowBox* parent,
</span><span class=3D"cx">                 int width, int height, int y, =
bool firstLine, bool isVertical, InlineBox* markupBox)
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingInlineFlowBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Inlin=
eFlowBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/InlineFlowBox.h	2=
013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/InlineFlowBox.h	2013-04-25 14:33:54 UT=
C (rev 149110)
</span><span class=3D"lines">@@ -80,7 +80,7 @@
</span><span class=3D"cx">     InlineBox* firstChild() const { checkConsi=
stency(); return m_firstChild; }
</span><span class=3D"cx">     InlineBox* lastChild() const { checkConsis=
tency(); return m_lastChild; }
</span><span class=3D"cx">=20
</span><del>-    virtual bool isLeaf() const { return false; }
</del><ins>+    virtual bool isLeaf() const FINAL { return false; }
</ins><span class=3D"cx">    =20
</span><span class=3D"cx">     InlineBox* firstLeafChild() const;
</span><span class=3D"cx">     InlineBox* lastLeafChild() const;
</span><span class=3D"lines">@@ -88,7 +88,7 @@
</span><span class=3D"cx">     typedef void (*CustomInlineBoxRangeReverse=
)(void* userData, Vector&lt;InlineBox*&gt;::iterator first, Vector&lt;Inl=
ineBox*&gt;::iterator last);
</span><span class=3D"cx">     void collectLeafBoxesInLogicalOrder(Vector=
&lt;InlineBox*&gt;&amp;, CustomInlineBoxRangeReverse customReverseImpleme=
ntation =3D 0, void* userData =3D 0) const;
</span><span class=3D"cx">=20
</span><del>-    virtual void setConstructed()
</del><ins>+    virtual void setConstructed() FINAL
</ins><span class=3D"cx">     {
</span><span class=3D"cx">         InlineBox::setConstructed();
</span><span class=3D"cx">         for (InlineBox* child =3D firstChild()=
; child; child =3D child-&gt;nextOnLine())
</span><span class=3D"lines">@@ -96,9 +96,9 @@
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><span class=3D"cx">     void addToLine(InlineBox* child);
</span><del>-    virtual void deleteLine(RenderArena*);
-    virtual void extractLine();
-    virtual void attachLine();
</del><ins>+    virtual void deleteLine(RenderArena*) FINAL;
+    virtual void extractLine() FINAL;
+    virtual void attachLine() FINAL;
</ins><span class=3D"cx">     virtual void adjustPosition(float dx, float=
 dy);
</span><span class=3D"cx">=20
</span><span class=3D"cx">     virtual void extractLineBoxFromRenderObjec=
t();
</span><span class=3D"lines">@@ -109,8 +109,8 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx">     IntRect roundedFrameRect() const;
</span><span class=3D"cx">    =20
</span><del>-    virtual void paintBoxDecorations(PaintInfo&amp;, const L=
ayoutPoint&amp;);
-    virtual void paintMask(PaintInfo&amp;, const LayoutPoint&amp;);
</del><ins>+    virtual void paintBoxDecorations(PaintInfo&amp;, const La=
youtPoint&amp;) FINAL;
+    virtual void paintMask(PaintInfo&amp;, const LayoutPoint&amp;) FINAL=
;
</ins><span class=3D"cx">     void paintFillLayers(const PaintInfo&amp;, =
const Color&amp;, const FillLayer*, const LayoutRect&amp;, CompositeOpera=
tor =3D CompositeSourceOver);
</span><span class=3D"cx">     void paintFillLayer(const PaintInfo&amp;, =
const Color&amp;, const FillLayer*, const LayoutRect&amp;, CompositeOpera=
tor =3D CompositeSourceOver);
</span><span class=3D"cx">     void paintBoxShadow(const PaintInfo&amp;, =
RenderStyle*, ShadowStyle, const LayoutRect&amp;);
</span><span class=3D"lines">@@ -201,7 +201,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx">     virtual RenderObject::SelectionState selec=
tionState();
</span><span class=3D"cx">=20
</span><del>-    virtual bool canAccommodateEllipsis(bool ltr, int blockE=
dge, int ellipsisWidth) const OVERRIDE;
</del><ins>+    virtual bool canAccommodateEllipsis(bool ltr, int blockEd=
ge, int ellipsisWidth) const OVERRIDE FINAL;
</ins><span class=3D"cx">     virtual float placeEllipsisBox(bool ltr, fl=
oat blockLeftEdge, float blockRightEdge, float ellipsisWidth, float &amp;=
truncatedWidth, bool&amp;) OVERRIDE;
</span><span class=3D"cx">=20
</span><span class=3D"cx">     bool hasTextChildren() const { return m_ha=
sTextChildren; }
</span><span class=3D"lines">@@ -309,7 +309,7 @@
</span><span class=3D"cx"> protected:
</span><span class=3D"cx">     OwnPtr&lt;RenderOverflow&gt; m_overflow;
</span><span class=3D"cx">=20
</span><del>-    virtual bool isInlineFlowBox() const { return true; }
</del><ins>+    virtual bool isInlineFlowBox() const FINAL { return true;=
 }
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     InlineBox* m_firstChild;
</span><span class=3D"cx">     InlineBox* m_lastChild;
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingInlineTextBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Inlin=
eTextBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/InlineTextBox.h	2=
013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/InlineTextBox.h	2013-04-25 14:33:54 UT=
C (rev 149110)
</span><span class=3D"lines">@@ -57,7 +57,7 @@
</span><span class=3D"cx">     {
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><del>-    virtual void destroy(RenderArena*);
</del><ins>+    virtual void destroy(RenderArena*) FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     InlineTextBox* prevTextBox() const { retur=
n m_prevTextBox; }
</span><span class=3D"cx">     InlineTextBox* nextTextBox() const { retur=
n m_nextTextBox; }
</span><span class=3D"lines">@@ -76,7 +76,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx">     unsigned short truncation() { return m_tru=
ncation; }
</span><span class=3D"cx">=20
</span><del>-    virtual void markDirty(bool dirty =3D true) OVERRIDE;
</del><ins>+    virtual void markDirty(bool dirty =3D true) OVERRIDE FINA=
L;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     using InlineBox::hasHyphen;
</span><span class=3D"cx">     using InlineBox::setHasHyphen;
</span><span class=3D"lines">@@ -85,8 +85,8 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx">     static inline bool compareByStart(const In=
lineTextBox* first, const InlineTextBox* second) { return first-&gt;start=
() &lt; second-&gt;start(); }
</span><span class=3D"cx">=20
</span><del>-    virtual int baselinePosition(FontBaseline) const;
-    virtual LayoutUnit lineHeight() const;
</del><ins>+    virtual int baselinePosition(FontBaseline) const FINAL;
+    virtual LayoutUnit lineHeight() const FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     bool getEmphasisMarkPosition(RenderStyle*,=
 TextEmphasisPosition&amp;) const;
</span><span class=3D"cx">=20
</span><span class=3D"lines">@@ -125,19 +125,19 @@
</span><span class=3D"cx">     RenderText* textRenderer() const;
</span><span class=3D"cx">=20
</span><span class=3D"cx"> private:
</span><del>-    virtual void deleteLine(RenderArena*);
-    virtual void extractLine();
-    virtual void attachLine();
</del><ins>+    virtual void deleteLine(RenderArena*) FINAL;
+    virtual void extractLine() FINAL;
+    virtual void attachLine() FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> public:
</span><del>-    virtual RenderObject::SelectionState selectionState();
</del><ins>+    virtual RenderObject::SelectionState selectionState() FIN=
AL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> private:
</span><del>-    virtual void clearTruncation() { m_truncation =3D cNoTru=
ncation; }
-    virtual float placeEllipsisBox(bool flowIsLTR, float visibleLeftEdge=
, float visibleRightEdge, float ellipsisWidth, float &amp;truncatedWidth,=
 bool&amp; foundBox) OVERRIDE;
</del><ins>+    virtual void clearTruncation() FINAL { m_truncation =3D c=
NoTruncation; }
+    virtual float placeEllipsisBox(bool flowIsLTR, float visibleLeftEdge=
, float visibleRightEdge, float ellipsisWidth, float &amp;truncatedWidth,=
 bool&amp; foundBox) OVERRIDE FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> public:
</span><del>-    virtual bool isLineBreak() const;
</del><ins>+    virtual bool isLineBreak() const FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     void setExpansion(int newExpansion)
</span><span class=3D"cx">     {
</span><span class=3D"lines">@@ -147,11 +147,11 @@
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> private:
</span><del>-    virtual bool isInlineTextBox() const { return true; }   =
=20
</del><ins>+    virtual bool isInlineTextBox() const FINAL { return true;=
 }
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> public:
</span><del>-    virtual int caretMinOffset() const;
-    virtual int caretMaxOffset() const;
</del><ins>+    virtual int caretMinOffset() const FINAL;
+    virtual int caretMaxOffset() const FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> private:
</span><span class=3D"cx">     float textPos() const; // returns the x po=
sition relative to the left start of the text line.
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRootInlineBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/RootI=
nlineBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RootInlineBox.h	2=
013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/RootInlineBox.h	2013-04-25 14:33:54 UT=
C (rev 149110)
</span><span class=3D"lines">@@ -38,16 +38,16 @@
</span><span class=3D"cx"> public:
</span><span class=3D"cx">     explicit RootInlineBox(RenderBlock*);
</span><span class=3D"cx">=20
</span><del>-    virtual void destroy(RenderArena*);
</del><ins>+    virtual void destroy(RenderArena*) FINAL;
</ins><span class=3D"cx">=20
</span><del>-    virtual bool isRootInlineBox() const { return true; }
</del><ins>+    virtual bool isRootInlineBox() const FINAL { return true;=
 }
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     void detachEllipsisBox(RenderArena*);
</span><span class=3D"cx">=20
</span><span class=3D"cx">     RootInlineBox* nextRootBox() const { retur=
n static_cast&lt;RootInlineBox*&gt;(m_nextLineBox); }
</span><span class=3D"cx">     RootInlineBox* prevRootBox() const { retur=
n static_cast&lt;RootInlineBox*&gt;(m_prevLineBox); }
</span><span class=3D"cx">=20
</span><del>-    virtual void adjustPosition(float dx, float dy);
</del><ins>+    virtual void adjustPosition(float dx, float dy) FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     LayoutUnit lineTop() const { return m_line=
Top; }
</span><span class=3D"cx">     LayoutUnit lineBottom() const { return m_l=
ineBottom; }
</span><span class=3D"lines">@@ -85,7 +85,7 @@
</span><span class=3D"cx">         m_lineBottomWithLeading =3D bottomWith=
Leading;
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><del>-    virtual RenderLineBoxList* rendererLineBoxes() const;
</del><ins>+    virtual RenderLineBoxList* rendererLineBoxes() const FINA=
L;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     RenderObject* lineBreakObj() const { retur=
n m_lineBreakObj; }
</span><span class=3D"cx">     BidiStatus lineBreakBidiStatus() const;
</span><span class=3D"lines">@@ -103,19 +103,19 @@
</span><span class=3D"cx">     // Return the truncatedWidth, the width of=
 the truncated text + ellipsis.
</span><span class=3D"cx">     float placeEllipsis(const AtomicString&amp=
; ellipsisStr, bool ltr, float blockLeftEdge, float blockRightEdge, float=
 ellipsisWidth, InlineBox* markupBox =3D 0);
</span><span class=3D"cx">     // Return the position of the EllipsisBox =
or -1.
</span><del>-    virtual float placeEllipsisBox(bool ltr, float blockLeft=
Edge, float blockRightEdge, float ellipsisWidth, float &amp;truncatedWidt=
h, bool&amp; foundBox) OVERRIDE;
</del><ins>+    virtual float placeEllipsisBox(bool ltr, float blockLeftE=
dge, float blockRightEdge, float ellipsisWidth, float &amp;truncatedWidth=
, bool&amp; foundBox) OVERRIDE FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     using InlineBox::hasEllipsisBox;
</span><span class=3D"cx">     EllipsisBox* ellipsisBox() const;
</span><span class=3D"cx">=20
</span><span class=3D"cx">     void paintEllipsisBox(PaintInfo&amp;, cons=
t LayoutPoint&amp;, LayoutUnit lineTop, LayoutUnit lineBottom) const;
</span><span class=3D"cx">=20
</span><del>-    virtual void clearTruncation() OVERRIDE;
</del><ins>+    virtual void clearTruncation() OVERRIDE FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     bool isHyphenated() const;
</span><span class=3D"cx">=20
</span><del>-    virtual int baselinePosition(FontBaseline baselineType) =
const;
-    virtual LayoutUnit lineHeight() const;
</del><ins>+    virtual int baselinePosition(FontBaseline baselineType) c=
onst FINAL;
+    virtual LayoutUnit lineHeight() const FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> #if PLATFORM(MAC)
</span><span class=3D"cx">     void addHighlightOverflow();
</span><span class=3D"lines">@@ -123,12 +123,12 @@
</span><span class=3D"cx"> #endif
</span><span class=3D"cx">=20
</span><span class=3D"cx">     virtual void paint(PaintInfo&amp;, const L=
ayoutPoint&amp;, LayoutUnit lineTop, LayoutUnit lineBottom);
</span><del>-    virtual bool nodeAtPoint(const HitTestRequest&amp;, HitT=
estResult&amp;, const HitTestLocation&amp; locationInContainer, const Lay=
outPoint&amp; accumulatedOffset, LayoutUnit lineTop, LayoutUnit lineBotto=
m) OVERRIDE;
</del><ins>+    virtual bool nodeAtPoint(const HitTestRequest&amp;, HitTe=
stResult&amp;, const HitTestLocation&amp; locationInContainer, const Layo=
utPoint&amp; accumulatedOffset, LayoutUnit lineTop, LayoutUnit lineBottom=
) OVERRIDE FINAL;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     using InlineBox::hasSelectedChildren;
</span><span class=3D"cx">     using InlineBox::setHasSelectedChildren;
</span><span class=3D"cx">=20
</span><del>-    virtual RenderObject::SelectionState selectionState();
</del><ins>+    virtual RenderObject::SelectionState selectionState() FIN=
AL;
</ins><span class=3D"cx">     InlineBox* firstSelectedBox();
</span><span class=3D"cx">     InlineBox* lastSelectedBox();
</span><span class=3D"cx">=20
</span><span class=3D"lines">@@ -151,9 +151,9 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx">     Vector&lt;RenderBox*&gt;* floatsPtr() { AS=
SERT(!isDirty()); return m_floats.get(); }
</span><span class=3D"cx">=20
</span><del>-    virtual void extractLineBoxFromRenderObject();
-    virtual void attachLineBoxToRenderObject();
-    virtual void removeLineBoxFromRenderObject();
</del><ins>+    virtual void extractLineBoxFromRenderObject() FINAL;
+    virtual void attachLineBoxToRenderObject() FINAL;
+    virtual void removeLineBoxFromRenderObject() FINAL;
</ins><span class=3D"cx">    =20
</span><span class=3D"cx">     FontBaseline baselineType() const { return=
 static_cast&lt;FontBaseline&gt;(m_baselineType); }
</span><span class=3D"cx">=20
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingTrailingFloatsRootInlineBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Trail=
ingFloatsRootInlineBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/TrailingFloatsRoo=
tInlineBox.h	2013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/TrailingFloatsRootInlineBox.h	2013-04-=
25 14:33:54 UTC (rev 149110)
</span><span class=3D"lines">@@ -30,7 +30,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> namespace WebCore {
</span><span class=3D"cx">=20
</span><del>-class TrailingFloatsRootInlineBox : public RootInlineBox {
</del><ins>+class TrailingFloatsRootInlineBox FINAL : public RootInlineBo=
x {
</ins><span class=3D"cx"> public:
</span><span class=3D"cx">     TrailingFloatsRootInlineBox(RenderBlock* b=
lock)
</span><span class=3D"cx">         : RootInlineBox(block)
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingsvgSVGInlineFlowBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/S=
VGInlineFlowBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/svg/SVGInlineFlow=
Box.h	2013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/svg/SVGInlineFlowBox.h	2013-04-25 14:3=
3:54 UTC (rev 149110)
</span><span class=3D"lines">@@ -28,7 +28,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> class RenderSVGInlineText;
</span><span class=3D"cx">=20
</span><del>-class SVGInlineFlowBox : public InlineFlowBox {
</del><ins>+class SVGInlineFlowBox FINAL : public InlineFlowBox {
</ins><span class=3D"cx"> public:
</span><span class=3D"cx">     SVGInlineFlowBox(RenderObject* obj)
</span><span class=3D"cx">         : InlineFlowBox(obj)
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingsvgSVGInlineTextBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/S=
VGInlineTextBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/svg/SVGInlineText=
Box.h	2013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.h	2013-04-25 14:3=
3:54 UTC (rev 149110)
</span><span class=3D"lines">@@ -31,7 +31,7 @@
</span><span class=3D"cx"> class RenderSVGResource;
</span><span class=3D"cx"> class SVGRootInlineBox;
</span><span class=3D"cx">=20
</span><del>-class SVGInlineTextBox : public InlineTextBox {
</del><ins>+class SVGInlineTextBox FINAL : public InlineTextBox {
</ins><span class=3D"cx"> public:
</span><span class=3D"cx">     SVGInlineTextBox(RenderObject*);
</span><span class=3D"cx">=20
</span><span class=3D"lines">@@ -57,7 +57,7 @@
</span><span class=3D"cx">     Vector&lt;SVGTextFragment&gt;&amp; textFra=
gments() { return m_textFragments; }
</span><span class=3D"cx">     const Vector&lt;SVGTextFragment&gt;&amp; t=
extFragments() const { return m_textFragments; }
</span><span class=3D"cx">=20
</span><del>-    void dirtyLineBoxes() OVERRIDE;
</del><ins>+    virtual void dirtyLineBoxes() OVERRIDE;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     bool startsNewTextChunk() const { return m=
_startsNewTextChunk; }
</span><span class=3D"cx">     void setStartsNewTextChunk(bool newTextChu=
nk) { m_startsNewTextChunk =3D newTextChunk; }
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingsvgSVGRootInlineBoxh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/S=
VGRootInlineBox.h (149109 =3D> 149110)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/svg/SVGRootInline=
Box.h	2013-04-25 14:19:40 UTC (rev 149109)
+++ trunk/Source/WebCore/rendering/svg/SVGRootInlineBox.h	2013-04-25 14:3=
3:54 UTC (rev 149110)
</span><span class=3D"lines">@@ -32,7 +32,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> class SVGInlineTextBox;
</span><span class=3D"cx">=20
</span><del>-class SVGRootInlineBox : public RootInlineBox {
</del><ins>+class SVGRootInlineBox FINAL : public RootInlineBox {
</ins><span class=3D"cx"> public:
</span><span class=3D"cx">     SVGRootInlineBox(RenderBlock* block)
</span><span class=3D"cx">         : RootInlineBox(block)
</span></span></pre>
</div>
</div>

</body>
</html>


More information about the webkit-changes mailing list