<!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>[185517] 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/185517">185517</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2015-06-12 11:43:01 -0700 (Fri, 12 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/185512">r185512</a>.
https://bugs.webkit.org/show_bug.cgi?id=145932

Many asserts on layout tests and on API tests (Requested by
ap_ on #webkit).

Reverted changeset:

&quot;Use modern for-loops in WebCore/rendering - 1&quot;
https://bugs.webkit.org/show_bug.cgi?id=145831
http://trac.webkit.org/changeset/185512</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingAutoTableLayoutcpp">trunk/Source/WebCore/rendering/AutoTableLayout.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingFilterEffectRenderercpp">trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingFilterEffectRendererh">trunk/Source/WebCore/rendering/FilterEffectRenderer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingFloatingObjectscpp">trunk/Source/WebCore/rendering/FloatingObjects.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingFlowThreadControllercpp">trunk/Source/WebCore/rendering/FlowThreadController.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingHitTestResultcpp">trunk/Source/WebCore/rendering/HitTestResult.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingImageQualityControllercpp">trunk/Source/WebCore/rendering/ImageQualityController.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingInlineTextBoxcpp">trunk/Source/WebCore/rendering/InlineTextBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockLineLayoutcpp">trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderCountercpp">trunk/Source/WebCore/rendering/RenderCounter.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlexibleBoxcpp">trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadcpp">trunk/Source/WebCore/rendering/RenderFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlinecpp">trunk/Source/WebCore/rendering/RenderInline.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLineBoxListcpp">trunk/Source/WebCore/rendering/RenderLineBoxList.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxcpp">trunk/Source/WebCore/rendering/RenderListBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMenuListcpp">trunk/Source/WebCore/rendering/RenderMenuList.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSetcpp">trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/ChangeLog        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-06-12  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r185512.
+        https://bugs.webkit.org/show_bug.cgi?id=145932
+
+        Many asserts on layout tests and on API tests (Requested by
+        ap_ on #webkit).
+
+        Reverted changeset:
+
+        &quot;Use modern for-loops in WebCore/rendering - 1&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=145831
+        http://trac.webkit.org/changeset/185512
+
</ins><span class="cx"> 2015-06-12  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         OpenGLESSPI.h doesn't need to include UIKit.h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingAutoTableLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/AutoTableLayout.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/AutoTableLayout.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/AutoTableLayout.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -226,17 +226,17 @@
</span><span class="cx">     const float epsilon = 1 / 128.0f;
</span><span class="cx"> 
</span><span class="cx">     float remainingPercent = 100;
</span><del>-    for (auto&amp; layout : m_layoutStruct) {
-        minWidth += layout.effectiveMinLogicalWidth;
-        maxWidth += layout.effectiveMaxLogicalWidth;
</del><ins>+    for (size_t i = 0; i &lt; m_layoutStruct.size(); ++i) {
+        minWidth += m_layoutStruct[i].effectiveMinLogicalWidth;
+        maxWidth += m_layoutStruct[i].effectiveMaxLogicalWidth;
</ins><span class="cx">         if (scaleColumns) {
</span><del>-            if (layout.effectiveLogicalWidth.isPercent()) {
-                float percent = std::min(layout.effectiveLogicalWidth.percent(), remainingPercent);
-                float logicalWidth = static_cast&lt;float&gt;(layout.effectiveMaxLogicalWidth) * 100 / std::max(percent, epsilon);
</del><ins>+            if (m_layoutStruct[i].effectiveLogicalWidth.isPercent()) {
+                float percent = std::min(m_layoutStruct[i].effectiveLogicalWidth.percent(), remainingPercent);
+                float logicalWidth = static_cast&lt;float&gt;(m_layoutStruct[i].effectiveMaxLogicalWidth) * 100 / std::max(percent, epsilon);
</ins><span class="cx">                 maxPercent = std::max(logicalWidth,  maxPercent);
</span><span class="cx">                 remainingPercent -= percent;
</span><span class="cx">             } else
</span><del>-                maxNonPercent += layout.effectiveMaxLogicalWidth;
</del><ins>+                maxNonPercent += m_layoutStruct[i].effectiveMaxLogicalWidth;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -264,15 +264,17 @@
</span><span class="cx"> {
</span><span class="cx">     int maxLogicalWidth = 0;
</span><span class="cx"> 
</span><ins>+    size_t nEffCols = m_layoutStruct.size();
</ins><span class="cx">     int spacingInRowDirection = m_table-&gt;hBorderSpacing();
</span><span class="cx"> 
</span><del>-    for (auto&amp; layout : m_layoutStruct) {
-        layout.effectiveLogicalWidth = layout.logicalWidth;
-        layout.effectiveMinLogicalWidth = layout.minLogicalWidth;
-        layout.effectiveMaxLogicalWidth = layout.maxLogicalWidth;
</del><ins>+    for (size_t i = 0; i &lt; nEffCols; ++i) {
+        m_layoutStruct[i].effectiveLogicalWidth = m_layoutStruct[i].logicalWidth;
+        m_layoutStruct[i].effectiveMinLogicalWidth = m_layoutStruct[i].minLogicalWidth;
+        m_layoutStruct[i].effectiveMaxLogicalWidth = m_layoutStruct[i].maxLogicalWidth;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto&amp; cell : m_spanCells) {
</del><ins>+    for (size_t i = 0; i &lt; m_spanCells.size(); ++i) {
+        RenderTableCell* cell = m_spanCells[i];
</ins><span class="cx">         if (!cell)
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="lines">@@ -294,7 +296,7 @@
</span><span class="cx">         bool haveAuto = false;
</span><span class="cx">         bool spanHasEmptyCellsOnly = true;
</span><span class="cx">         int fixedWidth = 0;
</span><del>-        while (lastCol &lt; m_layoutStruct.size() &amp;&amp; span &gt; 0) {
</del><ins>+        while (lastCol &lt; nEffCols &amp;&amp; span &gt; 0) {
</ins><span class="cx">             Layout&amp; columnLayout = m_layoutStruct[lastCol];
</span><span class="cx">             switch (columnLayout.logicalWidth.type()) {
</span><span class="cx">             case Percent:
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFilterEffectRenderercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -135,17 +135,18 @@
</span><span class="cx">     m_effects.clear();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;FilterEffect&gt; previousEffect = m_sourceGraphic;
</span><del>-    for (auto&amp; filterOperation : operations.operations()) {
</del><ins>+    for (size_t i = 0; i &lt; operations.operations().size(); ++i) {
</ins><span class="cx">         RefPtr&lt;FilterEffect&gt; effect;
</span><del>-        switch (filterOperation-&gt;type()) {
</del><ins>+        FilterOperation&amp; filterOperation = *operations.operations().at(i);
+        switch (filterOperation.type()) {
</ins><span class="cx">         case FilterOperation::REFERENCE: {
</span><del>-            ReferenceFilterOperation&amp; referenceOperation = downcast&lt;ReferenceFilterOperation&gt;(*filterOperation);
</del><ins>+            ReferenceFilterOperation&amp; referenceOperation = downcast&lt;ReferenceFilterOperation&gt;(filterOperation);
</ins><span class="cx">             effect = buildReferenceFilter(renderer, previousEffect, &amp;referenceOperation);
</span><span class="cx">             referenceOperation.setFilterEffect(effect);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::GRAYSCALE: {
</span><del>-            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(filterOperation);
</ins><span class="cx">             Vector&lt;float&gt; inputParameters;
</span><span class="cx">             double oneMinusAmount = clampTo(1 - colorMatrixOperation.amount(), 0.0, 1.0);
</span><span class="cx"> 
</span><span class="lines">@@ -173,7 +174,7 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::SEPIA: {
</span><del>-            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(filterOperation);
</ins><span class="cx">             Vector&lt;float&gt; inputParameters;
</span><span class="cx">             double oneMinusAmount = clampTo(1 - colorMatrixOperation.amount(), 0.0, 1.0);
</span><span class="cx"> 
</span><span class="lines">@@ -201,21 +202,21 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::SATURATE: {
</span><del>-            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(filterOperation);
</ins><span class="cx">             Vector&lt;float&gt; inputParameters;
</span><span class="cx">             inputParameters.append(narrowPrecisionToFloat(colorMatrixOperation.amount()));
</span><span class="cx">             effect = FEColorMatrix::create(*this, FECOLORMATRIX_TYPE_SATURATE, inputParameters);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::HUE_ROTATE: {
</span><del>-            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicColorMatrixFilterOperation&amp; colorMatrixOperation = downcast&lt;BasicColorMatrixFilterOperation&gt;(filterOperation);
</ins><span class="cx">             Vector&lt;float&gt; inputParameters;
</span><span class="cx">             inputParameters.append(narrowPrecisionToFloat(colorMatrixOperation.amount()));
</span><span class="cx">             effect = FEColorMatrix::create(*this, FECOLORMATRIX_TYPE_HUEROTATE, inputParameters);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::INVERT: {
</span><del>-            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(filterOperation);
</ins><span class="cx">             ComponentTransferFunction transferFunction;
</span><span class="cx">             transferFunction.type = FECOMPONENTTRANSFER_TYPE_TABLE;
</span><span class="cx">             Vector&lt;float&gt; transferParameters;
</span><span class="lines">@@ -228,7 +229,7 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::OPACITY: {
</span><del>-            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(filterOperation);
</ins><span class="cx">             ComponentTransferFunction transferFunction;
</span><span class="cx">             transferFunction.type = FECOMPONENTTRANSFER_TYPE_TABLE;
</span><span class="cx">             Vector&lt;float&gt; transferParameters;
</span><span class="lines">@@ -241,7 +242,7 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::BRIGHTNESS: {
</span><del>-            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(filterOperation);
</ins><span class="cx">             ComponentTransferFunction transferFunction;
</span><span class="cx">             transferFunction.type = FECOMPONENTTRANSFER_TYPE_LINEAR;
</span><span class="cx">             transferFunction.slope = narrowPrecisionToFloat(componentTransferOperation.amount());
</span><span class="lines">@@ -252,7 +253,7 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::CONTRAST: {
</span><del>-            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(*filterOperation);
</del><ins>+            BasicComponentTransferFilterOperation&amp; componentTransferOperation = downcast&lt;BasicComponentTransferFilterOperation&gt;(filterOperation);
</ins><span class="cx">             ComponentTransferFunction transferFunction;
</span><span class="cx">             transferFunction.type = FECOMPONENTTRANSFER_TYPE_LINEAR;
</span><span class="cx">             float amount = narrowPrecisionToFloat(componentTransferOperation.amount());
</span><span class="lines">@@ -264,13 +265,13 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::BLUR: {
</span><del>-            BlurFilterOperation&amp; blurOperation = downcast&lt;BlurFilterOperation&gt;(*filterOperation);
</del><ins>+            BlurFilterOperation&amp; blurOperation = downcast&lt;BlurFilterOperation&gt;(filterOperation);
</ins><span class="cx">             float stdDeviation = floatValueForLength(blurOperation.stdDeviation(), 0);
</span><span class="cx">             effect = FEGaussianBlur::create(*this, stdDeviation, stdDeviation, consumer == FilterProperty ? EDGEMODE_NONE : EDGEMODE_DUPLICATE);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case FilterOperation::DROP_SHADOW: {
</span><del>-            DropShadowFilterOperation&amp; dropShadowOperation = downcast&lt;DropShadowFilterOperation&gt;(*filterOperation);
</del><ins>+            DropShadowFilterOperation&amp; dropShadowOperation = downcast&lt;DropShadowFilterOperation&gt;(filterOperation);
</ins><span class="cx">             effect = FEDropShadow::create(*this, dropShadowOperation.stdDeviation(), dropShadowOperation.stdDeviation(),
</span><span class="cx">                 dropShadowOperation.x(), dropShadowOperation.y(), dropShadowOperation.color(), 1);
</span><span class="cx">             break;
</span><span class="lines">@@ -285,7 +286,7 @@
</span><span class="cx">             effect-&gt;setClipsToBounds(consumer == FilterFunction);
</span><span class="cx">             effect-&gt;setOperatingColorSpace(ColorSpaceDeviceRGB);
</span><span class="cx">             
</span><del>-            if (filterOperation-&gt;type() != FilterOperation::REFERENCE) {
</del><ins>+            if (filterOperation.type() != FilterOperation::REFERENCE) {
</ins><span class="cx">                 effect-&gt;inputEffects().append(previousEffect);
</span><span class="cx">                 m_effects.append(effect);
</span><span class="cx">             }
</span><span class="lines">@@ -330,8 +331,8 @@
</span><span class="cx"> void FilterEffectRenderer::clearIntermediateResults()
</span><span class="cx"> {
</span><span class="cx">     m_sourceGraphic-&gt;clearResult();
</span><del>-    for (auto&amp; effect : m_effects)
-        effect-&gt;clearResult();
</del><ins>+    for (size_t i = 0; i &lt; m_effects.size(); ++i)
+        m_effects[i]-&gt;clearResult();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FilterEffectRenderer::apply()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFilterEffectRendererh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FilterEffectRenderer.h (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FilterEffectRenderer.h        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/FilterEffectRenderer.h        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -120,8 +120,10 @@
</span><span class="cx"> private:
</span><span class="cx">     void setMaxEffectRects(const FloatRect&amp; effectRect)
</span><span class="cx">     {
</span><del>-        for (auto&amp; effect : m_effects)
</del><ins>+        for (size_t i = 0; i &lt; m_effects.size(); ++i) {
+            RefPtr&lt;FilterEffect&gt; effect = m_effects.at(i);
</ins><span class="cx">             effect-&gt;setMaxEffectRect(effectRect);
</span><ins>+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     FilterEffect* lastEffect() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFloatingObjectscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FloatingObjects.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -266,9 +266,9 @@
</span><span class="cx"> void FloatingObjects::clearLineBoxTreePointers()
</span><span class="cx"> {
</span><span class="cx">     // Clear references to originating lines, since the lines are being deleted
</span><del>-    for (auto&amp; floatingObject : m_set) {
-        ASSERT(!floatingObject-&gt;originatingLine() || &amp;floatingObject-&gt;originatingLine()-&gt;renderer() == &amp;m_renderer);
-        floatingObject-&gt;setOriginatingLine(nullptr);
</del><ins>+    for (auto it = m_set.begin(), end = m_set.end(); it != end; ++it) {
+        ASSERT(!((*it)-&gt;originatingLine()) || &amp;((*it)-&gt;originatingLine()-&gt;renderer()) == &amp;m_renderer);
+        (*it)-&gt;setOriginatingLine(0);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -282,12 +282,12 @@
</span><span class="cx"> 
</span><span class="cx"> void FloatingObjects::moveAllToFloatInfoMap(RendererToFloatInfoMap&amp; map)
</span><span class="cx"> {
</span><del>-    for (auto&amp; floatingObject : m_set) {
-        auto&amp; renderer = floatingObject-&gt;renderer();
</del><ins>+    for (auto it = m_set.begin(), end = m_set.end(); it != end; ++it) {
+        auto&amp; renderer = it-&gt;get()-&gt;renderer();
</ins><span class="cx">         // FIXME: The only reason it is safe to move these out of the set is that
</span><span class="cx">         // we are about to clear it. Otherwise it would break the hash table invariant.
</span><span class="cx">         // A clean way to do this would be to add a takeAll function to HashSet.
</span><del>-        map.add(&amp;renderer, WTF::move(floatingObject));
</del><ins>+        map.add(&amp;renderer, WTF::move(*it));
</ins><span class="cx">     }
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="lines">@@ -374,9 +374,10 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_placedFloatsTree = std::make_unique&lt;FloatingObjectTree&gt;();
</span><del>-    for (auto&amp; floatingObject : m_set) {
</del><ins>+    for (auto it = m_set.begin(), end = m_set.end(); it != end; ++it) {
+        FloatingObject* floatingObject = it-&gt;get();
</ins><span class="cx">         if (floatingObject-&gt;isPlaced())
</span><del>-            m_placedFloatsTree-&gt;add(intervalForFloatingObject(floatingObject.get()));
</del><ins>+            m_placedFloatsTree-&gt;add(intervalForFloatingObject(floatingObject));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFlowThreadControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FlowThreadController.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FlowThreadController.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/FlowThreadController.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -274,7 +274,8 @@
</span><span class="cx"> 
</span><span class="cx">         RenderLayer* flowThreadLayer = flowRenderer-&gt;layer();
</span><span class="cx">         if (Vector&lt;RenderLayer*&gt;* negZOrderList = flowThreadLayer-&gt;negZOrderList()) {
</span><del>-            for (auto&amp; currLayer : *negZOrderList) {
</del><ins>+            for (size_t i = 0, size = negZOrderList-&gt;size(); i &lt; size; ++i) {
+                RenderLayer* currLayer = negZOrderList-&gt;at(i);
</ins><span class="cx">                 if (currLayer-&gt;renderer().style().position() != FixedPosition)
</span><span class="cx">                     continue;
</span><span class="cx">                 fixedPosLayers.append(currLayer);
</span><span class="lines">@@ -282,7 +283,8 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (Vector&lt;RenderLayer*&gt;* posZOrderList = flowThreadLayer-&gt;posZOrderList()) {
</span><del>-            for (auto&amp; currLayer : *posZOrderList) {
</del><ins>+            for (size_t i = 0, size = posZOrderList-&gt;size(); i &lt; size; ++i) {
+                RenderLayer* currLayer = posZOrderList-&gt;at(i);
</ins><span class="cx">                 if (currLayer-&gt;renderer().style().position() != FixedPosition)
</span><span class="cx">                     continue;
</span><span class="cx">                 fixedPosLayers.append(currLayer);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingHitTestResultcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/HitTestResult.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/HitTestResult.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/HitTestResult.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -702,8 +702,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (other.m_rectBasedTestResult) {
</span><span class="cx">         NodeSet&amp; set = mutableRectBasedTestResult();
</span><del>-        for (auto&amp; result : *other.m_rectBasedTestResult)
-            set.add(result);
</del><ins>+        for (NodeSet::const_iterator it = other.m_rectBasedTestResult-&gt;begin(), last = other.m_rectBasedTestResult-&gt;end(); it != last; ++it)
+            set.add(it-&gt;get());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingImageQualityControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/ImageQualityController.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/ImageQualityController.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/ImageQualityController.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -88,8 +88,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto&amp; object : m_objectLayerSizeMap.keys())
-        object-&gt;repaint();
</del><ins>+    for (auto it = m_objectLayerSizeMap.begin(), end = m_objectLayerSizeMap.end(); it != end; ++it)
+        it-&gt;key-&gt;repaint();
</ins><span class="cx"> 
</span><span class="cx">     m_liveResizeOptimizationIsActive = false;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingInlineTextBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/InlineTextBox.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/InlineTextBox.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/InlineTextBox.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -630,7 +630,12 @@
</span><span class="cx">         paintDocumentMarkers(context, boxOrigin, lineStyle, font, false);
</span><span class="cx"> 
</span><span class="cx">         if (useCustomUnderlines) {
</span><del>-            for (auto&amp; underline : renderer().frame().editor().customCompositionUnderlines()) {
</del><ins>+            const Vector&lt;CompositionUnderline&gt;&amp; underlines = renderer().frame().editor().customCompositionUnderlines();
+            size_t numUnderlines = underlines.size();
+
+            for (size_t index = 0; index &lt; numUnderlines; ++index) {
+                const CompositionUnderline&amp; underline = underlines[index];
+
</ins><span class="cx">                 if (underline.endOffset &lt;= start())
</span><span class="cx">                     // underline is completely before this run.  This might be an underline that sits
</span><span class="cx">                     // before the first run we draw, or underlines that were within runs we skipped 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -193,9 +193,10 @@
</span><span class="cx"> 
</span><span class="cx"> static void removeBlockFromDescendantAndContainerMaps(RenderBlock* block, TrackedDescendantsMap*&amp; descendantMap, TrackedContainerMap*&amp; containerMap)
</span><span class="cx"> {
</span><del>-    if (auto descendantSet = descendantMap-&gt;take(block)) {
-        for (auto&amp; box : *descendantSet) {
-            auto it = containerMap-&gt;find(box);
</del><ins>+    if (std::unique_ptr&lt;TrackedRendererListHashSet&gt; descendantSet = descendantMap-&gt;take(block)) {
+        TrackedRendererListHashSet::iterator end = descendantSet-&gt;end();
+        for (TrackedRendererListHashSet::iterator descendant = descendantSet-&gt;begin(); descendant != end; ++descendant) {
+            TrackedContainerMap::iterator it = containerMap-&gt;find(*descendant);
</ins><span class="cx">             ASSERT(it != containerMap-&gt;end());
</span><span class="cx">             if (it == containerMap-&gt;end())
</span><span class="cx">                 continue;
</span><span class="lines">@@ -1050,7 +1051,9 @@
</span><span class="cx">     if (!positionedDescendants)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; positionedObject : *positionedDescendants) {
</del><ins>+    for (auto it = positionedDescendants-&gt;begin(), end = positionedDescendants-&gt;end(); it != end; ++it) {
+        RenderBox* positionedObject = *it;
+        
</ins><span class="cx">         // Fixed positioned elements don't contribute to layout overflow, since they don't scroll with the content.
</span><span class="cx">         if (positionedObject-&gt;style().position() != FixedPosition) {
</span><span class="cx">             LayoutUnit x = positionedObject-&gt;x();
</span><span class="lines">@@ -1145,7 +1148,8 @@
</span><span class="cx">     if (!descendants)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; box : *descendants) {
</del><ins>+    for (auto it = descendants-&gt;begin(), end = descendants-&gt;end(); it != end; ++it) {
+        RenderBox* box = *it;
</ins><span class="cx">         while (box != this) {
</span><span class="cx">             if (box-&gt;normalChildNeedsLayout())
</span><span class="cx">                 break;
</span><span class="lines">@@ -1182,9 +1186,11 @@
</span><span class="cx"> 
</span><span class="cx">         // FIXME: Glyph overflow will get lost in this case, but not really a big deal.
</span><span class="cx">         // FIXME: Find a way to invalidate the knownToHaveNoOverflow flag on the InlineBoxes.
</span><del>-        GlyphOverflowAndFallbackFontsMap textBoxDataMap;
-        for (auto&amp; box : lineBoxes)
</del><ins>+        GlyphOverflowAndFallbackFontsMap textBoxDataMap;                  
+        for (auto it = lineBoxes.begin(), end = lineBoxes.end(); it != end; ++it) {
+            RootInlineBox* box = *it;
</ins><span class="cx">             box-&gt;computeOverflow(box-&gt;lineTop(), box-&gt;lineBottom(), textBoxDataMap);
</span><ins>+        }
</ins><span class="cx">     } else {
</span><span class="cx">         for (auto box = firstChildBox(); box; box = box-&gt;nextSiblingBox()) {
</span><span class="cx">             if (!box-&gt;isOutOfFlowPositioned())
</span><span class="lines">@@ -1293,15 +1299,17 @@
</span><span class="cx">     if (!positionedDescendants)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; box : *positionedDescendants) {
-        estimateRegionRangeForBoxChild(*box);
</del><ins>+    for (auto it = positionedDescendants-&gt;begin(), end = positionedDescendants-&gt;end(); it != end; ++it) {
+        RenderBox&amp; r = **it;
+        
+        estimateRegionRangeForBoxChild(r);
</ins><span class="cx"> 
</span><span class="cx">         // A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So
</span><span class="cx">         // if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e. 
</span><span class="cx">         // it has static position.
</span><del>-        markFixedPositionObjectForLayoutIfNeeded(*box);
</del><ins>+        markFixedPositionObjectForLayoutIfNeeded(r);
</ins><span class="cx">         if (fixedPositionObjectsOnly) {
</span><del>-            box-&gt;layoutIfNeeded();
</del><ins>+            r.layoutIfNeeded();
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -1309,43 +1317,43 @@
</span><span class="cx">         // non-positioned block.  Rather than trying to detect all of these movement cases, we just always lay out positioned
</span><span class="cx">         // objects that are positioned implicitly like this.  Such objects are rare, and so in typical DHTML menu usage (where everything is
</span><span class="cx">         // positioned explicitly) this should not incur a performance penalty.
</span><del>-        if (relayoutChildren || (box-&gt;style().hasStaticBlockPosition(isHorizontalWritingMode()) &amp;&amp; box-&gt;parent() != this))
-            box-&gt;setChildNeedsLayout(MarkOnlyThis);
</del><ins>+        if (relayoutChildren || (r.style().hasStaticBlockPosition(isHorizontalWritingMode()) &amp;&amp; r.parent() != this))
+            r.setChildNeedsLayout(MarkOnlyThis);
</ins><span class="cx">             
</span><span class="cx">         // If relayoutChildren is set and the child has percentage padding or an embedded content box, we also need to invalidate the childs pref widths.
</span><del>-        if (relayoutChildren &amp;&amp; box-&gt;needsPreferredWidthsRecalculation())
-            box-&gt;setPreferredLogicalWidthsDirty(true, MarkOnlyThis);
</del><ins>+        if (relayoutChildren &amp;&amp; r.needsPreferredWidthsRecalculation())
+            r.setPreferredLogicalWidthsDirty(true, MarkOnlyThis);
</ins><span class="cx">         
</span><del>-        box-&gt;markForPaginationRelayoutIfNeeded();
</del><ins>+        r.markForPaginationRelayoutIfNeeded();
</ins><span class="cx">         
</span><span class="cx">         // We don't have to do a full layout.  We just have to update our position. Try that first. If we have shrink-to-fit width
</span><span class="cx">         // and we hit the available width constraint, the layoutIfNeeded() will catch it and do a full layout.
</span><del>-        if (box-&gt;needsPositionedMovementLayoutOnly() &amp;&amp; box-&gt;tryLayoutDoingPositionedMovementOnly())
-            box-&gt;clearNeedsLayout();
</del><ins>+        if (r.needsPositionedMovementLayoutOnly() &amp;&amp; r.tryLayoutDoingPositionedMovementOnly())
+            r.clearNeedsLayout();
</ins><span class="cx">             
</span><span class="cx">         // If we are paginated or in a line grid, compute a vertical position for our object now.
</span><span class="cx">         // If it's wrong we'll lay out again.
</span><span class="cx">         LayoutUnit oldLogicalTop = 0;
</span><del>-        bool needsBlockDirectionLocationSetBeforeLayout = box-&gt;needsLayout() &amp;&amp; view().layoutState()-&gt;needsBlockDirectionLocationSetBeforeLayout();
</del><ins>+        bool needsBlockDirectionLocationSetBeforeLayout = r.needsLayout() &amp;&amp; view().layoutState()-&gt;needsBlockDirectionLocationSetBeforeLayout();
</ins><span class="cx">         if (needsBlockDirectionLocationSetBeforeLayout) {
</span><del>-            if (isHorizontalWritingMode() == box-&gt;isHorizontalWritingMode())
-                box-&gt;updateLogicalHeight();
</del><ins>+            if (isHorizontalWritingMode() == r.isHorizontalWritingMode())
+                r.updateLogicalHeight();
</ins><span class="cx">             else
</span><del>-                box-&gt;updateLogicalWidth();
-            oldLogicalTop = logicalTopForChild(*box);
</del><ins>+                r.updateLogicalWidth();
+            oldLogicalTop = logicalTopForChild(r);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        box-&gt;layoutIfNeeded();
</del><ins>+        r.layoutIfNeeded();
</ins><span class="cx"> 
</span><span class="cx">         // Lay out again if our estimate was wrong.
</span><del>-        if (needsBlockDirectionLocationSetBeforeLayout &amp;&amp; logicalTopForChild(*box) != oldLogicalTop) {
-            box-&gt;setChildNeedsLayout(MarkOnlyThis);
-            box-&gt;layoutIfNeeded();
</del><ins>+        if (needsBlockDirectionLocationSetBeforeLayout &amp;&amp; logicalTopForChild(r) != oldLogicalTop) {
+            r.setChildNeedsLayout(MarkOnlyThis);
+            r.layoutIfNeeded();
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (updateRegionRangeForBoxChild(*box)) {
-            box-&gt;setNeedsLayout(MarkOnlyThis);
-            box-&gt;layoutIfNeeded();
</del><ins>+        if (updateRegionRangeForBoxChild(r)) {
+            r.setNeedsLayout(MarkOnlyThis);
+            r.layoutIfNeeded();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1356,8 +1364,10 @@
</span><span class="cx">     if (!positionedDescendants)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; box : *positionedDescendants)
-        box-&gt;setChildNeedsLayout();
</del><ins>+    for (auto it = positionedDescendants-&gt;begin(), end = positionedDescendants-&gt;end(); it != end; ++it) {
+        RenderBox* r = *it;
+        r-&gt;setChildNeedsLayout();
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlock::markForPaginationRelayoutIfNeeded()
</span><span class="lines">@@ -1681,8 +1691,10 @@
</span><span class="cx"> 
</span><span class="cx">     LayoutPoint accumulatedPaintOffset = paintOffset;
</span><span class="cx">     // Paint each continuation outline.
</span><del>-    for (auto&amp; flow : *continuations) {
</del><ins>+    ListHashSet&lt;RenderInline*&gt;::iterator end = continuations-&gt;end();
+    for (ListHashSet&lt;RenderInline*&gt;::iterator it = continuations-&gt;begin(); it != end; ++it) {
</ins><span class="cx">         // Need to add in the coordinates of the intervening blocks.
</span><ins>+        RenderInline* flow = *it;
</ins><span class="cx">         RenderBlock* block = flow-&gt;containingBlock();
</span><span class="cx">         for ( ; block &amp;&amp; block != this; block = block-&gt;containingBlock())
</span><span class="cx">             accumulatedPaintOffset.moveBy(block-&gt;location());
</span><span class="lines">@@ -1776,8 +1788,11 @@
</span><span class="cx">     if (!positionedObjects)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    for (auto&amp; object : *positionedObjects)
-        paintInfo-&gt;context-&gt;clipOut(IntRect(offset.x() + object-&gt;x(), offset.y() + object-&gt;y(), object-&gt;width(), object-&gt;height()));
</del><ins>+    TrackedRendererListHashSet::const_iterator end = positionedObjects-&gt;end();
+    for (TrackedRendererListHashSet::const_iterator it = positionedObjects-&gt;begin(); it != end; ++it) {
+        RenderBox* r = *it;
+        paintInfo-&gt;context-&gt;clipOut(IntRect(offset.x() + r-&gt;x(), offset.y() + r-&gt;y(), r-&gt;width(), r-&gt;height()));
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit blockDirectionOffset(RenderBlock&amp; rootBlock, const LayoutSize&amp; offsetFromRootBlock)
</span><span class="lines">@@ -2108,7 +2123,9 @@
</span><span class="cx">     if (!containerSet)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    for (auto&amp; container : *containerSet) {
</del><ins>+    for (auto it = containerSet-&gt;begin(), end = containerSet-&gt;end(); it != end; ++it) {
+        RenderBlock* container = *it;
+
</ins><span class="cx">         // FIXME: Disabling this assert temporarily until we fix the layout
</span><span class="cx">         // bugs associated with positioned objects not properly cleared from
</span><span class="cx">         // their ancestor chain before being moved. See webkit bug 93766.
</span><span class="lines">@@ -2156,25 +2173,26 @@
</span><span class="cx">     
</span><span class="cx">     Vector&lt;RenderBox*, 16&gt; deadObjects;
</span><span class="cx"> 
</span><del>-    for (auto&amp; box : *positionedDescendants) {
-        if (!o || box-&gt;isDescendantOf(o)) {
</del><ins>+    for (auto it = positionedDescendants-&gt;begin(), end = positionedDescendants-&gt;end(); it != end; ++it) {
+        RenderBox* r = *it;
+        if (!o || r-&gt;isDescendantOf(o)) {
</ins><span class="cx">             if (containingBlockState == NewContainingBlock)
</span><del>-                box-&gt;setChildNeedsLayout(MarkOnlyThis);
</del><ins>+                r-&gt;setChildNeedsLayout(MarkOnlyThis);
</ins><span class="cx">             
</span><span class="cx">             // It is parent blocks job to add positioned child to positioned objects list of its containing block
</span><span class="cx">             // Parent layout needs to be invalidated to ensure this happens.
</span><del>-            RenderElement* p = box-&gt;parent();
</del><ins>+            RenderElement* p = r-&gt;parent();
</ins><span class="cx">             while (p &amp;&amp; !p-&gt;isRenderBlock())
</span><span class="cx">                 p = p-&gt;parent();
</span><span class="cx">             if (p)
</span><span class="cx">                 p-&gt;setChildNeedsLayout();
</span><span class="cx">             
</span><del>-            deadObjects.append(box);
</del><ins>+            deadObjects.append(r);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    for (auto&amp; object : deadObjects)
-        removePositionedObject(*object);
</del><ins>+    for (unsigned i = 0; i &lt; deadObjects.size(); i++)
+        removePositionedObject(*deadObjects.at(i));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlock::addPercentHeightDescendant(RenderBox&amp; descendant)
</span><span class="lines">@@ -3725,8 +3743,10 @@
</span><span class="cx">     if (!positionedDescendantSet)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; box : *positionedDescendantSet)
-        ASSERT(!box-&gt;needsLayout());
</del><ins>+    for (auto it = positionedDescendantSet-&gt;begin(), end = positionedDescendantSet-&gt;end(); it != end; ++it) {
+        RenderBox* currBox = *it;
+        ASSERT(!currBox-&gt;needsLayout());
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -203,7 +203,10 @@
</span><span class="cx"> 
</span><span class="cx">     HashSet&lt;RenderBox*&gt; oldIntrudingFloatSet;
</span><span class="cx">     if (!childrenInline() &amp;&amp; m_floatingObjects) {
</span><del>-        for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+        const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+        auto end = floatingObjectSet.end();
+        for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+            FloatingObject* floatingObject = it-&gt;get();
</ins><span class="cx">             if (!floatingObject-&gt;isDescendant())
</span><span class="cx">                 oldIntrudingFloatSet.add(&amp;floatingObject-&gt;renderer());
</span><span class="cx">         }
</span><span class="lines">@@ -261,12 +264,15 @@
</span><span class="cx">         LayoutUnit changeLogicalTop = LayoutUnit::max();
</span><span class="cx">         LayoutUnit changeLogicalBottom = LayoutUnit::min();
</span><span class="cx">         if (m_floatingObjects) {
</span><del>-            for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+            const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+            auto end = floatingObjectSet.end();
+            for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+                FloatingObject* floatingObject = it-&gt;get();
</ins><span class="cx">                 std::unique_ptr&lt;FloatingObject&gt; oldFloatingObject = floatMap.take(&amp;floatingObject-&gt;renderer());
</span><del>-                LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject.get());
</del><ins>+                LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject);
</ins><span class="cx">                 if (oldFloatingObject) {
</span><span class="cx">                     LayoutUnit oldLogicalBottom = logicalBottomForFloat(oldFloatingObject.get());
</span><del>-                    if (logicalWidthForFloat(floatingObject.get()) != logicalWidthForFloat(oldFloatingObject.get()) || logicalLeftForFloat(floatingObject.get()) != logicalLeftForFloat(oldFloatingObject.get())) {
</del><ins>+                    if (logicalWidthForFloat(floatingObject) != logicalWidthForFloat(oldFloatingObject.get()) || logicalLeftForFloat(floatingObject) != logicalLeftForFloat(oldFloatingObject.get())) {
</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">@@ -274,7 +280,7 @@
</span><span class="cx">                             changeLogicalTop = std::min(changeLogicalTop, std::min(logicalBottom, oldLogicalBottom));
</span><span class="cx">                             changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalBottom, oldLogicalBottom));
</span><span class="cx">                         }
</span><del>-                        LayoutUnit logicalTop = logicalTopForFloat(floatingObject.get());
</del><ins>+                        LayoutUnit logicalTop = logicalTopForFloat(floatingObject);
</ins><span class="cx">                         LayoutUnit oldLogicalTop = logicalTopForFloat(oldFloatingObject.get());
</span><span class="cx">                         if (logicalTop != oldLogicalTop) {
</span><span class="cx">                             changeLogicalTop = std::min(changeLogicalTop, std::min(logicalTop, oldLogicalTop));
</span><span class="lines">@@ -293,10 +299,12 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        for (auto&amp; floatingObject : floatMap.values()) {
</del><ins>+        auto end = floatMap.end();
+        for (auto it = floatMap.begin(); it != end; ++it) {
+            FloatingObject* floatingObject = it-&gt;value.get();
</ins><span class="cx">             if (!floatingObject-&gt;isDescendant()) {
</span><span class="cx">                 changeLogicalTop = 0;
</span><del>-                changeLogicalBottom = std::max(changeLogicalBottom, logicalBottomForFloat(floatingObject.get()));
</del><ins>+                changeLogicalBottom = std::max(changeLogicalBottom, logicalBottomForFloat(floatingObject));
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -307,8 +315,10 @@
</span><span class="cx">         if (m_floatingObjects-&gt;set().size() &lt; oldIntrudingFloatSet.size())
</span><span class="cx">             markAllDescendantsWithFloatsForLayout();
</span><span class="cx">         else {
</span><del>-            for (auto&amp; floatingObject : m_floatingObjects-&gt;set())
-                oldIntrudingFloatSet.remove(&amp;floatingObject-&gt;renderer());
</del><ins>+            const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+            auto end = floatingObjectSet.end();
+            for (auto it = floatingObjectSet.begin(); it != end &amp;&amp; !oldIntrudingFloatSet.isEmpty(); ++it)
+                oldIntrudingFloatSet.remove(&amp;(*it)-&gt;renderer());
</ins><span class="cx">             if (!oldIntrudingFloatSet.isEmpty())
</span><span class="cx">                 markAllDescendantsWithFloatsForLayout();
</span><span class="cx">         }
</span><span class="lines">@@ -1972,8 +1982,8 @@
</span><span class="cx">             if (ancestor.isRenderView())
</span><span class="cx">                 break;
</span><span class="cx">             if (ancestor.hasOverhangingFloats()) {
</span><del>-                for (auto&amp; floatingObject : floatingObjectSet) {
-                    RenderBox&amp; renderer = floatingObject-&gt;renderer();
</del><ins>+                for (auto it = floatingObjectSet.begin(), end = floatingObjectSet.end(); it != end; ++it) {
+                    RenderBox&amp; renderer = (*it)-&gt;renderer();
</ins><span class="cx">                     if (ancestor.hasOverhangingFloat(renderer)) {
</span><span class="cx">                         parentBlock = &amp;ancestor;
</span><span class="cx">                         break;
</span><span class="lines">@@ -2060,7 +2070,12 @@
</span><span class="cx">         if (!toBlockFlow-&gt;m_floatingObjects)
</span><span class="cx">             toBlockFlow-&gt;createFloatingObjects();
</span><span class="cx"> 
</span><del>-        for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+        const FloatingObjectSet&amp; fromFloatingObjectSet = m_floatingObjects-&gt;set();
+        auto end = fromFloatingObjectSet.end();
+
+        for (auto it = fromFloatingObjectSet.begin(); it != end; ++it) {
+            FloatingObject* floatingObject = it-&gt;get();
+
</ins><span class="cx">             // Don't insert the object again if it's already in the list
</span><span class="cx">             if (toBlockFlow-&gt;containsFloat(floatingObject-&gt;renderer()))
</span><span class="cx">                 continue;
</span><span class="lines">@@ -2082,9 +2097,12 @@
</span><span class="cx">     if (!m_floatingObjects)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
-        if (floatingObject-&gt;isDescendant())
-            addOverflowFromChild(&amp;floatingObject-&gt;renderer(), IntSize(xPositionForFloatIncludingMargin(floatingObject.get()), yPositionForFloatIncludingMargin(floatingObject.get())));
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* r = it-&gt;get();
+        if (r-&gt;isDescendant())
+            addOverflowFromChild(&amp;r-&gt;renderer(), IntSize(xPositionForFloatIncludingMargin(r), yPositionForFloatIncludingMargin(r)));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2106,11 +2124,14 @@
</span><span class="cx">     // FIXME: Avoid disabling LayoutState. At the very least, don't disable it for floats originating
</span><span class="cx">     // in this block. Better yet would be to push extra state for the containers of other floats.
</span><span class="cx">     LayoutStateDisabler layoutStateDisabler(&amp;view());
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* 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><del>-        if (logicalBottomForFloat(floatingObject.get()) &gt; logicalHeight()
</del><ins>+        if (logicalBottomForFloat(floatingObject) &gt; logicalHeight()
</ins><span class="cx">             &amp;&amp; !floatingObject-&gt;renderer().hasSelfPaintingLayer()
</span><span class="cx">             &amp;&amp; (floatingObject-&gt;shouldPaint() || (paintAllDescendants &amp;&amp; floatingObject-&gt;renderer().isDescendantOf(this)))) {
</span><span class="cx">             floatingObject-&gt;renderer().repaint();
</span><span class="lines">@@ -2138,23 +2159,26 @@
</span><span class="cx">     if (!m_floatingObjects)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* r = it-&gt;get();
</ins><span class="cx">         // Only paint the object if our m_shouldPaint flag is set.
</span><del>-        if (floatingObject-&gt;shouldPaint() &amp;&amp; !floatingObject-&gt;renderer().hasSelfPaintingLayer()) {
</del><ins>+        if (r-&gt;shouldPaint() &amp;&amp; !r-&gt;renderer().hasSelfPaintingLayer()) {
</ins><span class="cx">             PaintInfo currentPaintInfo(paintInfo);
</span><span class="cx">             currentPaintInfo.phase = preservePhase ? paintInfo.phase : PaintPhaseBlockBackground;
</span><span class="cx">             // FIXME: LayoutPoint version of xPositionForFloatIncludingMargin would make this much cleaner.
</span><del>-            LayoutPoint childPoint = flipFloatForWritingModeForChild(floatingObject.get(), LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(floatingObject.get()) - floatingObject-&gt;renderer().x(), paintOffset.y() + yPositionForFloatIncludingMargin(floatingObject.get()) - floatingObject-&gt;renderer().y()));
-            floatingObject-&gt;renderer().paint(currentPaintInfo, childPoint);
</del><ins>+            LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r-&gt;renderer().x(), paintOffset.y() + yPositionForFloatIncludingMargin(r) - r-&gt;renderer().y()));
+            r-&gt;renderer().paint(currentPaintInfo, childPoint);
</ins><span class="cx">             if (!preservePhase) {
</span><span class="cx">                 currentPaintInfo.phase = PaintPhaseChildBlockBackgrounds;
</span><del>-                floatingObject-&gt;renderer().paint(currentPaintInfo, childPoint);
</del><ins>+                r-&gt;renderer().paint(currentPaintInfo, childPoint);
</ins><span class="cx">                 currentPaintInfo.phase = PaintPhaseFloat;
</span><del>-                floatingObject-&gt;renderer().paint(currentPaintInfo, childPoint);
</del><ins>+                r-&gt;renderer().paint(currentPaintInfo, childPoint);
</ins><span class="cx">                 currentPaintInfo.phase = PaintPhaseForeground;
</span><del>-                floatingObject-&gt;renderer().paint(currentPaintInfo, childPoint);
</del><ins>+                r-&gt;renderer().paint(currentPaintInfo, childPoint);
</ins><span class="cx">                 currentPaintInfo.phase = PaintPhaseOutline;
</span><del>-                floatingObject-&gt;renderer().paint(currentPaintInfo, childPoint);
</del><ins>+                r-&gt;renderer().paint(currentPaintInfo, childPoint);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -2163,9 +2187,12 @@
</span><span class="cx"> void RenderBlockFlow::clipOutFloatingObjects(RenderBlock&amp; rootBlock, const PaintInfo* paintInfo, const LayoutPoint&amp; rootBlockPhysicalPosition, const LayoutSize&amp; offsetFromRootBlock)
</span><span class="cx"> {
</span><span class="cx">     if (m_floatingObjects) {
</span><del>-        for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
-            LayoutRect floatBox(offsetFromRootBlock.width() + xPositionForFloatIncludingMargin(floatingObject.get()),
-                offsetFromRootBlock.height() + yPositionForFloatIncludingMargin(floatingObject.get()),
</del><ins>+        const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+        auto end = floatingObjectSet.end();
+        for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+            FloatingObject* floatingObject = it-&gt;get();
+            LayoutRect floatBox(offsetFromRootBlock.width() + xPositionForFloatIncludingMargin(floatingObject),
+                offsetFromRootBlock.height() + yPositionForFloatIncludingMargin(floatingObject),
</ins><span class="cx">                 floatingObject-&gt;renderer().width(), floatingObject-&gt;renderer().height());
</span><span class="cx">             rootBlock.flipForWritingMode(floatBox);
</span><span class="cx">             floatBox.move(rootBlockPhysicalPosition.x(), rootBlockPhysicalPosition.y());
</span><span class="lines">@@ -2563,9 +2590,12 @@
</span><span class="cx">     if (!m_floatingObjects)
</span><span class="cx">         return 0;
</span><span class="cx">     LayoutUnit lowestFloatBottom = 0;
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* floatingObject = it-&gt;get();
</ins><span class="cx">         if (floatingObject-&gt;isPlaced() &amp;&amp; floatingObject-&gt;type() &amp; floatType)
</span><del>-            lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject.get()));
</del><ins>+            lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</ins><span class="cx">     }
</span><span class="cx">     return lowestFloatBottom;
</span><span class="cx"> }
</span><span class="lines">@@ -2575,9 +2605,12 @@
</span><span class="cx">     if (!m_floatingObjects)
</span><span class="cx">         return 0;
</span><span class="cx">     LayoutUnit lowestFloatBottom = 0;
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* floatingObject = it-&gt;get();
</ins><span class="cx">         if (floatingObject-&gt;isPlaced() &amp;&amp; floatingObject-&gt;renderer().style().styleType() == FIRST_LETTER &amp;&amp; floatingObject-&gt;renderer().style().initialLetterDrop() &gt; 0)
</span><del>-            lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject.get()));
</del><ins>+            lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</ins><span class="cx">     }
</span><span class="cx">     return lowestFloatBottom;
</span><span class="cx"> }
</span><span class="lines">@@ -2594,8 +2627,10 @@
</span><span class="cx"> 
</span><span class="cx">     // Floats that will remain the child's responsibility to paint should factor into its
</span><span class="cx">     // overflow.
</span><del>-    for (auto&amp; floatingObject : child.m_floatingObjects-&gt;set()) {
-        LayoutUnit floatLogicalBottom = std::min(logicalBottomForFloat(floatingObject.get()), LayoutUnit::max() - childLogicalTop);
</del><ins>+    auto childEnd = child.m_floatingObjects-&gt;set().end();
+    for (auto childIt = child.m_floatingObjects-&gt;set().begin(); childIt != childEnd; ++childIt) {
+        FloatingObject* floatingObject = childIt-&gt;get();
+        LayoutUnit floatLogicalBottom = std::min(logicalBottomForFloat(floatingObject), LayoutUnit::max() - childLogicalTop);
</ins><span class="cx">         LayoutUnit logicalBottom = childLogicalTop + floatLogicalBottom;
</span><span class="cx">         lowestFloatLogicalBottom = std::max(lowestFloatLogicalBottom, logicalBottom);
</span><span class="cx"> 
</span><span class="lines">@@ -2632,7 +2667,7 @@
</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><span class="cx">             if (floatingObject-&gt;isDescendant())
</span><del>-                child.addOverflowFromChild(&amp;floatingObject-&gt;renderer(), LayoutSize(xPositionForFloatIncludingMargin(floatingObject.get()), yPositionForFloatIncludingMargin(floatingObject.get())));
</del><ins>+                child.addOverflowFromChild(&amp;floatingObject-&gt;renderer(), LayoutSize(xPositionForFloatIncludingMargin(floatingObject), yPositionForFloatIncludingMargin(floatingObject)));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     return lowestFloatLogicalBottom;
</span><span class="lines">@@ -2665,8 +2700,11 @@
</span><span class="cx"> 
</span><span class="cx">     logicalLeftOffset += marginLogicalLeft();
</span><span class="cx"> 
</span><del>-    for (auto&amp; floatingObject : prev-&gt;m_floatingObjects-&gt;set()) {
-        if (logicalBottomForFloat(floatingObject.get()) &gt; logicalTopOffset) {
</del><ins>+    const FloatingObjectSet&amp; prevSet = prev-&gt;m_floatingObjects-&gt;set();
+    auto prevEnd = prevSet.end();
+    for (auto prevIt = prevSet.begin(); prevIt != prevEnd; ++prevIt) {
+        FloatingObject* floatingObject = prevIt-&gt;get();
+        if (logicalBottomForFloat(floatingObject) &gt; logicalTopOffset) {
</ins><span class="cx">             if (!m_floatingObjects || !m_floatingObjects-&gt;set().contains&lt;FloatingObject&amp;, FloatingObjectHashTranslator&gt;(*floatingObject)) {
</span><span class="cx">                 // We create the floating object list lazily.
</span><span class="cx">                 if (!m_floatingObjects)
</span><span class="lines">@@ -2718,13 +2756,16 @@
</span><span class="cx">     if (!m_floatingObjects)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+
</ins><span class="cx">     for (RenderObject* next = nextSibling(); next; next = next-&gt;nextSibling()) {
</span><span class="cx">         if (!is&lt;RenderBlockFlow&gt;(*next) || next-&gt;isFloatingOrOutOfFlowPositioned())
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         RenderBlockFlow&amp; nextBlock = downcast&lt;RenderBlockFlow&gt;(*next);
</span><del>-        for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
-            RenderBox&amp; floatingBox = floatingObject-&gt;renderer();
</del><ins>+        for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+            RenderBox&amp; floatingBox = (*it)-&gt;renderer();
</ins><span class="cx">             if (floatToRemove &amp;&amp; &amp;floatingBox != floatToRemove)
</span><span class="cx">                 continue;
</span><span class="cx">             if (nextBlock.containsFloat(floatingBox))
</span><span class="lines">@@ -2887,11 +2928,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_floatingObjects) {
</span><del>-        for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
</del><ins>+        const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+        auto end = floatingObjectSet.end();
+        for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+            FloatingObject* r = it-&gt;get();
</ins><span class="cx">             // Only examine the object if our m_shouldPaint flag is set.
</span><del>-            if (floatingObject-&gt;shouldPaint()) {
-                LayoutUnit floatLeft = xPositionForFloatIncludingMargin(floatingObject.get()) - floatingObject-&gt;renderer().x();
-                LayoutUnit floatRight = floatLeft + floatingObject-&gt;renderer().width();
</del><ins>+            if (r-&gt;shouldPaint()) {
+                LayoutUnit floatLeft = xPositionForFloatIncludingMargin(r) - r-&gt;renderer().x();
+                LayoutUnit floatRight = floatLeft + r-&gt;renderer().width();
</ins><span class="cx">                 left = std::min(left, floatLeft);
</span><span class="cx">                 right = std::max(right, floatRight);
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -512,8 +512,9 @@
</span><span class="cx">             } else
</span><span class="cx">                 measuredWidth += wordMeasurement.width;
</span><span class="cx">             if (!wordMeasurement.fallbackFonts.isEmpty()) {
</span><del>-                for (auto&amp; font : wordMeasurement.fallbackFonts)
-                    fallbackFonts.add(font);
</del><ins>+                HashSet&lt;const Font*&gt;::const_iterator end = wordMeasurement.fallbackFonts.end();
+                for (HashSet&lt;const Font*&gt;::const_iterator it = wordMeasurement.fallbackFonts.begin(); it != end; ++it)
+                    fallbackFonts.add(*it);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         if (measuredWidth &amp;&amp; lastEndOffset != run-&gt;m_stop) {
</span><span class="lines">@@ -1335,8 +1336,8 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        for (auto&amp; positionedObject : lineBreaker.positionedObjects())
-            setStaticPositions(*this, *positionedObject);
</del><ins>+        for (size_t i = 0; i &lt; lineBreaker.positionedObjects().size(); ++i)
+            setStaticPositions(*this, *lineBreaker.positionedObjects()[i]);
</ins><span class="cx"> 
</span><span class="cx">         if (!layoutState.lineInfo().isEmpty()) {
</span><span class="cx">             layoutState.lineInfo().setFirstLine(false);
</span><span class="lines">@@ -1453,7 +1454,8 @@
</span><span class="cx">                 if (layoutState.flowThread())
</span><span class="cx">                     updateRegionForLine(line);
</span><span class="cx">                 if (Vector&lt;RenderBox*&gt;* cleanLineFloats = line-&gt;floatsPtr()) {
</span><del>-                    for (auto&amp; floatingBox : *cleanLineFloats) {
</del><ins>+                    for (auto it = cleanLineFloats-&gt;begin(), end = cleanLineFloats-&gt;end(); it != end; ++it) {
+                        RenderBox* floatingBox = *it;
</ins><span class="cx">                         FloatingObject* floatingObject = insertFloatingObject(*floatingBox);
</span><span class="cx">                         ASSERT(!floatingObject-&gt;originatingLine());
</span><span class="cx">                         floatingObject-&gt;setOriginatingLine(line);
</span><span class="lines">@@ -1510,12 +1512,13 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::repaintDirtyFloats(Vector&lt;FloatWithRect&gt;&amp; floats)
</span><span class="cx"> {
</span><ins>+    size_t floatCount = floats.size();
</ins><span class="cx">     // Floats that did not have layout did not repaint when we laid them out. They would have
</span><span class="cx">     // painted by now if they had moved, but if they stayed at (0, 0), they still need to be
</span><span class="cx">     // painted.
</span><del>-    for (auto&amp; floatWithRect : floats) {
-        if (!floatWithRect.everHadLayout) {
-            RenderBox&amp; box = floatWithRect.object;
</del><ins>+    for (size_t i = 0; i &lt; floatCount; ++i) {
+        if (!floats[i].everHadLayout) {
+            RenderBox&amp; box = floats[i].object;
</ins><span class="cx">             if (!box.x() &amp;&amp; !box.y() &amp;&amp; box.checkForRepaintDuringLayout())
</span><span class="cx">                 box.repaint();
</span><span class="cx">         }
</span><span class="lines">@@ -1603,8 +1606,8 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        for (auto&amp; child : replacedChildren)
-            child-&gt;layoutIfNeeded();
</del><ins>+        for (size_t i = 0; i &lt; replacedChildren.size(); i++)
+             replacedChildren[i]-&gt;layoutIfNeeded();
</ins><span class="cx"> 
</span><span class="cx">         layoutRunsAndFloats(layoutState, hasInlineChild);
</span><span class="cx">     }
</span><span class="lines">@@ -1642,7 +1645,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto&amp; floatingBox : *cleanLineFloats) {
</del><ins>+    for (auto it = cleanLineFloats-&gt;begin(), end = cleanLineFloats-&gt;end(); it != end; ++it) {
+        RenderBox* floatingBox = *it;
</ins><span class="cx">         floatingBox-&gt;layoutIfNeeded();
</span><span class="cx">         LayoutSize newSize(floatingBox-&gt;width() + floatingBox-&gt;horizontalMarginExtent(), floatingBox-&gt;height() + floatingBox-&gt;verticalMarginExtent());
</span><span class="cx">         ASSERT_WITH_SECURITY_IMPLICATION(floatIndex &lt; floats.size());
</span><span class="lines">@@ -1743,7 +1747,8 @@
</span><span class="cx">         RootInlineBox* line = firstRootBox();
</span><span class="cx">         while (line != curr) {
</span><span class="cx">             if (Vector&lt;RenderBox*&gt;* cleanLineFloats = line-&gt;floatsPtr()) {
</span><del>-                for (auto&amp; floatingBox : *cleanLineFloats) {
</del><ins>+                for (auto it = cleanLineFloats-&gt;begin(), end = cleanLineFloats-&gt;end(); it != end; ++it) {
+                    RenderBox* floatingBox = *it;
</ins><span class="cx">                     FloatingObject* floatingObject = insertFloatingObject(*floatingBox);
</span><span class="cx">                     ASSERT(!floatingObject-&gt;originatingLine());
</span><span class="cx">                     floatingObject-&gt;setOriginatingLine(line);
</span><span class="lines">@@ -1850,8 +1855,11 @@
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit logicalBottom = lastLine-&gt;lineBottomWithLeading() + absoluteValue(lineDelta);
</span><span class="cx"> 
</span><del>-    for (auto&amp; floatingObject : m_floatingObjects-&gt;set()) {
-        if (logicalBottomForFloat(floatingObject.get()) &gt;= logicalTop &amp;&amp; logicalBottomForFloat(floatingObject.get()) &lt; logicalBottom)
</del><ins>+    const FloatingObjectSet&amp; floatingObjectSet = m_floatingObjects-&gt;set();
+    auto end = floatingObjectSet.end();
+    for (auto it = floatingObjectSet.begin(); it != end; ++it) {
+        FloatingObject* floatingObject = it-&gt;get();
+        if (logicalBottomForFloat(floatingObject) &gt;= logicalTop &amp;&amp; logicalBottomForFloat(floatingObject) &lt; logicalBottom)
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderCountercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderCounter.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderCounter.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderCounter.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -455,8 +455,11 @@
</span><span class="cx">     CounterMaps::iterator mapsIterator = maps.find(&amp;owner);
</span><span class="cx">     if (mapsIterator == maps.end())
</span><span class="cx">         return;
</span><del>-    for (auto&amp; counter : *mapsIterator-&gt;value.get())
-        destroyCounterNodeWithoutMapRemoval(counter.key, counter.value.get());
</del><ins>+    CounterMap* map = mapsIterator-&gt;value.get();
+    CounterMap::const_iterator end = map-&gt;end();
+    for (CounterMap::const_iterator it = map-&gt;begin(); it != end; ++it) {
+        destroyCounterNodeWithoutMapRemoval(it-&gt;key, it-&gt;value.get());
+    }
</ins><span class="cx">     maps.remove(mapsIterator);
</span><span class="cx">     owner.setHasCounterNodeMap(false);
</span><span class="cx"> }
</span><span class="lines">@@ -505,24 +508,25 @@
</span><span class="cx">     const CounterDirectiveMap* directiveMap = renderer.style().counterDirectives();
</span><span class="cx">     if (!directiveMap)
</span><span class="cx">         return;
</span><ins>+    CounterDirectiveMap::const_iterator end = directiveMap-&gt;end();
</ins><span class="cx">     if (!renderer.hasCounterNodeMap()) {
</span><del>-        for (auto&amp; key : directiveMap-&gt;keys())
-            makeCounterNode(renderer, key, false);
</del><ins>+        for (CounterDirectiveMap::const_iterator it = directiveMap-&gt;begin(); it != end; ++it)
+            makeCounterNode(renderer, it-&gt;key, false);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     CounterMap* counterMap = counterMaps().get(&amp;renderer);
</span><span class="cx">     ASSERT(counterMap);
</span><del>-    for (auto&amp; key : directiveMap-&gt;keys()) {
-        RefPtr&lt;CounterNode&gt; node = counterMap-&gt;get(key);
</del><ins>+    for (CounterDirectiveMap::const_iterator it = directiveMap-&gt;begin(); it != end; ++it) {
+        RefPtr&lt;CounterNode&gt; node = counterMap-&gt;get(it-&gt;key);
</ins><span class="cx">         if (!node) {
</span><del>-            makeCounterNode(renderer, key, false);
</del><ins>+            makeCounterNode(renderer, it-&gt;key, false);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         RefPtr&lt;CounterNode&gt; newParent = 0;
</span><span class="cx">         RefPtr&lt;CounterNode&gt; newPreviousSibling = 0;
</span><span class="cx">         
</span><del>-        findPlaceForCounter(renderer, key, node-&gt;hasResetType(), newParent, newPreviousSibling);
-        if (node != counterMap-&gt;get(key))
</del><ins>+        findPlaceForCounter(renderer, it-&gt;key, node-&gt;hasResetType(), newParent, newPreviousSibling);
+        if (node != counterMap-&gt;get(it-&gt;key))
</ins><span class="cx">             continue;
</span><span class="cx">         CounterNode* parent = node-&gt;parent();
</span><span class="cx">         if (newParent == parent &amp;&amp; newPreviousSibling == node-&gt;previousSibling())
</span><span class="lines">@@ -530,7 +534,7 @@
</span><span class="cx">         if (parent)
</span><span class="cx">             parent-&gt;removeChild(node.get());
</span><span class="cx">         if (newParent)
</span><del>-            newParent-&gt;insertAfter(node.get(), newPreviousSibling.get(), key);
</del><ins>+            newParent-&gt;insertAfter(node.get(), newPreviousSibling.get(), it-&gt;key);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -560,33 +564,36 @@
</span><span class="cx">     const CounterDirectiveMap* oldCounterDirectives;
</span><span class="cx">     if (oldStyle &amp;&amp; (oldCounterDirectives = oldStyle-&gt;counterDirectives())) {
</span><span class="cx">         if (newStyle &amp;&amp; (newCounterDirectives = newStyle-&gt;counterDirectives())) {
</span><del>-            for (auto&amp; directive : *newCounterDirectives) {
-                auto oldMapIt = oldCounterDirectives-&gt;find(directive.key);
-                if (oldMapIt != oldCounterDirectives-&gt;end()) {
-                    if (oldMapIt-&gt;value == directive.value)
</del><ins>+            CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives-&gt;end();
+            CounterDirectiveMap::const_iterator oldMapEnd = oldCounterDirectives-&gt;end();
+            for (CounterDirectiveMap::const_iterator it = newCounterDirectives-&gt;begin(); it != newMapEnd; ++it) {
+                CounterDirectiveMap::const_iterator oldMapIt = oldCounterDirectives-&gt;find(it-&gt;key);
+                if (oldMapIt != oldMapEnd) {
+                    if (oldMapIt-&gt;value == it-&gt;value)
</ins><span class="cx">                         continue;
</span><del>-                    RenderCounter::destroyCounterNode(renderer, directive.key);
</del><ins>+                    RenderCounter::destroyCounterNode(renderer, it-&gt;key);
</ins><span class="cx">                 }
</span><span class="cx">                 // We must create this node here, because the changed node may be a node with no display such as
</span><span class="cx">                 // as those created by the increment or reset directives and the re-layout that will happen will
</span><span class="cx">                 // not catch the change if the node had no children.
</span><del>-                makeCounterNode(renderer, directive.key, false);
</del><ins>+                makeCounterNode(renderer, it-&gt;key, false);
</ins><span class="cx">             }
</span><span class="cx">             // Destroying old counters that do not exist in the new counterDirective map.
</span><del>-            for (auto&amp; key : oldCounterDirectives-&gt;keys()) {
-                if (!newCounterDirectives-&gt;contains(key))
-                    RenderCounter::destroyCounterNode(renderer, key);
</del><ins>+            for (CounterDirectiveMap::const_iterator it = oldCounterDirectives-&gt;begin(); it !=oldMapEnd; ++it) {
+                if (!newCounterDirectives-&gt;contains(it-&gt;key))
+                    RenderCounter::destroyCounterNode(renderer, it-&gt;key);
</ins><span class="cx">             }
</span><span class="cx">         } else {
</span><span class="cx">             if (renderer.hasCounterNodeMap())
</span><span class="cx">                 RenderCounter::destroyCounterNodes(renderer);
</span><span class="cx">         }
</span><span class="cx">     } else if (newStyle &amp;&amp; (newCounterDirectives = newStyle-&gt;counterDirectives())) {
</span><del>-        for (auto&amp; key : newCounterDirectives-&gt;keys()) {
</del><ins>+        CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives-&gt;end();
+        for (CounterDirectiveMap::const_iterator it = newCounterDirectives-&gt;begin(); it != newMapEnd; ++it) {
</ins><span class="cx">             // We must create this node here, because the added node may be a node with no display such as
</span><span class="cx">             // as those created by the increment or reset directives and the re-layout that will happen will
</span><span class="cx">             // not catch the change if the node had no children.
</span><del>-            makeCounterNode(renderer, key, false);
</del><ins>+            makeCounterNode(renderer, it-&gt;key, false);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlexibleBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -713,7 +713,8 @@
</span><span class="cx"> 
</span><span class="cx">     int numberOfAutoMargins = 0;
</span><span class="cx">     bool isHorizontal = isHorizontalFlow();
</span><del>-    for (auto&amp; child : children) {
</del><ins>+    for (size_t i = 0; i &lt; children.size(); ++i) {
+        RenderBox* child = children[i];
</ins><span class="cx">         if (child-&gt;isOutOfFlowPositioned())
</span><span class="cx">             continue;
</span><span class="cx">         if (isHorizontal) {
</span><span class="lines">@@ -897,9 +898,9 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderFlexibleBox::freezeViolations(const Vector&lt;Violation&gt;&amp; violations, LayoutUnit&amp; availableFreeSpace, double&amp; totalFlexGrow, double&amp; totalWeightedFlexShrink, InflexibleFlexItemSize&amp; inflexibleItems, bool hasInfiniteLineLength)
</span><span class="cx"> {
</span><del>-    for (auto&amp; violation : violations) {
-        RenderBox&amp; child = violation.child;
-        LayoutUnit childSize = violation.childSize;
</del><ins>+    for (size_t i = 0; i &lt; violations.size(); ++i) {
+        RenderBox&amp; child = violations[i].child;
+        LayoutUnit childSize = violations[i].childSize;
</ins><span class="cx">         LayoutUnit preferredChildSize = preferredMainAxisContentExtentForChild(child, hasInfiniteLineLength);
</span><span class="cx">         availableFreeSpace -= childSize - preferredChildSize;
</span><span class="cx">         totalFlexGrow -= child.style().flexGrow();
</span><span class="lines">@@ -916,34 +917,35 @@
</span><span class="cx">     LayoutUnit usedFreeSpace = 0;
</span><span class="cx">     Vector&lt;Violation&gt; minViolations;
</span><span class="cx">     Vector&lt;Violation&gt; maxViolations;
</span><del>-    for (auto&amp; child : children) {
-        if (child-&gt;isOutOfFlowPositioned()) {
</del><ins>+    for (size_t i = 0; i &lt; children.size(); ++i) {
+        RenderBox&amp; child = *children[i];
+        if (child.isOutOfFlowPositioned()) {
</ins><span class="cx">             childSizes.append(0);
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (inflexibleItems.contains(child))
-            childSizes.append(inflexibleItems.get(child));
</del><ins>+        if (inflexibleItems.contains(&amp;child))
+            childSizes.append(inflexibleItems.get(&amp;child));
</ins><span class="cx">         else {
</span><del>-            LayoutUnit preferredChildSize = preferredMainAxisContentExtentForChild(*child, hasInfiniteLineLength);
</del><ins>+            LayoutUnit preferredChildSize = preferredMainAxisContentExtentForChild(child, hasInfiniteLineLength);
</ins><span class="cx">             LayoutUnit childSize = preferredChildSize;
</span><span class="cx">             double extraSpace = 0;
</span><span class="cx">             if (availableFreeSpace &gt; 0 &amp;&amp; totalFlexGrow &gt; 0 &amp;&amp; flexSign == PositiveFlexibility &amp;&amp; std::isfinite(totalFlexGrow))
</span><del>-                extraSpace = availableFreeSpace * child-&gt;style().flexGrow() / totalFlexGrow;
</del><ins>+                extraSpace = availableFreeSpace * child.style().flexGrow() / totalFlexGrow;
</ins><span class="cx">             else if (availableFreeSpace &lt; 0 &amp;&amp; totalWeightedFlexShrink &gt; 0 &amp;&amp; flexSign == NegativeFlexibility &amp;&amp; std::isfinite(totalWeightedFlexShrink))
</span><del>-                extraSpace = availableFreeSpace * child-&gt;style().flexShrink() * preferredChildSize / totalWeightedFlexShrink;
</del><ins>+                extraSpace = availableFreeSpace * child.style().flexShrink() * preferredChildSize / totalWeightedFlexShrink;
</ins><span class="cx">             if (std::isfinite(extraSpace))
</span><span class="cx">                 childSize += LayoutUnit::fromFloatRound(extraSpace);
</span><span class="cx"> 
</span><del>-            LayoutUnit adjustedChildSize = adjustChildSizeForMinAndMax(*child, childSize);
</del><ins>+            LayoutUnit adjustedChildSize = adjustChildSizeForMinAndMax(child, childSize);
</ins><span class="cx">             childSizes.append(adjustedChildSize);
</span><span class="cx">             usedFreeSpace += adjustedChildSize - preferredChildSize;
</span><span class="cx"> 
</span><span class="cx">             LayoutUnit violation = adjustedChildSize - childSize;
</span><span class="cx">             if (violation &gt; 0)
</span><del>-                minViolations.append(Violation(*child, adjustedChildSize));
</del><ins>+                minViolations.append(Violation(child, adjustedChildSize));
</ins><span class="cx">             else if (violation &lt; 0)
</span><del>-                maxViolations.append(Violation(*child, adjustedChildSize));
</del><ins>+                maxViolations.append(Violation(child, adjustedChildSize));
</ins><span class="cx">             totalViolation += violation;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1028,7 +1030,8 @@
</span><span class="cx"> size_t RenderFlexibleBox::numberOfInFlowPositionedChildren(const OrderedFlexItemList&amp; children) const
</span><span class="cx"> {
</span><span class="cx">     size_t count = 0;
</span><del>-    for (auto&amp; child : children) {
</del><ins>+    for (size_t i = 0; i &lt; children.size(); ++i) {
+        RenderBox* child = children[i];
</ins><span class="cx">         if (!child-&gt;isOutOfFlowPositioned())
</span><span class="cx">             ++count;
</span><span class="cx">     }
</span><span class="lines">@@ -1152,16 +1155,17 @@
</span><span class="cx">     mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight();
</span><span class="cx"> 
</span><span class="cx">     size_t seenInFlowPositionedChildren = 0;
</span><del>-    for (auto&amp; child : children) {
-        if (child-&gt;isOutOfFlowPositioned()) {
-            child-&gt;layer()-&gt;setStaticBlockPosition(mainAxisOffset);
</del><ins>+    for (size_t i = 0; i &lt; children.size(); ++i) {
+        RenderBox&amp; child = *children[i];
+        if (child.isOutOfFlowPositioned()) {
+            child.layer()-&gt;setStaticBlockPosition(mainAxisOffset);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-        mainAxisOffset -= mainAxisExtentForChild(*child) + flowAwareMarginEndForChild(*child);
</del><ins>+        mainAxisOffset -= mainAxisExtentForChild(child) + flowAwareMarginEndForChild(child);
</ins><span class="cx"> 
</span><del>-        setFlowAwareLocationForChild(*child, LayoutPoint(mainAxisOffset, crossAxisOffset + flowAwareMarginBeforeForChild(*child)));
</del><ins>+        setFlowAwareLocationForChild(child, LayoutPoint(mainAxisOffset, crossAxisOffset + flowAwareMarginBeforeForChild(child)));
</ins><span class="cx"> 
</span><del>-        mainAxisOffset -= flowAwareMarginStartForChild(*child);
</del><ins>+        mainAxisOffset -= flowAwareMarginStartForChild(child);
</ins><span class="cx"> 
</span><span class="cx">         ++seenInFlowPositionedChildren;
</span><span class="cx">         if (seenInFlowPositionedChildren &lt; numberOfChildrenForJustifyContent)
</span><span class="lines">@@ -1205,18 +1209,18 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit availableCrossAxisSpace = crossAxisContentExtent();
</span><del>-    for (auto&amp; lineContext : lineContexts)
-        availableCrossAxisSpace -= lineContext.crossAxisExtent;
</del><ins>+    for (size_t i = 0; i &lt; lineContexts.size(); ++i)
+        availableCrossAxisSpace -= lineContexts[i].crossAxisExtent;
</ins><span class="cx"> 
</span><span class="cx">     RenderBox* child = m_orderIterator.first();
</span><span class="cx">     LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, position, distribution, lineContexts.size());
</span><del>-    for (auto&amp; lineContext : lineContexts) {
-        lineContext.crossAxisOffset += lineOffset;
-        for (size_t childNumber = 0; childNumber &lt; lineContext.numberOfChildren; ++childNumber, child = m_orderIterator.next())
</del><ins>+    for (unsigned lineNumber = 0; lineNumber &lt; lineContexts.size(); ++lineNumber) {
+        lineContexts[lineNumber].crossAxisOffset += lineOffset;
+        for (size_t childNumber = 0; childNumber &lt; lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator.next())
</ins><span class="cx">             adjustAlignmentForChild(*child, lineOffset);
</span><span class="cx"> 
</span><span class="cx">         if (distribution == ContentDistributionStretch &amp;&amp; availableCrossAxisSpace &gt; 0)
</span><del>-            lineContext.crossAxisExtent += availableCrossAxisSpace / static_cast&lt;unsigned&gt;(lineContexts.size());
</del><ins>+            lineContexts[lineNumber].crossAxisExtent += availableCrossAxisSpace / static_cast&lt;unsigned&gt;(lineContexts.size());
</ins><span class="cx"> 
</span><span class="cx">         lineOffset += alignContentSpaceBetweenChildren(availableCrossAxisSpace, distribution, lineContexts.size());
</span><span class="cx">     }
</span><span class="lines">@@ -1243,12 +1247,12 @@
</span><span class="cx">     Vector&lt;LayoutUnit&gt; minMarginAfterBaselines;
</span><span class="cx"> 
</span><span class="cx">     RenderBox* child = m_orderIterator.first();
</span><del>-    for (auto&amp; lineContext : lineContexts) {
</del><ins>+    for (size_t lineNumber = 0; lineNumber &lt; lineContexts.size(); ++lineNumber) {
</ins><span class="cx">         LayoutUnit minMarginAfterBaseline = LayoutUnit::max();
</span><del>-        LayoutUnit lineCrossAxisExtent = lineContext.crossAxisExtent;
-        LayoutUnit maxAscent = lineContext.maxAscent;
</del><ins>+        LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisExtent;
+        LayoutUnit maxAscent = lineContexts[lineNumber].maxAscent;
</ins><span class="cx"> 
</span><del>-        for (size_t childNumber = 0; childNumber &lt; lineContext.numberOfChildren; ++childNumber, child = m_orderIterator.next()) {
</del><ins>+        for (size_t childNumber = 0; childNumber &lt; lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator.next()) {
</ins><span class="cx">             ASSERT(child);
</span><span class="cx">             if (child-&gt;isOutOfFlowPositioned()) {
</span><span class="cx">                 if (style().flexWrap() == FlexWrapReverse)
</span><span class="lines">@@ -1376,11 +1380,11 @@
</span><span class="cx"> {
</span><span class="cx">     LayoutUnit contentExtent = crossAxisContentExtent();
</span><span class="cx">     RenderBox* child = m_orderIterator.first();
</span><del>-    for (auto&amp; lineContext : lineContexts) {
-        for (size_t childNumber = 0; childNumber &lt; lineContext.numberOfChildren; ++childNumber, child = m_orderIterator.next()) {
</del><ins>+    for (size_t lineNumber = 0; lineNumber &lt; lineContexts.size(); ++lineNumber) {
+        for (size_t childNumber = 0; childNumber &lt; lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator.next()) {
</ins><span class="cx">             ASSERT(child);
</span><del>-            LayoutUnit lineCrossAxisExtent = lineContext.crossAxisExtent;
-            LayoutUnit originalOffset = lineContext.crossAxisOffset - crossAxisStartEdge;
</del><ins>+            LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisExtent;
+            LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge;
</ins><span class="cx">             LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxisExtent;
</span><span class="cx">             adjustAlignmentForChild(*child, newOffset - originalOffset);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -299,8 +299,8 @@
</span><span class="cx">     RenderLayerList* lists[] = { layer()-&gt;negZOrderList(), layer()-&gt;normalFlowList(), layer()-&gt;posZOrderList() };
</span><span class="cx">     for (size_t listIndex = 0; listIndex &lt; sizeof(lists) / sizeof(lists[0]); ++listIndex) {
</span><span class="cx">         if (RenderLayerList* list = lists[listIndex]) {
</span><del>-            for (auto&amp; layer : *list)
-                updateLayerToRegionMappings(*layer, layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
</del><ins>+            for (size_t i = 0, listSize = list-&gt;size(); i &lt; listSize; ++i)
+                updateLayerToRegionMappings(*list-&gt;at(i), layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -1707,7 +1707,10 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     const Vector&lt;StyleDashboardRegion&gt;&amp; styleRegions = style().dashboardRegions();
</span><del>-    for (auto&amp; styleRegion : styleRegions) {
</del><ins>+    unsigned i, count = styleRegions.size();
+    for (i = 0; i &lt; count; i++) {
+        StyleDashboardRegion styleRegion = styleRegions[i];
+
</ins><span class="cx">         LayoutRect linesBoundingBox = this-&gt;linesBoundingBox();
</span><span class="cx">         LayoutUnit w = linesBoundingBox.width();
</span><span class="cx">         LayoutUnit h = linesBoundingBox.height();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -729,8 +729,10 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (posZOrderList) {
</span><ins>+        size_t listSize = posZOrderList-&gt;size();
</ins><span class="cx">         int stackingOrderIndex = 1;
</span><del>-        for (auto&amp; currentLayer : *posZOrderList) {
</del><ins>+        for (size_t i = 0; i &lt; listSize; ++i) {
+            RenderLayer* currentLayer = posZOrderList-&gt;at(i);
</ins><span class="cx">             if (!currentLayer-&gt;isStackingContext())
</span><span class="cx">                 continue;
</span><span class="cx">             lookup.set(currentLayer, stackingOrderIndex++);
</span><span class="lines">@@ -1184,8 +1186,9 @@
</span><span class="cx">                 childOutOfFlowDescendantContainingBlocks.add(child-&gt;renderer().containingBlock());
</span><span class="cx"> 
</span><span class="cx">             if (outOfFlowDescendantContainingBlocks) {
</span><del>-                for (auto&amp; block : childOutOfFlowDescendantContainingBlocks)
-                    outOfFlowDescendantContainingBlocks-&gt;add(block);
</del><ins>+                HashSet&lt;const RenderObject*&gt;::const_iterator it = childOutOfFlowDescendantContainingBlocks.begin();
+                for (; it != childOutOfFlowDescendantContainingBlocks.end(); ++it)
+                    outOfFlowDescendantContainingBlocks-&gt;add(*it);
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             hasVisibleDescendant |= child-&gt;m_hasVisibleContent || child-&gt;m_hasVisibleDescendant;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -1898,7 +1898,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (Vector&lt;RenderLayer*&gt;* normalFlowList = parent.normalFlowList()) {
</span><del>-        for (auto&amp; curLayer : *normalFlowList) {
</del><ins>+        size_t listSize = normalFlowList-&gt;size();
+        for (size_t i = 0; i &lt; listSize; ++i) {
+            RenderLayer* curLayer = normalFlowList-&gt;at(i);
</ins><span class="cx">             if (!compositedWithOwnBackingStore(curLayer)
</span><span class="cx">                 &amp;&amp; (curLayer-&gt;isVisuallyNonEmpty() || descendantLayerPaintsIntoAncestor(*curLayer)))
</span><span class="cx">                 return true;
</span><span class="lines">@@ -1911,7 +1913,9 @@
</span><span class="cx"> 
</span><span class="cx">         // Use the m_hasCompositingDescendant bit to optimize?
</span><span class="cx">         if (Vector&lt;RenderLayer*&gt;* negZOrderList = parent.negZOrderList()) {
</span><del>-            for (auto&amp; curLayer : *negZOrderList) {
</del><ins>+            size_t listSize = negZOrderList-&gt;size();
+            for (size_t i = 0; i &lt; listSize; ++i) {
+                RenderLayer* curLayer = negZOrderList-&gt;at(i);
</ins><span class="cx">                 if (!compositedWithOwnBackingStore(curLayer)
</span><span class="cx">                     &amp;&amp; (curLayer-&gt;isVisuallyNonEmpty() || descendantLayerPaintsIntoAncestor(*curLayer)))
</span><span class="cx">                     return true;
</span><span class="lines">@@ -1919,7 +1923,9 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (Vector&lt;RenderLayer*&gt;* posZOrderList = parent.posZOrderList()) {
</span><del>-            for (auto&amp; curLayer : *posZOrderList) {
</del><ins>+            size_t listSize = posZOrderList-&gt;size();
+            for (size_t i = 0; i &lt; listSize; ++i) {
+                RenderLayer* curLayer = posZOrderList-&gt;at(i);
</ins><span class="cx">                 if (!compositedWithOwnBackingStore(curLayer)
</span><span class="cx">                     &amp;&amp; (curLayer-&gt;isVisuallyNonEmpty() || descendantLayerPaintsIntoAncestor(*curLayer)))
</span><span class="cx">                     return true;
</span><span class="lines">@@ -2496,7 +2502,9 @@
</span><span class="cx">     KeyframeValueList backdropFilterVector(AnimatedPropertyWebkitBackdropFilter);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    for (auto&amp; currentKeyframe : keyframes.keyframes()) {
</del><ins>+    size_t numKeyframes = keyframes.size();
+    for (size_t i = 0; i &lt; numKeyframes; ++i) {
+        const KeyframeValue&amp; currentKeyframe = keyframes[i];
</ins><span class="cx">         const RenderStyle* keyframeStyle = currentKeyframe.style();
</span><span class="cx">         double key = currentKeyframe.key();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLineBoxListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLineBoxList.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLineBoxList.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderLineBoxList.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -267,8 +267,11 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (info.phase == PaintPhaseOutline || info.phase == PaintPhaseSelfOutline || info.phase == PaintPhaseChildOutlines) {
</span><del>-        for (auto&amp; flow : *info.outlineObjects)
</del><ins>+        ListHashSet&lt;RenderInline*&gt;::iterator end = info.outlineObjects-&gt;end();
+        for (ListHashSet&lt;RenderInline*&gt;::iterator it = info.outlineObjects-&gt;begin(); it != end; ++it) {
+            RenderInline* flow = *it;
</ins><span class="cx">             flow-&gt;paintOutline(info, paintOffset);
</span><ins>+        }
</ins><span class="cx">         info.outlineObjects-&gt;clear();
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderListBox.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -107,8 +107,12 @@
</span><span class="cx"> void RenderListBox::updateFromElement()
</span><span class="cx"> {
</span><span class="cx">     if (m_optionsChanged) {
</span><ins>+        const Vector&lt;HTMLElement*&gt;&amp; listItems = selectElement().listItems();
+        int size = numItems();
+        
</ins><span class="cx">         float width = 0;
</span><del>-        for (auto&amp; element : selectElement().listItems()) {
</del><ins>+        for (int i = 0; i &lt; size; ++i) {
+            HTMLElement* element = listItems[i];
</ins><span class="cx">             String text;
</span><span class="cx">             FontCascade itemFont = style().fontCascade();
</span><span class="cx">             if (is&lt;HTMLOptionElement&gt;(*element))
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMenuListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMenuList.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMenuList.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderMenuList.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -58,9 +58,12 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> static size_t selectedOptionCount(const RenderMenuList&amp; renderMenuList)
</span><span class="cx"> {
</span><ins>+    const Vector&lt;HTMLElement*&gt;&amp; listItems = renderMenuList.selectElement().listItems();
+    size_t numberOfItems = listItems.size();
+
</ins><span class="cx">     size_t count = 0;
</span><del>-    for (auto&amp; element : renderMenuList.selectElement().listItems()) {
-        if (is&lt;HTMLOptionElement&gt;(*element) &amp;&amp; downcast&lt;HTMLOptionElement&gt;(*element).selected())
</del><ins>+    for (size_t i = 0; i &lt; numberOfItems; ++i) {
+        if (is&lt;HTMLOptionElement&gt;(*listItems[i]) &amp;&amp; downcast&lt;HTMLOptionElement&gt;(*listItems[i]).selected())
</ins><span class="cx">             ++count;
</span><span class="cx">     }
</span><span class="cx">     return count;
</span><span class="lines">@@ -203,7 +206,11 @@
</span><span class="cx"> void RenderMenuList::updateOptionsWidth()
</span><span class="cx"> {
</span><span class="cx">     float maxOptionWidth = 0;
</span><del>-    for (auto&amp; element : selectElement().listItems()) {
</del><ins>+    const Vector&lt;HTMLElement*&gt;&amp; listItems = selectElement().listItems();
+    int size = listItems.size();    
+
+    for (int i = 0; i &lt; size; ++i) {
+        HTMLElement* element = listItems[i];
</ins><span class="cx">         if (!is&lt;HTMLOptionElement&gt;(*element))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (185516 => 185517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2015-06-12 18:22:32 UTC (rev 185516)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2015-06-12 18:43:01 UTC (rev 185517)
</span><span class="lines">@@ -198,8 +198,8 @@
</span><span class="cx"> {
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     // There should be no implicit breaks assumed at this point.
</span><del>-    for (auto&amp; forcedBreak : m_contentRuns)
-        ASSERT(!forcedBreak.assumedImplicitBreaks());
</del><ins>+    for (unsigned i = 0; i &lt; forcedBreaksCount(); i++)
+        ASSERT(!m_contentRuns[i].assumedImplicitBreaks());
</ins><span class="cx"> #endif // NDEBUG
</span><span class="cx"> 
</span><span class="cx">     // Insert a final content run to encompass all content. This will include overflow if this is
</span></span></pre>
</div>
</div>

</body>
</html>