<!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>[173675] trunk/Source/bmalloc</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/173675">173675</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2014-09-16 15:37:15 -0700 (Tue, 16 Sep 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>bmalloc: moved line caches from the deallocator to the allocator
https://bugs.webkit.org/show_bug.cgi?id=136868

Reviewed by Gavin Barraclough.

I did this mostly as a simplification, to make it easier to change the
allocation strategy.

No throughput change on MallocBench. Saves about 50kB.

Since the deallocator needs to lock the heap when freeing lines anyway,
there isn't much benefit to giving the deallocator a local cache of
deallocated lines.

We still give the allocator a local cache of lines because that does
reduce the frequency at which it needs to lock the heap in order to
acquire more lines.

* bmalloc/Allocator.cpp:
(bmalloc::Allocator::scavenge):
(bmalloc::Allocator::allocateSmallLine):
(bmalloc::Allocator::allocateMediumLine):
(bmalloc::Allocator::allocateMedium):
(bmalloc::Allocator::allocateSlowCase):
* bmalloc/Allocator.h:
* bmalloc/Deallocator.cpp:
(bmalloc::Deallocator::Deallocator):
(bmalloc::Deallocator::scavenge):
(bmalloc::Deallocator::processObjectLog):
(bmalloc::Deallocator::deallocateSmallLine): Deleted.
(bmalloc::Deallocator::allocateSmallLine): Deleted.
(bmalloc::Deallocator::deallocateMediumLine): Deleted.
(bmalloc::Deallocator::allocateMediumLine): Deleted.
* bmalloc/Deallocator.h:

