<!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>[173945] 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/173945">173945</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-09-24 21:02:03 -0700 (Wed, 24 Sep 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Use tighter typing for render objects in RenderGeometryMap
https://bugs.webkit.org/show_bug.cgi?id=137102
Reviewed by Ryosuke Niwa.
Use tighter typing for render objects in RenderGeometryMap for clarity
and efficiency.
In particular, using RenderElement type instead of RenderObject
in canMapBetweenRenderers() allows us to call the faster
RenderElement::style() instead of RenderObject::style().
No new tests, no behavior change.
* rendering/RenderGeometryMap.cpp:
(WebCore::canMapBetweenRenderers):
(WebCore::RenderGeometryMap::pushMappingsToAncestor):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderGeometryMapcpp">trunk/Source/WebCore/rendering/RenderGeometryMap.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173944 => 173945)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-25 03:50:40 UTC (rev 173944)
+++ trunk/Source/WebCore/ChangeLog        2014-09-25 04:02:03 UTC (rev 173945)
</span><span class="lines">@@ -1,5 +1,25 @@
</span><span class="cx"> 2014-09-24 Christophe Dumez <cdumez@apple.com>
</span><span class="cx">
</span><ins>+ Use tighter typing for render objects in RenderGeometryMap
+ https://bugs.webkit.org/show_bug.cgi?id=137102
+
+ Reviewed by Ryosuke Niwa.
+
+ Use tighter typing for render objects in RenderGeometryMap for clarity
+ and efficiency.
+
+ In particular, using RenderElement type instead of RenderObject
+ in canMapBetweenRenderers() allows us to call the faster
+ RenderElement::style() instead of RenderObject::style().
+
+ No new tests, no behavior change.
+
+ * rendering/RenderGeometryMap.cpp:
+ (WebCore::canMapBetweenRenderers):
+ (WebCore::RenderGeometryMap::pushMappingsToAncestor):
+
+2014-09-24 Christophe Dumez <cdumez@apple.com>
+
</ins><span class="cx"> Add initial is<>() / downcast<>() support for any type of Nodes
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=137056
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGeometryMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGeometryMap.cpp (173944 => 173945)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGeometryMap.cpp        2014-09-25 03:50:40 UTC (rev 173944)
+++ trunk/Source/WebCore/rendering/RenderGeometryMap.cpp        2014-09-25 04:02:03 UTC (rev 173945)
</span><span class="lines">@@ -155,9 +155,9 @@
</span><span class="cx"> ASSERT(m_mapping.isEmpty() || m_mapping[0].m_renderer->isRenderView());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool canMapBetweenRenderers(const RenderObject& renderer, const RenderObject& ancestor)
</del><ins>+static bool canMapBetweenRenderers(const RenderLayerModelObject& renderer, const RenderLayerModelObject& ancestor)
</ins><span class="cx"> {
</span><del>- for (const RenderObject* current = &renderer; ; current = current->parent()) {
</del><ins>+ for (const RenderElement* current = &renderer; ; current = current->parent()) {
</ins><span class="cx"> const RenderStyle& style = current->style();
</span><span class="cx"> if (style.position() == FixedPosition || style.isFlippedBlocksWritingMode())
</span><span class="cx"> return false;
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">
</span><span class="cx"> void RenderGeometryMap::pushMappingsToAncestor(const RenderLayer* layer, const RenderLayer* ancestorLayer)
</span><span class="cx"> {
</span><del>- const RenderObject& renderer = layer->renderer();
</del><ins>+ const RenderLayerModelObject& renderer = layer->renderer();
</ins><span class="cx">
</span><span class="cx"> // We have to visit all the renderers to detect flipped blocks. This might defeat the gains
</span><span class="cx"> // from mapping via layers.
</span><span class="lines">@@ -189,14 +189,14 @@
</span><span class="cx"> // The RenderView must be pushed first.
</span><span class="cx"> if (!m_mapping.size()) {
</span><span class="cx"> ASSERT(ancestorLayer->renderer().isRenderView());
</span><del>- pushMappingsToAncestor(&ancestorLayer->renderer(), 0);
</del><ins>+ pushMappingsToAncestor(&ancestorLayer->renderer(), nullptr);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> TemporaryChange<size_t> positionChange(m_insertionPosition, m_mapping.size());
</span><span class="cx"> push(&renderer, layerOffset, /*accumulatingTransform*/ true, /*isNonUniform*/ false, /*isFixedPosition*/ false, /*hasTransform*/ false);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- const RenderLayerModelObject* ancestorRenderer = ancestorLayer ? &ancestorLayer->renderer() : 0;
</del><ins>+ const RenderLayerModelObject* ancestorRenderer = ancestorLayer ? &ancestorLayer->renderer() : nullptr;
</ins><span class="cx"> pushMappingsToAncestor(&renderer, ancestorRenderer);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>