Devirtualize RenderDeprecatedFlexibleBox::isStretchingChildren().
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Oct 2014 20:42:47 +0000 (20:42 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Oct 2014 20:42:47 +0000 (20:42 +0000)
<https://webkit.org/b/138096>

Reviewed by Chris Dumez.

This function is only ever called on a renderer after we've checked
that it's a RenderDeprecatedFlexibleBox, so make it non-virtual.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::computeLogicalHeight):
* rendering/RenderDeprecatedFlexibleBox.h:
* rendering/RenderObject.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@175230 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderBox.cpp
Source/WebCore/rendering/RenderDeprecatedFlexibleBox.h
Source/WebCore/rendering/RenderObject.h

index 23b06f3..8a79382 100644 (file)
@@ -1,3 +1,18 @@
+2014-10-27  Andreas Kling  <akling@apple.com>
+
+        Devirtualize RenderDeprecatedFlexibleBox::isStretchingChildren().
+        <https://webkit.org/b/138096>
+
+        Reviewed by Chris Dumez.
+
+        This function is only ever called on a renderer after we've checked
+        that it's a RenderDeprecatedFlexibleBox, so make it non-virtual.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::computeLogicalHeight):
+        * rendering/RenderDeprecatedFlexibleBox.h:
+        * rendering/RenderObject.h:
+
 2014-10-27  Chris Dumez  <cdumez@apple.com>
 
         Reintroduce null check removed in r175222
index e9b71c2..4cccfba 100644 (file)
@@ -45,6 +45,7 @@
 #include "Page.h"
 #include "PaintInfo.h"
 #include "RenderBoxRegionInfo.h"
+#include "RenderDeprecatedFlexibleBox.h"
 #include "RenderFlexibleBox.h"
 #include "RenderGeometryMap.h"
 #include "RenderInline.h"
@@ -2698,8 +2699,8 @@ void RenderBox::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logica
         // Block children of horizontal flexible boxes fill the height of the box.
         // FIXME: Account for block-flow in flexible boxes.
         // https://bugs.webkit.org/show_bug.cgi?id=46418
-        if (h.isAuto() && parent()->isDeprecatedFlexibleBox() && parent()->style().boxOrient() == HORIZONTAL
-                && parent()->isStretchingChildren()) {
+        if (h.isAuto() && is<RenderDeprecatedFlexibleBox>(*parent()) && parent()->style().boxOrient() == HORIZONTAL
+                && downcast<RenderDeprecatedFlexibleBox>(*parent()).isStretchingChildren()) {
             h = Length(parentBox()->contentLogicalHeight() - marginBefore() - marginAfter() - borderAndPaddingLogicalHeight(), Fixed);
             checkMinMaxHeight = false;
         }
index c61c586..05a9b0f 100644 (file)
@@ -44,8 +44,9 @@ public:
     void layoutHorizontalBox(bool relayoutChildren);
     void layoutVerticalBox(bool relayoutChildren);
 
+    bool isStretchingChildren() const { return m_stretchingChildren; }
+
     virtual bool avoidsFloats() const override { return true; }
-    virtual bool isStretchingChildren() const override { return m_stretchingChildren; }
     virtual bool canCollapseAnonymousBlockChild() const override { return false; }
 
     void placeChild(RenderBox* child, const LayoutPoint& location, LayoutSize* childLayoutDelta = 0);
@@ -69,4 +70,6 @@ private:
 
 } // namespace WebCore
 
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderDeprecatedFlexibleBox, isDeprecatedFlexibleBox())
+
 #endif // RenderDeprecatedFlexibleBox_h
index 3da0fc8..500b71f 100644 (file)
@@ -805,7 +805,6 @@ public:
 
     // Virtual function helpers for the deprecated Flexible Box Layout (display: -webkit-box).
     virtual bool isDeprecatedFlexibleBox() const { return false; }
-    virtual bool isStretchingChildren() const { return false; }
 
     // Virtual function helper for the new FlexibleBox Layout (display: -webkit-flex).
     virtual bool isFlexibleBox() const { return false; }