No subject
Mon Jan 28 08:41:14 PST 2013
8628">r148628</a> by <cevans at chromium.org>:
FINAL is a macro in wtf/Compiler.h that does the correct thing if the com=
piler does not support "final")
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 -> 123 runs/2, +2.5%
- html5-full-render.html goes from 3176ms -> 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 <akling at apple.co=
m>
</span><span class=3D"cx">=20
</span><ins>+ Add FINAL decorators to the InlineBox class hierarch=
y.
+ <http://webkit.org/b/115177>
+
+ Reviewed by Antti Koivisto.
+
+ From Blink r148628 by <cevans at chromium.org>:
+
+ FINAL is a macro in wtf/Compiler.h that does the correct thing i=
f the compiler does not support "final")
+ 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 -> 123 runs/2, +2.5%
+ - html5-full-render.html goes from 3176ms -> 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 <akling at apple.com>
+
</ins><span class=3D"cx"> CSS parser: Add error recovery while pa=
rsing @-webkit-keyframes key values.
</span><span class=3D"cx"> <http://webkit.org/b/115175>
</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& 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<InlineBox*>::iterator first, Vector<Inl=
ineBox*>::iterator last);
</span><span class=3D"cx"> void collectLeafBoxesInLogicalOrder(Vector=
<InlineBox*>&, 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->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&, const L=
ayoutPoint&);
- virtual void paintMask(PaintInfo&, const LayoutPoint&);
</del><ins>+ virtual void paintBoxDecorations(PaintInfo&, const La=
youtPoint&) FINAL;
+ virtual void paintMask(PaintInfo&, const LayoutPoint&) FINAL=
;
</ins><span class=3D"cx"> void paintFillLayers(const PaintInfo&, =
const Color&, const FillLayer*, const LayoutRect&, CompositeOpera=
tor =3D CompositeSourceOver);
</span><span class=3D"cx"> void paintFillLayer(const PaintInfo&, =
const Color&, const FillLayer*, const LayoutRect&, CompositeOpera=
tor =3D CompositeSourceOver);
</span><span class=3D"cx"> void paintBoxShadow(const PaintInfo&, =
RenderStyle*, ShadowStyle, const LayoutRect&);
</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 &=
truncatedWidth, bool&) 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<RenderOverflow> 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->start=
() < second->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&) 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 &truncatedWidth,=
bool& 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 &truncatedWidth,=
bool& 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<RootInlineBox*>(m_nextLineBox); }
</span><span class=3D"cx"> RootInlineBox* prevRootBox() const { retur=
n static_cast<RootInlineBox*>(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&=
; 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 &truncatedWidt=
h, bool& foundBox) OVERRIDE;
</del><ins>+ virtual float placeEllipsisBox(bool ltr, float blockLeftE=
dge, float blockRightEdge, float ellipsisWidth, float &truncatedWidth=
, bool& 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&, cons=
t LayoutPoint&, 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&, const L=
ayoutPoint&, LayoutUnit lineTop, LayoutUnit lineBottom);
</span><del>- virtual bool nodeAtPoint(const HitTestRequest&, HitT=
estResult&, const HitTestLocation& locationInContainer, const Lay=
outPoint& accumulatedOffset, LayoutUnit lineTop, LayoutUnit lineBotto=
m) OVERRIDE;
</del><ins>+ virtual bool nodeAtPoint(const HitTestRequest&, HitTe=
stResult&, const HitTestLocation& locationInContainer, const Layo=
utPoint& 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<RenderBox*>* 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<FontBaseline>(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<SVGTextFragment>& textFra=
gments() { return m_textFragments; }
</span><span class=3D"cx"> const Vector<SVGTextFragment>& 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