<!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>[164742] trunk/Source/WTF</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/164742">164742</a></dd>
<dt>Author</dt> <dd>barraclough@apple.com</dd>
<dt>Date</dt> <dd>2014-02-26 13:17:35 -0800 (Wed, 26 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>FastMalloc should use vm_page_shift intead of PAGE_SHIFT.
https://bugs.webkit.org/show_bug.cgi?id=129370

Reviewed by Mark Rowe.

&quot;Doesn't this lead to the page map using fewer bits than it was before?
It seems like this will cause some page addresses to no longer be
representable in the map when using 4K pages. Am I missing something?&quot;

* wtf/FastMalloc.cpp:
    - bdash raises a valid point. This should make the TCMalloc_PageMap
      larger than absolutely necessary, rather than potentially too small.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfFastMalloccpp">trunk/Source/WTF/wtf/FastMalloc.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (164741 => 164742)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2014-02-26 21:13:03 UTC (rev 164741)
+++ trunk/Source/WTF/ChangeLog        2014-02-26 21:17:35 UTC (rev 164742)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-02-26  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
+        FastMalloc should use vm_page_shift intead of PAGE_SHIFT.
+        https://bugs.webkit.org/show_bug.cgi?id=129370
+
+        Reviewed by Mark Rowe.
+
+        &quot;Doesn't this lead to the page map using fewer bits than it was before?
+        It seems like this will cause some page addresses to no longer be
+        representable in the map when using 4K pages. Am I missing something?&quot;
+
+        * wtf/FastMalloc.cpp:
+            - bdash raises a valid point. This should make the TCMalloc_PageMap
+              larger than absolutely necessary, rather than potentially too small.
+
</ins><span class="cx"> 2014-02-25  Gavin Barraclough  &lt;barraclough@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         FastMalloc should use vm_page_shift intead of PAGE_SHIFT.
</span></span></pre></div>
<a id="trunkSourceWTFwtfFastMalloccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FastMalloc.cpp (164741 => 164742)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FastMalloc.cpp        2014-02-26 21:13:03 UTC (rev 164741)
+++ trunk/Source/WTF/wtf/FastMalloc.cpp        2014-02-26 21:17:35 UTC (rev 164742)
</span><span class="lines">@@ -636,6 +636,7 @@
</span><span class="cx"> // Not all possible combinations of the following parameters make
</span><span class="cx"> // sense.  In particular, if kMaxSize increases, you may have to
</span><span class="cx"> // increase kNumClasses as well.
</span><ins>+#define K_PAGE_SHIFT_MIN 12
</ins><span class="cx"> #define K_PAGE_SHIFT_MAX 14
</span><span class="cx"> #define K_NUM_CLASSES_MAX 77
</span><span class="cx"> static size_t kPageShift  = 0;
</span><span class="lines">@@ -1664,7 +1665,7 @@
</span><span class="cx"> // Selector class -- general selector uses 3-level map
</span><span class="cx"> template &lt;int BITS&gt; class MapSelector {
</span><span class="cx">  public:
</span><del>-  typedef TCMalloc_PageMap3&lt;BITS-K_PAGE_SHIFT_MAX&gt; Type;
</del><ins>+  typedef TCMalloc_PageMap3&lt;BITS-K_PAGE_SHIFT_MIN&gt; Type;
</ins><span class="cx">   typedef PackedCache&lt;BITS, uint64_t&gt; CacheType;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -1682,7 +1683,7 @@
</span><span class="cx"> // A three-level map for 64-bit machines
</span><span class="cx"> template &lt;&gt; class MapSelector&lt;64&gt; {
</span><span class="cx">  public:
</span><del>-  typedef TCMalloc_PageMap3&lt;64 - K_PAGE_SHIFT_MAX - kBitsUnusedOn64Bit&gt; Type;
</del><ins>+  typedef TCMalloc_PageMap3&lt;64 - K_PAGE_SHIFT_MIN - kBitsUnusedOn64Bit&gt; Type;
</ins><span class="cx">   typedef PackedCache&lt;64, uint64_t&gt; CacheType;
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="lines">@@ -1690,8 +1691,8 @@
</span><span class="cx"> // A two-level map for 32-bit machines
</span><span class="cx"> template &lt;&gt; class MapSelector&lt;32&gt; {
</span><span class="cx">  public:
</span><del>-  typedef TCMalloc_PageMap2&lt;32 - K_PAGE_SHIFT_MAX&gt; Type;
-  typedef PackedCache&lt;32 - K_PAGE_SHIFT_MAX, uint16_t&gt; CacheType;
</del><ins>+  typedef TCMalloc_PageMap2&lt;32 - K_PAGE_SHIFT_MIN&gt; Type;
+  typedef PackedCache&lt;32 - K_PAGE_SHIFT_MIN, uint16_t&gt; CacheType;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // -------------------------------------------------------------------------
</span></span></pre>
</div>
</div>

</body>
</html>