<!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>[191234] 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/191234">191234</a></dd>
<dt>Author</dt> <dd>zalan@apple.com</dd>
<dt>Date</dt> <dd>2015-10-16 20:36:56 -0700 (Fri, 16 Oct 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>RenderBlockFlow::*logical*ForFloat should take FloatingObject reference.
https://bugs.webkit.org/show_bug.cgi?id=150266

Reviewed by Simon Fraser.

No change in behaviour.

* rendering/FloatingObjects.cpp:
(WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatTypeValue&gt;::heightRemaining):
(WebCore::ComputeFloatOffsetAdapter&lt;FloatTypeValue&gt;::collectIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
(WebCore::RenderBlockFlow::repaintOverhangingFloats):
(WebCore::RenderBlockFlow::insertFloatingObject):
(WebCore::RenderBlockFlow::removeFloatingObject):
(WebCore::RenderBlockFlow::removeFloatingObjectsBelow):
(WebCore::RenderBlockFlow::computeLogicalLocationForFloat):
(WebCore::RenderBlockFlow::positionNewFloats):
(WebCore::RenderBlockFlow::lowestFloatLogicalBottom):
(WebCore::RenderBlockFlow::lowestInitialLetterLogicalBottom):
(WebCore::RenderBlockFlow::addOverhangingFloats):
(WebCore::RenderBlockFlow::hasOverhangingFloat):
(WebCore::RenderBlockFlow::addIntrudingFloats):
* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::logicalTopForFloat):
(WebCore::RenderBlockFlow::logicalBottomForFloat):
(WebCore::RenderBlockFlow::logicalLeftForFloat):
(WebCore::RenderBlockFlow::logicalRightForFloat):
(WebCore::RenderBlockFlow::logicalWidthForFloat):
(WebCore::RenderBlockFlow::logicalHeightForFloat):
(WebCore::RenderBlockFlow::setLogicalTopForFloat):
(WebCore::RenderBlockFlow::setLogicalLeftForFloat):
(WebCore::RenderBlockFlow::setLogicalHeightForFloat):
(WebCore::RenderBlockFlow::setLogicalWidthForFloat):
(WebCore::RenderBlockFlow::logicalSizeForFloat): Deleted.
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
(WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine):
(WebCore::RenderBlockFlow::positionNewFloatOnLine):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::addOverflowFromChild):
* rendering/RenderBox.h:
(WebCore::RenderBox::addOverflowFromChild):
* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleFloat):
* rendering/line/LineWidth.cpp:
(WebCore::newFloatShrinksLine):
(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingFloatingObjectscpp">trunk/Source/WebCore/rendering/FloatingObjects.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowh">trunk/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockLineLayoutcpp">trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxh">trunk/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderinglineBreakingContexth">trunk/Source/WebCore/rendering/line/BreakingContext.h</a></li>
<li><a href="#trunkSourceWebCorerenderinglineLineWidthcpp">trunk/Source/WebCore/rendering/line/LineWidth.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingshapesShapeOutsideInfocpp">trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/ChangeLog        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2015-10-16  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        RenderBlockFlow::*logical*ForFloat should take FloatingObject reference.
+        https://bugs.webkit.org/show_bug.cgi?id=150266
+
+        Reviewed by Simon Fraser.
+
+        No change in behaviour.
+
+        * rendering/FloatingObjects.cpp:
+        (WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
+        (WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded):
+        (WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded):
+        (WebCore::ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatTypeValue&gt;::heightRemaining):
+        (WebCore::ComputeFloatOffsetAdapter&lt;FloatTypeValue&gt;::collectIfNeeded):
+        (WebCore::ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded):
+        (WebCore::ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded):
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
+        (WebCore::RenderBlockFlow::repaintOverhangingFloats):
+        (WebCore::RenderBlockFlow::insertFloatingObject):
+        (WebCore::RenderBlockFlow::removeFloatingObject):
+        (WebCore::RenderBlockFlow::removeFloatingObjectsBelow):
+        (WebCore::RenderBlockFlow::computeLogicalLocationForFloat):
+        (WebCore::RenderBlockFlow::positionNewFloats):
+        (WebCore::RenderBlockFlow::lowestFloatLogicalBottom):
+        (WebCore::RenderBlockFlow::lowestInitialLetterLogicalBottom):
+        (WebCore::RenderBlockFlow::addOverhangingFloats):
+        (WebCore::RenderBlockFlow::hasOverhangingFloat):
+        (WebCore::RenderBlockFlow::addIntrudingFloats):
+        * rendering/RenderBlockFlow.h:
+        (WebCore::RenderBlockFlow::logicalTopForFloat):
+        (WebCore::RenderBlockFlow::logicalBottomForFloat):
+        (WebCore::RenderBlockFlow::logicalLeftForFloat):
+        (WebCore::RenderBlockFlow::logicalRightForFloat):
+        (WebCore::RenderBlockFlow::logicalWidthForFloat):
+        (WebCore::RenderBlockFlow::logicalHeightForFloat):
+        (WebCore::RenderBlockFlow::setLogicalTopForFloat):
+        (WebCore::RenderBlockFlow::setLogicalLeftForFloat):
+        (WebCore::RenderBlockFlow::setLogicalHeightForFloat):
+        (WebCore::RenderBlockFlow::setLogicalWidthForFloat):
+        (WebCore::RenderBlockFlow::logicalSizeForFloat): Deleted.
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
+        (WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine):
+        (WebCore::RenderBlockFlow::positionNewFloatOnLine):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::addOverflowFromChild):
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::addOverflowFromChild):
+        * rendering/line/BreakingContext.h:
+        (WebCore::BreakingContext::handleFloat):
+        * rendering/line/LineWidth.cpp:
+        (WebCore::newFloatShrinksLine):
+        (WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
+        * rendering/shapes/ShapeOutsideInfo.cpp:
+        (WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine):
+
</ins><span class="cx"> 2015-10-16  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Avoid to insert TAB before HTML element.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFloatingObjectscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FloatingObjects.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -210,12 +210,12 @@
</span><span class="cx"> 
</span><span class="cx"> inline void FindNextFloatLogicalBottomAdapter::collectIfNeeded(const IntervalType&amp; interval)
</span><span class="cx"> {
</span><del>-    const FloatingObject* floatingObject = interval.data();
</del><ins>+    const auto&amp; floatingObject = *interval.data();
</ins><span class="cx">     if (!rangesIntersect(interval.low(), interval.high(), m_belowLogicalHeight, m_aboveLogicalHeight))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // All the objects returned from the tree should be already placed.
</span><del>-    ASSERT(floatingObject-&gt;isPlaced());
</del><ins>+    ASSERT(floatingObject.isPlaced());
</ins><span class="cx">     ASSERT(rangesIntersect(m_renderer.logicalTopForFloat(floatingObject), m_renderer.logicalBottomForFloat(floatingObject), m_belowLogicalHeight, m_aboveLogicalHeight));
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit floatBottom = m_renderer.logicalBottomForFloat(floatingObject);
</span><span class="lines">@@ -223,8 +223,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><del>-    if (ShapeOutsideInfo* shapeOutside = floatingObject-&gt;renderer().shapeOutsideInfo()) {
-        LayoutUnit shapeBottom = m_renderer.logicalTopForFloat(floatingObject) + m_renderer.marginBeforeForChild(floatingObject-&gt;renderer()) + shapeOutside-&gt;shapeLogicalBottom();
</del><ins>+    if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
+        LayoutUnit shapeBottom = m_renderer.logicalTopForFloat(floatingObject) + m_renderer.marginBeforeForChild(floatingObject.renderer()) + shapeOutside-&gt;shapeLogicalBottom();
</ins><span class="cx">         // Use the shapeBottom unless it extends outside of the margin box, in which case it is clipped.
</span><span class="cx">         m_nextShapeLogicalBottom = std::min(shapeBottom, floatBottom);
</span><span class="cx">     } else
</span><span class="lines">@@ -433,7 +433,7 @@
</span><span class="cx"> template&lt;&gt;
</span><span class="cx"> inline bool ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded(const FloatingObject&amp; floatingObject)
</span><span class="cx"> {
</span><del>-    LayoutUnit logicalRight = m_renderer.logicalRightForFloat(&amp;floatingObject);
</del><ins>+    LayoutUnit logicalRight = m_renderer.logicalRightForFloat(floatingObject);
</ins><span class="cx">     if (logicalRight &gt; m_offset) {
</span><span class="cx">         m_offset = logicalRight;
</span><span class="cx">         return true;
</span><span class="lines">@@ -444,7 +444,7 @@
</span><span class="cx"> template&lt;&gt;
</span><span class="cx"> inline bool ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded(const FloatingObject&amp; floatingObject)
</span><span class="cx"> {
</span><del>-    LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(&amp;floatingObject);
</del><ins>+    LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(floatingObject);
</ins><span class="cx">     if (logicalLeft &lt; m_offset) {
</span><span class="cx">         m_offset = logicalLeft;
</span><span class="cx">         return true;
</span><span class="lines">@@ -455,29 +455,29 @@
</span><span class="cx"> template &lt;FloatingObject::Type FloatTypeValue&gt;
</span><span class="cx"> LayoutUnit ComputeFloatOffsetForFloatLayoutAdapter&lt;FloatTypeValue&gt;::heightRemaining() const
</span><span class="cx"> {
</span><del>-    return this-&gt;m_outermostFloat ? this-&gt;m_renderer.logicalBottomForFloat(this-&gt;m_outermostFloat) - this-&gt;m_lineTop : LayoutUnit::fromPixel(1);
</del><ins>+    return this-&gt;m_outermostFloat ? this-&gt;m_renderer.logicalBottomForFloat(*this-&gt;m_outermostFloat) - this-&gt;m_lineTop : LayoutUnit::fromPixel(1);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;FloatingObject::Type FloatTypeValue&gt;
</span><span class="cx"> inline void ComputeFloatOffsetAdapter&lt;FloatTypeValue&gt;::collectIfNeeded(const IntervalType&amp; interval)
</span><span class="cx"> {
</span><del>-    const FloatingObject* floatingObject = interval.data();
-    if (floatingObject-&gt;type() != FloatTypeValue || !rangesIntersect(interval.low(), interval.high(), m_lineTop, m_lineBottom))
</del><ins>+    const auto&amp; floatingObject = *interval.data();
+    if (floatingObject.type() != FloatTypeValue || !rangesIntersect(interval.low(), interval.high(), m_lineTop, m_lineBottom))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // All the objects returned from the tree should be already placed.
</span><del>-    ASSERT(floatingObject-&gt;isPlaced());
</del><ins>+    ASSERT(floatingObject.isPlaced());
</ins><span class="cx">     ASSERT(rangesIntersect(m_renderer.logicalTopForFloat(floatingObject), m_renderer.logicalBottomForFloat(floatingObject), m_lineTop, m_lineBottom));
</span><span class="cx"> 
</span><del>-    bool floatIsNewExtreme = updateOffsetIfNeeded(*floatingObject);
</del><ins>+    bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject);
</ins><span class="cx">     if (floatIsNewExtreme)
</span><del>-        m_outermostFloat = floatingObject;
</del><ins>+        m_outermostFloat = &amp;floatingObject;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><span class="cx"> inline bool ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatLeft&gt;::updateOffsetIfNeeded(const FloatingObject&amp; floatingObject)
</span><span class="cx"> {
</span><del>-    LayoutUnit logicalRight = m_renderer.logicalRightForFloat(&amp;floatingObject);
</del><ins>+    LayoutUnit logicalRight = m_renderer.logicalRightForFloat(floatingObject);
</ins><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx">     if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
</span><span class="cx">         ShapeOutsideDeltas shapeDeltas = shapeOutside-&gt;computeDeltasForContainingBlockLine(m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop);
</span><span class="lines">@@ -498,7 +498,7 @@
</span><span class="cx"> template&lt;&gt;
</span><span class="cx"> inline bool ComputeFloatOffsetForLineLayoutAdapter&lt;FloatingObject::FloatRight&gt;::updateOffsetIfNeeded(const FloatingObject&amp; floatingObject)
</span><span class="cx"> {
</span><del>-    LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(&amp;floatingObject);
</del><ins>+    LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(floatingObject);
</ins><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx">     if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
</span><span class="cx">         ShapeOutsideDeltas shapeDeltas = shapeOutside-&gt;computeDeltasForContainingBlockLine(m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -267,12 +267,12 @@
</span><span class="cx">             const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">             auto end = floatingObjectSet.end();
</span><span class="cx">             for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>-                FloatingObject* floatingObject = it-&gt;get();
-                std::unique_ptr&lt;FloatingObject&gt; oldFloatingObject = floatMap.take(&amp;floatingObject-&gt;renderer());
</del><ins>+                const auto&amp; floatingObject = *it-&gt;get();
+                std::unique_ptr&lt;FloatingObject&gt; oldFloatingObject = floatMap.take(&amp;floatingObject.renderer());
</ins><span class="cx">                 LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject);
</span><span class="cx">                 if (oldFloatingObject) {
</span><del>-                    LayoutUnit oldLogicalBottom = logicalBottomForFloat(oldFloatingObject.get());
-                    if (logicalWidthForFloat(floatingObject) != logicalWidthForFloat(oldFloatingObject.get()) || logicalLeftForFloat(floatingObject) != logicalLeftForFloat(oldFloatingObject.get())) {
</del><ins>+                    LayoutUnit oldLogicalBottom = logicalBottomForFloat(*oldFloatingObject);
+                    if (logicalWidthForFloat(floatingObject) != logicalWidthForFloat(*oldFloatingObject) || logicalLeftForFloat(floatingObject) != logicalLeftForFloat(*oldFloatingObject)) {
</ins><span class="cx">                         changeLogicalTop = 0;
</span><span class="cx">                         changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalBottom, oldLogicalBottom));
</span><span class="cx">                     } else {
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx">                             changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalBottom, oldLogicalBottom));
</span><span class="cx">                         }
</span><span class="cx">                         LayoutUnit logicalTop = logicalTopForFloat(floatingObject);
</span><del>-                        LayoutUnit oldLogicalTop = logicalTopForFloat(oldFloatingObject.get());
</del><ins>+                        LayoutUnit oldLogicalTop = logicalTopForFloat(*oldFloatingObject);
</ins><span class="cx">                         if (logicalTop != oldLogicalTop) {
</span><span class="cx">                             changeLogicalTop = std::min(changeLogicalTop, std::min(logicalTop, oldLogicalTop));
</span><span class="cx">                             changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalTop, oldLogicalTop));
</span><span class="lines">@@ -301,8 +301,8 @@
</span><span class="cx"> 
</span><span class="cx">         auto end = floatMap.end();
</span><span class="cx">         for (auto it = floatMap.begin(); it != end; ++it) {
</span><del>-            FloatingObject* floatingObject = it-&gt;value.get();
-            if (!floatingObject-&gt;isDescendant()) {
</del><ins>+            const auto&amp; floatingObject = *it-&gt;value.get();
+            if (!floatingObject.isDescendant()) {
</ins><span class="cx">                 changeLogicalTop = 0;
</span><span class="cx">                 changeLogicalBottom = std::max(changeLogicalBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx">             }
</span><span class="lines">@@ -2154,15 +2154,16 @@
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     auto end = floatingObjectSet.end();
</span><span class="cx">     for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
</del><ins>+        const auto&amp; floatingObject = *it-&gt;get();
</ins><span class="cx">         // Only repaint the object if it is overhanging, is not in its own layer, and
</span><span class="cx">         // is our responsibility to paint (m_shouldPaint is set). When paintAllDescendants is true, the latter
</span><span class="cx">         // condition is replaced with being a descendant of us.
</span><ins>+        auto&amp; renderer = floatingObject.renderer();
</ins><span class="cx">         if (logicalBottomForFloat(floatingObject) &gt; logicalHeight()
</span><del>-            &amp;&amp; !floatingObject-&gt;renderer().hasSelfPaintingLayer()
-            &amp;&amp; (floatingObject-&gt;shouldPaint() || (paintAllDescendants &amp;&amp; floatingObject-&gt;renderer().isDescendantOf(this)))) {
-            floatingObject-&gt;renderer().repaint();
-            floatingObject-&gt;renderer().repaintOverhangingFloats(false);
</del><ins>+            &amp;&amp; !renderer.hasSelfPaintingLayer()
+            &amp;&amp; (floatingObject.shouldPaint() || (paintAllDescendants &amp;&amp; renderer.isDescendantOf(this)))) {
+            renderer.repaint();
+            renderer.repaintOverhangingFloats(false);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -2278,7 +2279,7 @@
</span><span class="cx">         floatBox.computeAndSetBlockDirectionMargins(this);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    setLogicalWidthForFloat(floatingObject.get(), logicalWidthForChild(floatBox) + marginStartForChild(floatBox) + marginEndForChild(floatBox));
</del><ins>+    setLogicalWidthForFloat(*floatingObject, logicalWidthForChild(floatBox) + marginStartForChild(floatBox) + marginEndForChild(floatBox));
</ins><span class="cx"> 
</span><span class="cx">     return m_floatingObjects-&gt;add(WTF::move(floatingObject));
</span><span class="cx"> }
</span><span class="lines">@@ -2289,7 +2290,7 @@
</span><span class="cx">         const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">         auto it = floatingObjectSet.find&lt;RenderBox&amp;, FloatingObjectHashTranslator&gt;(floatBox);
</span><span class="cx">         if (it != floatingObjectSet.end()) {
</span><del>-            FloatingObject* floatingObject = it-&gt;get();
</del><ins>+            auto&amp; floatingObject = *it-&gt;get();
</ins><span class="cx">             if (childrenInline()) {
</span><span class="cx">                 LayoutUnit logicalTop = logicalTopForFloat(floatingObject);
</span><span class="cx">                 LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject);
</span><span class="lines">@@ -2303,19 +2304,19 @@
</span><span class="cx">                     // accomplished by pretending they have a height of 1.
</span><span class="cx">                     logicalBottom = std::max(logicalBottom, logicalTop + 1);
</span><span class="cx">                 }
</span><del>-                if (floatingObject-&gt;originatingLine()) {
-                    floatingObject-&gt;originatingLine()-&gt;removeFloat(floatBox);
</del><ins>+                if (floatingObject.originatingLine()) {
+                    floatingObject.originatingLine()-&gt;removeFloat(floatBox);
</ins><span class="cx">                     if (!selfNeedsLayout()) {
</span><del>-                        ASSERT(&amp;floatingObject-&gt;originatingLine()-&gt;renderer() == this);
-                        floatingObject-&gt;originatingLine()-&gt;markDirty();
</del><ins>+                        ASSERT(&amp;floatingObject.originatingLine()-&gt;renderer() == this);
+                        floatingObject.originatingLine()-&gt;markDirty();
</ins><span class="cx">                     }
</span><span class="cx"> #if !ASSERT_DISABLED
</span><del>-                    floatingObject-&gt;setOriginatingLine(0);
</del><ins>+                    floatingObject.setOriginatingLine(0);
</ins><span class="cx"> #endif
</span><span class="cx">                 }
</span><span class="cx">                 markLinesDirtyInBlockRange(0, logicalBottom);
</span><span class="cx">             }
</span><del>-            m_floatingObjects-&gt;remove(floatingObject);
</del><ins>+            m_floatingObjects-&gt;remove(&amp;floatingObject);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -2327,7 +2328,7 @@
</span><span class="cx">     
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     FloatingObject* curr = floatingObjectSet.last().get();
</span><del>-    while (curr != lastFloat &amp;&amp; (!curr-&gt;isPlaced() || logicalTopForFloat(curr) &gt;= logicalOffset)) {
</del><ins>+    while (curr != lastFloat &amp;&amp; (!curr-&gt;isPlaced() || logicalTopForFloat(*curr) &gt;= logicalOffset)) {
</ins><span class="cx">         m_floatingObjects-&gt;remove(curr);
</span><span class="cx">         if (floatingObjectSet.isEmpty())
</span><span class="cx">             break;
</span><span class="lines">@@ -2351,9 +2352,9 @@
</span><span class="cx">     return adjustLogicalRightOffsetForLine(offset, applyTextIndent);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject* floatingObject, LayoutUnit logicalTopOffset)
</del><ins>+LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject&amp; floatingObject, LayoutUnit logicalTopOffset)
</ins><span class="cx"> {
</span><del>-    RenderBox&amp; childBox = floatingObject-&gt;renderer();
</del><ins>+    auto&amp; childBox = floatingObject.renderer();
</ins><span class="cx">     LayoutUnit logicalLeftOffset = logicalLeftOffsetForContent(logicalTopOffset); // Constant part of left offset.
</span><span class="cx">     LayoutUnit logicalRightOffset = logicalRightOffsetForContent(logicalTopOffset); // Constant part of right offset.
</span><span class="cx"> 
</span><span class="lines">@@ -2471,19 +2472,18 @@
</span><span class="cx">     
</span><span class="cx">     // The float cannot start above the top position of the last positioned float.
</span><span class="cx">     if (lastPlacedFloatingObject)
</span><del>-        logicalTop = std::max(logicalTopForFloat(lastPlacedFloatingObject), logicalTop);
</del><ins>+        logicalTop = std::max(logicalTopForFloat(*lastPlacedFloatingObject), logicalTop);
</ins><span class="cx"> 
</span><span class="cx">     auto end = floatingObjectSet.end();
</span><span class="cx">     // Now walk through the set of unpositioned floats and place them.
</span><span class="cx">     for (; it != end; ++it) {
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
</del><ins>+        auto&amp; floatingObject = *it-&gt;get();
</ins><span class="cx">         // The containing block is responsible for positioning floats, so if we have floats in our
</span><span class="cx">         // list that come from somewhere else, do not attempt to position them.
</span><del>-        if (floatingObject-&gt;renderer().containingBlock() != this)
</del><ins>+        auto&amp; childBox = floatingObject.renderer();
+        if (childBox.containingBlock() != this)
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        RenderBox&amp; childBox = floatingObject-&gt;renderer();
-
</del><span class="cx">         LayoutUnit childLogicalLeftMargin = style().isLeftToRightDirection() ? marginStartForChild(childBox) : marginEndForChild(childBox);
</span><span class="cx"> 
</span><span class="cx">         LayoutRect oldRect = childBox.frameRect();
</span><span class="lines">@@ -2522,7 +2522,7 @@
</span><span class="cx">             }
</span><span class="cx">             
</span><span class="cx">             if (newLogicalTop != floatLogicalLocation.y()) {
</span><del>-                floatingObject-&gt;setPaginationStrut(newLogicalTop - floatLogicalLocation.y());
</del><ins>+                floatingObject.setPaginationStrut(newLogicalTop - floatLogicalLocation.y());
</ins><span class="cx"> 
</span><span class="cx">                 floatLogicalLocation = computeLogicalLocationForFloat(floatingObject, newLogicalTop);
</span><span class="cx">                 setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x());
</span><span class="lines">@@ -2545,7 +2545,7 @@
</span><span class="cx"> 
</span><span class="cx">         setLogicalHeightForFloat(floatingObject, logicalHeightForChildForFragmentation(childBox) + marginBeforeForChild(childBox) + marginAfterForChild(childBox));
</span><span class="cx"> 
</span><del>-        m_floatingObjects-&gt;addPlacedObject(floatingObject);
</del><ins>+        m_floatingObjects-&gt;addPlacedObject(&amp;floatingObject);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx">         if (ShapeOutsideInfo* shapeOutside = childBox.shapeOutsideInfo())
</span><span class="lines">@@ -2620,8 +2620,8 @@
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     auto end = floatingObjectSet.end();
</span><span class="cx">     for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
-        if (floatingObject-&gt;isPlaced() &amp;&amp; floatingObject-&gt;type() &amp; floatType)
</del><ins>+        const auto&amp; floatingObject = *it-&gt;get();
+        if (floatingObject.isPlaced() &amp;&amp; floatingObject.type() &amp; floatType)
</ins><span class="cx">             lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx">     }
</span><span class="cx">     return lowestFloatBottom;
</span><span class="lines">@@ -2635,8 +2635,8 @@
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     auto end = floatingObjectSet.end();
</span><span class="cx">     for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
-        if (floatingObject-&gt;isPlaced() &amp;&amp; floatingObject-&gt;renderer().style().styleType() == FIRST_LETTER &amp;&amp; floatingObject-&gt;renderer().style().initialLetterDrop() &gt; 0)
</del><ins>+        const auto&amp; floatingObject = *it-&gt;get();
+        if (floatingObject.isPlaced() &amp;&amp; floatingObject.renderer().style().styleType() == FIRST_LETTER &amp;&amp; floatingObject.renderer().style().initialLetterDrop() &gt; 0)
</ins><span class="cx">             lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx">     }
</span><span class="cx">     return lowestFloatBottom;
</span><span class="lines">@@ -2656,14 +2656,14 @@
</span><span class="cx">     // overflow.
</span><span class="cx">     auto childEnd = child.m_floatingObjects-&gt;set().end();
</span><span class="cx">     for (auto childIt = child.m_floatingObjects-&gt;set().begin(); childIt != childEnd; ++childIt) {
</span><del>-        FloatingObject* floatingObject = childIt-&gt;get();
</del><ins>+        auto&amp; floatingObject = *childIt-&gt;get();
</ins><span class="cx">         LayoutUnit floatLogicalBottom = std::min(logicalBottomForFloat(floatingObject), LayoutUnit::max() - childLogicalTop);
</span><span class="cx">         LayoutUnit logicalBottom = childLogicalTop + floatLogicalBottom;
</span><span class="cx">         lowestFloatLogicalBottom = std::max(lowestFloatLogicalBottom, logicalBottom);
</span><span class="cx"> 
</span><span class="cx">         if (logicalBottom &gt; logicalHeight()) {
</span><span class="cx">             // If the object is not in the list, we add it now.
</span><del>-            if (!containsFloat(floatingObject-&gt;renderer())) {
</del><ins>+            if (!containsFloat(floatingObject.renderer())) {
</ins><span class="cx">                 LayoutSize offset = isHorizontalWritingMode() ? LayoutSize(-childLogicalLeft, -childLogicalTop) : LayoutSize(-childLogicalTop, -childLogicalLeft);
</span><span class="cx">                 bool shouldPaint = false;
</span><span class="cx"> 
</span><span class="lines">@@ -2671,30 +2671,31 @@
</span><span class="cx">                 // behaves properly). We always want to propagate the desire to paint the float as
</span><span class="cx">                 // far out as we can, to the outermost block that overlaps the float, stopping only
</span><span class="cx">                 // if we hit a self-painting layer boundary.
</span><del>-                if (floatingObject-&gt;renderer().enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer()) {
-                    floatingObject-&gt;setShouldPaint(false);
</del><ins>+                if (floatingObject.renderer().enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer()) {
+                    floatingObject.setShouldPaint(false);
</ins><span class="cx">                     shouldPaint = true;
</span><span class="cx">                 }
</span><span class="cx">                 // We create the floating object list lazily.
</span><span class="cx">                 if (!m_floatingObjects)
</span><span class="cx">                     createFloatingObjects();
</span><span class="cx"> 
</span><del>-                m_floatingObjects-&gt;add(floatingObject-&gt;copyToNewContainer(offset, shouldPaint, true));
</del><ins>+                m_floatingObjects-&gt;add(floatingObject.copyToNewContainer(offset, shouldPaint, true));
</ins><span class="cx">             }
</span><span class="cx">         } else {
</span><del>-            if (makeChildPaintOtherFloats &amp;&amp; !floatingObject-&gt;shouldPaint() &amp;&amp; !floatingObject-&gt;renderer().hasSelfPaintingLayer()
-                &amp;&amp; floatingObject-&gt;renderer().isDescendantOf(&amp;child) &amp;&amp; floatingObject-&gt;renderer().enclosingFloatPaintingLayer() == child.enclosingFloatPaintingLayer()) {
</del><ins>+            const auto&amp; renderer = floatingObject.renderer();
+            if (makeChildPaintOtherFloats &amp;&amp; !floatingObject.shouldPaint() &amp;&amp; !renderer.hasSelfPaintingLayer()
+                &amp;&amp; renderer.isDescendantOf(&amp;child) &amp;&amp; renderer.enclosingFloatPaintingLayer() == child.enclosingFloatPaintingLayer()) {
</ins><span class="cx">                 // The float is not overhanging from this block, so if it is a descendant of the child, the child should
</span><span class="cx">                 // paint it (the other case is that it is intruding into the child), unless it has its own layer or enclosing
</span><span class="cx">                 // layer.
</span><span class="cx">                 // If makeChildPaintOtherFloats is false, it means that the child must already know about all the floats
</span><span class="cx">                 // it should paint.
</span><del>-                floatingObject-&gt;setShouldPaint(true);
</del><ins>+                floatingObject.setShouldPaint(true);
</ins><span class="cx">             }
</span><span class="cx">             
</span><span class="cx">             // Since the float doesn't overhang, it didn't get put into our list. We need to add its overflow in to the child now.
</span><del>-            if (floatingObject-&gt;isDescendant())
-                child.addOverflowFromChild(&amp;floatingObject-&gt;renderer(), LayoutSize(xPositionForFloatIncludingMargin(floatingObject), yPositionForFloatIncludingMargin(floatingObject)));
</del><ins>+            if (floatingObject.isDescendant())
+                child.addOverflowFromChild(&amp;renderer, LayoutSize(xPositionForFloatIncludingMargin(&amp;floatingObject), yPositionForFloatIncludingMargin(&amp;floatingObject)));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     return lowestFloatLogicalBottom;
</span><span class="lines">@@ -2706,11 +2707,11 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><del>-    auto it = floatingObjectSet.find&lt;RenderBox&amp;, FloatingObjectHashTranslator&gt;(renderer);
</del><ins>+    const auto it = floatingObjectSet.find&lt;RenderBox&amp;, FloatingObjectHashTranslator&gt;(renderer);
</ins><span class="cx">     if (it == floatingObjectSet.end())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return logicalBottomForFloat(it-&gt;get()) &gt; logicalHeight();
</del><ins>+    return logicalBottomForFloat(*it-&gt;get()) &gt; logicalHeight();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::addIntrudingFloats(RenderBlockFlow* prev, RenderBlockFlow* container, LayoutUnit logicalLeftOffset, LayoutUnit logicalTopOffset)
</span><span class="lines">@@ -2730,9 +2731,9 @@
</span><span class="cx">     const FloatingObjectSet&amp; prevSet = prev-&gt;m_floatingObjects-&gt;set();
</span><span class="cx">     auto prevEnd = prevSet.end();
</span><span class="cx">     for (auto prevIt = prevSet.begin(); prevIt != prevEnd; ++prevIt) {
</span><del>-        FloatingObject* floatingObject = prevIt-&gt;get();
</del><ins>+        auto&amp; floatingObject = *prevIt-&gt;get();
</ins><span class="cx">         if (logicalBottomForFloat(floatingObject) &gt; logicalTopOffset) {
</span><del>-            if (!m_floatingObjects || !m_floatingObjects-&gt;set().contains&lt;FloatingObject&amp;, FloatingObjectHashTranslator&gt;(*floatingObject)) {
</del><ins>+            if (!m_floatingObjects || !m_floatingObjects-&gt;set().contains&lt;FloatingObject&amp;, FloatingObjectHashTranslator&gt;(floatingObject)) {
</ins><span class="cx">                 // We create the floating object list lazily.
</span><span class="cx">                 if (!m_floatingObjects)
</span><span class="cx">                     createFloatingObjects();
</span><span class="lines">@@ -2746,7 +2747,7 @@
</span><span class="cx">                     ? LayoutSize(logicalLeftOffset - (prev != container ? prev-&gt;marginLeft() : LayoutUnit()), logicalTopOffset)
</span><span class="cx">                     : LayoutSize(logicalTopOffset, logicalLeftOffset - (prev != container ? prev-&gt;marginTop() : LayoutUnit()));
</span><span class="cx"> 
</span><del>-                m_floatingObjects-&gt;add(floatingObject-&gt;copyToNewContainer(offset));
</del><ins>+                m_floatingObjects-&gt;add(floatingObject.copyToNewContainer(offset));
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -297,41 +297,40 @@
</span><span class="cx"> 
</span><span class="cx">     const FloatingObjectSet* floatingObjectSet() const { return m_floatingObjects ? &amp;m_floatingObjects-&gt;set() : nullptr; }
</span><span class="cx"> 
</span><del>-    LayoutUnit logicalTopForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;y() : floatingObject-&gt;x(); }
-    LayoutUnit logicalBottomForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;maxY() : floatingObject-&gt;maxX(); }
-    LayoutUnit logicalLeftForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;x() : floatingObject-&gt;y(); }
-    LayoutUnit logicalRightForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;maxX() : floatingObject-&gt;maxY(); }
-    LayoutUnit logicalWidthForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;width() : floatingObject-&gt;height(); }
-    LayoutUnit logicalHeightForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;height() : floatingObject-&gt;width(); }
-    LayoutSize logicalSizeForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? LayoutSize(floatingObject-&gt;width(), floatingObject-&gt;height()) : LayoutSize(floatingObject-&gt;height(), floatingObject-&gt;width()); }
</del><ins>+    LayoutUnit logicalTopForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.y() : floatingObject.x(); }
+    LayoutUnit logicalBottomForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.maxY() : floatingObject.maxX(); }
+    LayoutUnit logicalLeftForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.x() : floatingObject.y(); }
+    LayoutUnit logicalRightForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.maxX() : floatingObject.maxY(); }
+    LayoutUnit logicalWidthForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.width() : floatingObject.height(); }
+    LayoutUnit logicalHeightForFloat(const FloatingObject&amp; floatingObject) const { return isHorizontalWritingMode() ? floatingObject.height() : floatingObject.width(); }
</ins><span class="cx"> 
</span><del>-    void setLogicalTopForFloat(FloatingObject* floatingObject, LayoutUnit logicalTop)
</del><ins>+    void setLogicalTopForFloat(FloatingObject&amp; floatingObject, LayoutUnit logicalTop)
</ins><span class="cx">     {
</span><span class="cx">         if (isHorizontalWritingMode())
</span><del>-            floatingObject-&gt;setY(logicalTop);
</del><ins>+            floatingObject.setY(logicalTop);
</ins><span class="cx">         else
</span><del>-            floatingObject-&gt;setX(logicalTop);
</del><ins>+            floatingObject.setX(logicalTop);
</ins><span class="cx">     }
</span><del>-    void setLogicalLeftForFloat(FloatingObject* floatingObject, LayoutUnit logicalLeft)
</del><ins>+    void setLogicalLeftForFloat(FloatingObject&amp; floatingObject, LayoutUnit logicalLeft)
</ins><span class="cx">     {
</span><span class="cx">         if (isHorizontalWritingMode())
</span><del>-            floatingObject-&gt;setX(logicalLeft);
</del><ins>+            floatingObject.setX(logicalLeft);
</ins><span class="cx">         else
</span><del>-            floatingObject-&gt;setY(logicalLeft);
</del><ins>+            floatingObject.setY(logicalLeft);
</ins><span class="cx">     }
</span><del>-    void setLogicalHeightForFloat(FloatingObject* floatingObject, LayoutUnit logicalHeight)
</del><ins>+    void setLogicalHeightForFloat(FloatingObject&amp; floatingObject, LayoutUnit logicalHeight)
</ins><span class="cx">     {
</span><span class="cx">         if (isHorizontalWritingMode())
</span><del>-            floatingObject-&gt;setHeight(logicalHeight);
</del><ins>+            floatingObject.setHeight(logicalHeight);
</ins><span class="cx">         else
</span><del>-            floatingObject-&gt;setWidth(logicalHeight);
</del><ins>+            floatingObject.setWidth(logicalHeight);
</ins><span class="cx">     }
</span><del>-    void setLogicalWidthForFloat(FloatingObject* floatingObject, LayoutUnit logicalWidth)
</del><ins>+    void setLogicalWidthForFloat(FloatingObject&amp; floatingObject, LayoutUnit logicalWidth)
</ins><span class="cx">     {
</span><span class="cx">         if (isHorizontalWritingMode())
</span><del>-            floatingObject-&gt;setWidth(logicalWidth);
</del><ins>+            floatingObject.setWidth(logicalWidth);
</ins><span class="cx">         else
</span><del>-            floatingObject-&gt;setHeight(logicalWidth);
</del><ins>+            floatingObject.setHeight(logicalWidth);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit xPositionForFloatIncludingMargin(const FloatingObject* child) const { return isHorizontalWritingMode() ? child-&gt;x() + child-&gt;renderer().marginLeft() : child-&gt;x() + marginBeforeForChild(child-&gt;renderer()); }
</span><span class="lines">@@ -490,7 +489,7 @@
</span><span class="cx">     FloatingObject* insertFloatingObject(RenderBox&amp;);
</span><span class="cx">     void removeFloatingObject(RenderBox&amp;);
</span><span class="cx">     void removeFloatingObjectsBelow(FloatingObject*, int logicalOffset);
</span><del>-    LayoutPoint computeLogicalLocationForFloat(const FloatingObject*, LayoutUnit logicalTopOffset);
</del><ins>+    LayoutPoint computeLogicalLocationForFloat(const FloatingObject&amp;, LayoutUnit logicalTopOffset);
</ins><span class="cx"> 
</span><span class="cx">     // Called from lineWidth, to position the floats added in the last line.
</span><span class="cx">     // Returns true if and only if it has positioned any floats.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -1255,7 +1255,7 @@
</span><span class="cx"> 
</span><span class="cx">         const InlineIterator oldEnd = end;
</span><span class="cx">         bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly();
</span><del>-        FloatingObject* lastFloatFromPreviousLine = (containsFloats()) ? m_floatingObjects-&gt;set().last().get() : 0;
</del><ins>+        FloatingObject* lastFloatFromPreviousLine = (containsFloats()) ? m_floatingObjects-&gt;set().last().get() : nullptr;
</ins><span class="cx"> 
</span><span class="cx">         WordMeasurements wordMeasurements;
</span><span class="cx">         end = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), layoutState, renderTextInfo, lastFloatFromPreviousLine, consecutiveHyphenatedLines, wordMeasurements);
</span><span class="lines">@@ -1898,7 +1898,7 @@
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     auto end = floatingObjectSet.end();
</span><span class="cx">     for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
</del><ins>+        const auto&amp; floatingObject = *it-&gt;get();
</ins><span class="cx">         if (logicalBottomForFloat(floatingObject) &gt;= logicalTop &amp;&amp; logicalBottomForFloat(floatingObject) &lt; logicalBottom)
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="lines">@@ -2075,7 +2075,7 @@
</span><span class="cx">     const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
</span><span class="cx">     ASSERT(floatingObjectSet.last().get() == &amp;newFloat);
</span><span class="cx"> 
</span><del>-    LayoutUnit floatLogicalTop = logicalTopForFloat(&amp;newFloat);
</del><ins>+    LayoutUnit floatLogicalTop = logicalTopForFloat(newFloat);
</ins><span class="cx">     LayoutUnit paginationStrut = newFloat.paginationStrut();
</span><span class="cx"> 
</span><span class="cx">     if (floatLogicalTop - paginationStrut != logicalHeight() + lineInfo.floatPaginationStrut())
</span><span class="lines">@@ -2086,15 +2086,15 @@
</span><span class="cx">     auto begin = floatingObjectSet.begin();
</span><span class="cx">     while (it != begin) {
</span><span class="cx">         --it;
</span><del>-        FloatingObject* floatingObject = it-&gt;get();
-        if (floatingObject == lastFloatFromPreviousLine)
</del><ins>+        auto&amp; floatingObject = *it-&gt;get();
+        if (&amp;floatingObject == lastFloatFromPreviousLine)
</ins><span class="cx">             break;
</span><span class="cx">         if (logicalTopForFloat(floatingObject) == logicalHeight() + lineInfo.floatPaginationStrut()) {
</span><del>-            floatingObject-&gt;setPaginationStrut(paginationStrut + floatingObject-&gt;paginationStrut());
-            RenderBox&amp; floatBox = floatingObject-&gt;renderer();
</del><ins>+            floatingObject.setPaginationStrut(paginationStrut + floatingObject.paginationStrut());
+            RenderBox&amp; floatBox = floatingObject.renderer();
</ins><span class="cx">             setLogicalTopForChild(floatBox, logicalTopForChild(floatBox) + marginBeforeForChild(floatBox) + paginationStrut);
</span><span class="cx"> 
</span><del>-            if (updateRegionRangeForBoxChild(floatingObject-&gt;renderer()))
</del><ins>+            if (updateRegionRangeForBoxChild(floatBox))
</ins><span class="cx">                 floatBox.setNeedsLayout(MarkOnlyThis);
</span><span class="cx">             else if (is&lt;RenderBlock&gt;(floatBox))
</span><span class="cx">                 downcast&lt;RenderBlock&gt;(floatBox).setChildNeedsLayout(MarkOnlyThis);
</span><span class="lines">@@ -2103,9 +2103,9 @@
</span><span class="cx">             // Save the old logical top before calling removePlacedObject which will set
</span><span class="cx">             // isPlaced to false. Otherwise it will trigger an assert in logicalTopForFloat.
</span><span class="cx">             LayoutUnit oldLogicalTop = logicalTopForFloat(floatingObject);
</span><del>-            m_floatingObjects-&gt;removePlacedObject(floatingObject);
</del><ins>+            m_floatingObjects-&gt;removePlacedObject(&amp;floatingObject);
</ins><span class="cx">             setLogicalTopForFloat(floatingObject, oldLogicalTop + paginationStrut);
</span><del>-            m_floatingObjects-&gt;addPlacedObject(floatingObject);
</del><ins>+            m_floatingObjects-&gt;addPlacedObject(&amp;floatingObject);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -4447,7 +4447,7 @@
</span><span class="cx">     return LayoutRect(overflowMinX, overflowMinY, overflowMaxX - overflowMinX, overflowMaxY - overflowMinY);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderBox::addOverflowFromChild(RenderBox* child, const LayoutSize&amp; delta)
</del><ins>+void RenderBox::addOverflowFromChild(const RenderBox* child, const LayoutSize&amp; delta)
</ins><span class="cx"> {
</span><span class="cx">     // Never allow flow threads to propagate overflow up to a parent.
</span><span class="cx">     if (child-&gt;isRenderFlowThread())
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -204,8 +204,8 @@
</span><span class="cx">     
</span><span class="cx">     void addVisualEffectOverflow();
</span><span class="cx">     LayoutRect applyVisualEffectOverflow(const LayoutRect&amp;) const;
</span><del>-    void addOverflowFromChild(RenderBox* child) { addOverflowFromChild(child, child-&gt;locationOffset()); }
-    void addOverflowFromChild(RenderBox* child, const LayoutSize&amp; delta);
</del><ins>+    void addOverflowFromChild(const RenderBox* child) { addOverflowFromChild(child, child-&gt;locationOffset()); }
+    void addOverflowFromChild(const RenderBox* child, const LayoutSize&amp; delta);
</ins><span class="cx">     
</span><span class="cx">     void updateLayerTransform();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineBreakingContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/BreakingContext.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/BreakingContext.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/line/BreakingContext.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -444,12 +444,12 @@
</span><span class="cx"> inline void BreakingContext::handleFloat()
</span><span class="cx"> {
</span><span class="cx">     auto&amp; floatBox = downcast&lt;RenderBox&gt;(*m_current.renderer());
</span><del>-    FloatingObject* floatingObject = m_lineBreaker.insertFloatingObject(floatBox);
</del><ins>+    const auto&amp; floatingObject = *m_lineBreaker.insertFloatingObject(floatBox);
</ins><span class="cx">     // check if it fits in the current line.
</span><span class="cx">     // If it does, position it now, otherwise, position
</span><span class="cx">     // it after moving to next line (in clearFloats() func)
</span><span class="cx">     if (m_floatsFitOnLine &amp;&amp; m_width.fitsOnLineExcludingTrailingWhitespace(m_block.logicalWidthForFloat(floatingObject))) {
</span><del>-        m_lineBreaker.positionNewFloatOnLine(*floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width);
</del><ins>+        m_lineBreaker.positionNewFloatOnLine(floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width);
</ins><span class="cx">         if (m_lineBreakHistory.renderer() == m_current.renderer()) {
</span><span class="cx">             ASSERT(!m_lineBreakHistory.offset());
</span><span class="cx">             m_lineBreakHistory.increment();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineLineWidthcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/LineWidth.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/LineWidth.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/line/LineWidth.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> static bool newFloatShrinksLine(const FloatingObject&amp; newFloat, const RenderBlockFlow&amp; block, bool isFirstLine)
</span><span class="cx"> {
</span><span class="cx">     LayoutUnit blockOffset = block.logicalHeight();
</span><del>-    if (blockOffset &gt;= block.logicalTopForFloat(&amp;newFloat) &amp;&amp; blockOffset &lt; block.logicalBottomForFloat(&amp;newFloat))
</del><ins>+    if (blockOffset &gt;= block.logicalTopForFloat(newFloat) &amp;&amp; blockOffset &lt; block.logicalBottomForFloat(newFloat))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     // initial-letter float always shrinks the first line.
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (newFloat.type() == FloatingObject::FloatLeft) {
</span><del>-        float newLeft = m_block.logicalRightForFloat(&amp;newFloat);
</del><ins>+        float newLeft = m_block.logicalRightForFloat(newFloat);
</ins><span class="cx">         if (shouldIndentText() &amp;&amp; m_block.style().isLeftToRightDirection())
</span><span class="cx">             newLeft += floorToInt(m_block.textIndentOffset());
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> #endif
</span><span class="cx">         m_left = std::max&lt;float&gt;(m_left, newLeft);
</span><span class="cx">     } else {
</span><del>-        float newRight = m_block.logicalLeftForFloat(&amp;newFloat);
</del><ins>+        float newRight = m_block.logicalLeftForFloat(newFloat);
</ins><span class="cx">         if (shouldIndentText() &amp;&amp; !m_block.style().isLeftToRightDirection())
</span><span class="cx">             newRight -= floorToInt(m_block.textIndentOffset());
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingshapesShapeOutsideInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -307,12 +307,12 @@
</span><span class="cx"> ShapeOutsideDeltas ShapeOutsideInfo::computeDeltasForContainingBlockLine(const RenderBlockFlow&amp; containingBlock, const FloatingObject&amp; floatingObject, LayoutUnit lineTop, LayoutUnit lineHeight)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(lineHeight &gt;= 0);
</span><del>-    LayoutUnit borderBoxTop = containingBlock.logicalTopForFloat(&amp;floatingObject) + containingBlock.marginBeforeForChild(m_renderer);
</del><ins>+    LayoutUnit borderBoxTop = containingBlock.logicalTopForFloat(floatingObject) + containingBlock.marginBeforeForChild(m_renderer);
</ins><span class="cx">     LayoutUnit borderBoxLineTop = lineTop - borderBoxTop;
</span><span class="cx"> 
</span><span class="cx">     if (isShapeDirty() || !m_shapeOutsideDeltas.isForLine(borderBoxLineTop, lineHeight)) {
</span><span class="cx">         LayoutUnit referenceBoxLineTop = borderBoxLineTop - logicalTopOffset();
</span><del>-        LayoutUnit floatMarginBoxWidth = std::max&lt;LayoutUnit&gt;(LayoutUnit(), containingBlock.logicalWidthForFloat(&amp;floatingObject));
</del><ins>+        LayoutUnit floatMarginBoxWidth = std::max&lt;LayoutUnit&gt;(LayoutUnit(), containingBlock.logicalWidthForFloat(floatingObject));
</ins><span class="cx"> 
</span><span class="cx">         if (computedShape().lineOverlapsShapeMarginBounds(referenceBoxLineTop, lineHeight)) {
</span><span class="cx">             LineSegment segment = computedShape().getExcludedInterval((borderBoxLineTop - logicalTopOffset()), std::min(lineHeight, shapeLogicalBottom() - borderBoxLineTop));
</span></span></pre>
</div>
</div>

</body>
</html>