* bmalloc/Sizes.h:
* bmalloc/VMAllocate.h: Took the opportunity to make the line cache size
exactly one page in size. That's about what we were shooting for anyway,
and it may make it easier to switch to per-page allocation in future.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourcebmallocChangeLog">trunk/Source/bmalloc/ChangeLog</a></li>
<li><a href="#trunkSourcebmallocbmallocAllocatorcpp">trunk/Source/bmalloc/bmalloc/Allocator.cpp</a></li>
<li><a href="#trunkSourcebmallocbmallocAllocatorh">trunk/Source/bmalloc/bmalloc/Allocator.h</a></li>
<li><a href="#trunkSourcebmallocbmallocDeallocatorcpp">trunk/Source/bmalloc/bmalloc/Deallocator.cpp</a></li>
<li><a href="#trunkSourcebmallocbmallocDeallocatorh">trunk/Source/bmalloc/bmalloc/Deallocator.h</a></li>
<li><a href="#trunkSourcebmallocbmallocSizesh">trunk/Source/bmalloc/bmalloc/Sizes.h</a></li>
<li><a href="#trunkSourcebmallocbmallocVMAllocateh">trunk/Source/bmalloc/bmalloc/VMAllocate.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourcebmallocChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/ChangeLog (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/ChangeLog        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/ChangeLog        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2014-09-16  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        bmalloc: moved line caches from the deallocator to the allocator
+        https://bugs.webkit.org/show_bug.cgi?id=136868
+
+        Reviewed by Gavin Barraclough.
+
+        I did this mostly as a simplification, to make it easier to change the
+        allocation strategy.
+
+        No throughput change on MallocBench. Saves about 50kB.
+
+        Since the deallocator needs to lock the heap when freeing lines anyway,
+        there isn't much benefit to giving the deallocator a local cache of
+        deallocated lines.
+
+        We still give the allocator a local cache of lines because that does
+        reduce the frequency at which it needs to lock the heap in order to
+        acquire more lines.
+
+        * bmalloc/Allocator.cpp:
+        (bmalloc::Allocator::scavenge):
+        (bmalloc::Allocator::allocateSmallLine):
+        (bmalloc::Allocator::allocateMediumLine):
+        (bmalloc::Allocator::allocateMedium):
+        (bmalloc::Allocator::allocateSlowCase):
+        * bmalloc/Allocator.h:
+        * bmalloc/Deallocator.cpp:
+        (bmalloc::Deallocator::Deallocator):
+        (bmalloc::Deallocator::scavenge):
+        (bmalloc::Deallocator::processObjectLog):
+        (bmalloc::Deallocator::deallocateSmallLine): Deleted.
+        (bmalloc::Deallocator::allocateSmallLine): Deleted.
+        (bmalloc::Deallocator::deallocateMediumLine): Deleted.
+        (bmalloc::Deallocator::allocateMediumLine): Deleted.
+        * bmalloc/Deallocator.h:
+
+        * bmalloc/Sizes.h:
+        * bmalloc/VMAllocate.h: Took the opportunity to make the line cache size
+        exactly one page in size. That's about what we were shooting for anyway,
+        and it may make it easier to switch to per-page allocation in future.
+
</ins><span class="cx"> 2014-09-15  Geoffrey Garen  &lt;ggaren@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         bmalloc: allocate small and medium objects using the same bump pointer class
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocAllocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Allocator.cpp (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Allocator.cpp        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/Allocator.cpp        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -63,8 +63,45 @@
</span><span class="cx">             m_deallocator.deallocate(allocator.allocate());
</span><span class="cx">         allocator.clear();
</span><span class="cx">     }
</span><ins>+
+    std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
+    Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
+    
+    for (auto&amp; smallLineCache : m_smallLineCaches) {
+        while (smallLineCache.size())
+            heap-&gt;deallocateSmallLine(lock, smallLineCache.pop());
+    }
+    while (m_mediumLineCache.size())
+        heap-&gt;deallocateMediumLine(lock, m_mediumLineCache.pop());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+SmallLine* Allocator::allocateSmallLine(size_t smallSizeClass)
+{
+    SmallLineCache&amp; smallLineCache = m_smallLineCaches[smallSizeClass];
+    if (!smallLineCache.size()) {
+        std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
+        Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
+
+        while (smallLineCache.size() != smallLineCache.capacity())
+            smallLineCache.push(heap-&gt;allocateSmallLine(lock, smallSizeClass));
+    }
+
+    return smallLineCache.pop();
+}
+
+MediumLine* Allocator::allocateMediumLine()
+{
+    if (!m_mediumLineCache.size()) {
+        std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
+        Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
+
+        while (m_mediumLineCache.size() != m_mediumLineCache.capacity())
+            m_mediumLineCache.push(heap-&gt;allocateMediumLine(lock));
+    }
+
+    return m_mediumLineCache.pop();
+}
+
</ins><span class="cx"> void* Allocator::allocateLarge(size_t size)
</span><span class="cx"> {
</span><span class="cx">     size = roundUpToMultipleOf&lt;largeAlignment&gt;(size);
</span><span class="lines">@@ -84,7 +121,7 @@
</span><span class="cx">     BumpAllocator&amp; allocator = m_mediumAllocators[mediumSizeClassFor(size)];
</span><span class="cx"> 
</span><span class="cx">     if (!allocator.canAllocate())
</span><del>-        allocator.refill(m_deallocator.allocateMediumLine());
</del><ins>+        allocator.refill(allocateMediumLine());
</ins><span class="cx">     return allocator.allocate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -97,7 +134,7 @@
</span><span class="cx">     if (size &lt;= smallMax) {
</span><span class="cx">         size_t smallSizeClass = smallSizeClassFor(size);
</span><span class="cx">         BumpAllocator&amp; allocator = m_smallAllocators[smallSizeClass];
</span><del>-        allocator.refill(m_deallocator.allocateSmallLine(smallSizeClass));
</del><ins>+        allocator.refill(allocateSmallLine(smallSizeClass));
</ins><span class="cx">         return allocator.allocate();
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocAllocatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Allocator.h (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Allocator.h        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/Allocator.h        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -51,16 +51,25 @@
</span><span class="cx">     void scavenge();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    typedef FixedVector&lt;SmallLine*, smallLineCacheCapacity&gt; SmallLineCache;
+    typedef FixedVector&lt;MediumLine*, mediumLineCacheCapacity&gt; MediumLineCache;
+
</ins><span class="cx">     void* allocateFastCase(BumpAllocator&amp;);
</span><span class="cx"> 
</span><span class="cx">     void* allocateMedium(size_t);
</span><span class="cx">     void* allocateLarge(size_t);
</span><span class="cx">     void* allocateXLarge(size_t);
</span><span class="cx">     
</span><ins>+    SmallLine* allocateSmallLine(size_t smallSizeClass);
+    MediumLine* allocateMediumLine();
+    
</ins><span class="cx">     Deallocator&amp; m_deallocator;
</span><span class="cx"> 
</span><span class="cx">     std::array&lt;BumpAllocator, smallMax / alignment&gt; m_smallAllocators;
</span><span class="cx">     std::array&lt;BumpAllocator, mediumMax / alignment&gt; m_mediumAllocators;
</span><ins>+
+    std::array&lt;SmallLineCache, smallMax / alignment&gt; m_smallLineCaches;
+    MediumLineCache m_mediumLineCache;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline bool Allocator::allocateFastCase(size_t size, void*&amp; object)
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocDeallocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Deallocator.cpp (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Deallocator.cpp        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/Deallocator.cpp        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -39,9 +39,6 @@
</span><span class="cx"> namespace bmalloc {
</span><span class="cx"> 
</span><span class="cx"> Deallocator::Deallocator()
</span><del>-    : m_objectLog()
-    , m_smallLineCaches()
-    , m_mediumLineCache()
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -53,16 +50,6 @@
</span><span class="cx"> void Deallocator::scavenge()
</span><span class="cx"> {
</span><span class="cx">     processObjectLog();
</span><del>-    
-    std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
-    Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
-    
-    for (auto&amp; smallLineCache : m_smallLineCaches) {
-        while (smallLineCache.size())
-            heap-&gt;deallocateSmallLine(lock, smallLineCache.pop());
-    }
-    while (m_mediumLineCache.size())
-        heap-&gt;deallocateMediumLine(lock, m_mediumLineCache.pop());
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Deallocator::deallocateLarge(void* object)
</span><span class="lines">@@ -80,19 +67,20 @@
</span><span class="cx"> void Deallocator::processObjectLog()
</span><span class="cx"> {
</span><span class="cx">     std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
</span><ins>+    Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
</ins><span class="cx">     
</span><span class="cx">     for (auto object : m_objectLog) {
</span><span class="cx">         if (isSmall(object)) {
</span><span class="cx">             SmallLine* line = SmallLine::get(object);
</span><span class="cx">             if (!line-&gt;deref(lock))
</span><span class="cx">                 continue;
</span><del>-            deallocateSmallLine(lock, line);
</del><ins>+            heap-&gt;deallocateSmallLine(lock, line);
</ins><span class="cx">         } else {
</span><span class="cx">             BASSERT(isSmallOrMedium(object));
</span><span class="cx">             MediumLine* line = MediumLine::get(object);
</span><span class="cx">             if (!line-&gt;deref(lock))
</span><span class="cx">                 continue;
</span><del>-            deallocateMediumLine(lock, line);
</del><ins>+            heap-&gt;deallocateMediumLine(lock, line);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -119,48 +107,4 @@
</span><span class="cx">     return deallocateXLarge(object);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Deallocator::deallocateSmallLine(std::lock_guard&lt;StaticMutex&gt;&amp; lock, SmallLine* line)
-{
-    SmallLineCache&amp; smallLineCache = m_smallLineCaches[SmallPage::get(line)-&gt;smallSizeClass()];
-    if (smallLineCache.size() == smallLineCache.capacity())
-        return PerProcess&lt;Heap&gt;::getFastCase()-&gt;deallocateSmallLine(lock, line);
-
-    smallLineCache.push(line);
-}
-
-SmallLine* Deallocator::allocateSmallLine(size_t smallSizeClass)
-{
-    SmallLineCache&amp; smallLineCache = m_smallLineCaches[smallSizeClass];
-    if (!smallLineCache.size()) {
-        std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
-        Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
-
-        while (smallLineCache.size() != smallLineCache.capacity())
-            smallLineCache.push(heap-&gt;allocateSmallLine(lock, smallSizeClass));
-    }
-
-    return smallLineCache.pop();
-}
-
-void Deallocator::deallocateMediumLine(std::lock_guard&lt;StaticMutex&gt;&amp; lock, MediumLine* line)
-{
-    if (m_mediumLineCache.size() == m_mediumLineCache.capacity())
-        return PerProcess&lt;Heap&gt;::getFastCase()-&gt;deallocateMediumLine(lock, line);
-
-    m_mediumLineCache.push(line);
-}
-
-MediumLine* Deallocator::allocateMediumLine()
-{
-    if (!m_mediumLineCache.size()) {
-        std::lock_guard&lt;StaticMutex&gt; lock(PerProcess&lt;Heap&gt;::mutex());
-        Heap* heap = PerProcess&lt;Heap&gt;::getFastCase();
-
-        while (m_mediumLineCache.size() != m_mediumLineCache.capacity())
-            m_mediumLineCache.push(heap-&gt;allocateMediumLine(lock));
-    }
-
-    return m_mediumLineCache.pop();
-}
-
</del><span class="cx"> } // namespace bmalloc
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocDeallocatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Deallocator.h (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Deallocator.h        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/Deallocator.h        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -44,25 +44,14 @@
</span><span class="cx">     bool deallocateFastCase(void*);
</span><span class="cx">     void deallocateSlowCase(void*);
</span><span class="cx"> 
</span><del>-    void deallocateSmallLine(std::lock_guard&lt;StaticMutex&gt;&amp;, SmallLine*);
-    SmallLine* allocateSmallLine(size_t smallSizeClass);
-
-    void deallocateMediumLine(std::lock_guard&lt;StaticMutex&gt;&amp;, MediumLine*);
-    MediumLine* allocateMediumLine();
-    
</del><span class="cx">     void scavenge();
</span><span class="cx">     
</span><span class="cx"> private:
</span><del>-    typedef FixedVector&lt;SmallLine*, smallLineCacheCapacity&gt; SmallLineCache;
-    typedef FixedVector&lt;MediumLine*, mediumLineCacheCapacity&gt; MediumLineCache;
-
</del><span class="cx">     void deallocateLarge(void*);
</span><span class="cx">     void deallocateXLarge(void*);
</span><span class="cx">     void processObjectLog();
</span><span class="cx"> 
</span><span class="cx">     FixedVector&lt;void*, deallocatorLogCapacity&gt; m_objectLog;
</span><del>-    std::array&lt;SmallLineCache, smallMax / alignment&gt; m_smallLineCaches;
-    MediumLineCache m_mediumLineCache;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline bool Deallocator::deallocateFastCase(void* object)
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocSizesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Sizes.h (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Sizes.h        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/Sizes.h        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #define Sizes_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Algorithm.h&quot;
</span><ins>+#include &quot;BPlatform.h&quot;
</ins><span class="cx"> #include &lt;algorithm&gt;
</span><span class="cx"> #include &lt;cstdint&gt;
</span><span class="cx"> #include &lt;cstddef&gt;
</span><span class="lines">@@ -45,6 +46,13 @@
</span><span class="cx">     static const size_t alignment = 8;
</span><span class="cx">     static const size_t alignmentMask = alignment - 1ul;
</span><span class="cx"> 
</span><ins>+#if BPLATFORM(IOS)
+    static const size_t vmPageSize = 16 * kB;
+#else
+    static const size_t vmPageSize = 4 * kB;
+#endif
+    static const size_t vmPageMask = ~(vmPageSize - 1);
+    
</ins><span class="cx">     static const size_t superChunkSize = 32 * MB;
</span><span class="cx"> 
</span><span class="cx">     static const size_t smallMax = 256;
</span><span class="lines">@@ -84,8 +92,8 @@
</span><span class="cx"> 
</span><span class="cx">     static const size_t deallocatorLogCapacity = 256;
</span><span class="cx"> 
</span><del>-    static const size_t smallLineCacheCapacity = 16;
-    static const size_t mediumLineCacheCapacity = 8;
</del><ins>+    static const size_t smallLineCacheCapacity = vmPageSize / smallLineSize;
+    static const size_t mediumLineCacheCapacity = vmPageSize / mediumLineSize;
</ins><span class="cx">     
</span><span class="cx">     static const std::chrono::milliseconds scavengeSleepDuration = std::chrono::milliseconds(512);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocVMAllocateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/VMAllocate.h (173674 => 173675)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/VMAllocate.h        2014-09-16 22:36:41 UTC (rev 173674)
+++ trunk/Source/bmalloc/bmalloc/VMAllocate.h        2014-09-16 22:37:15 UTC (rev 173675)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #define VMAllocate_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;BAssert.h&quot;
</span><del>-#include &quot;BPlatform.h&quot;
</del><span class="cx"> #include &quot;Range.h&quot;
</span><span class="cx"> #include &quot;Sizes.h&quot;
</span><span class="cx"> #include &quot;Syscall.h&quot;
</span><span class="lines">@@ -40,14 +39,6 @@
</span><span class="cx"> 
</span><span class="cx"> #define BMALLOC_VM_TAG VM_MAKE_TAG(VM_MEMORY_TCMALLOC)
</span><span class="cx"> 
</span><del>-#if BPLATFORM(IOS)
-static const size_t vmPageSize = 16 * kB;
-#else
-static const size_t vmPageSize = 4 * kB;
-#endif
-
-static const size_t vmPageMask = ~(vmPageSize - 1);
-    
</del><span class="cx"> inline size_t vmSize(size_t size)
</span><span class="cx"> {
</span><span class="cx">     return roundUpToMultipleOf&lt;vmPageSize&gt;(size);
</span></span></pre>
</div>
</div>

</body>
</html>