<!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>[178727] 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/178727">178727</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2015-01-20 11:29:46 -0800 (Tue, 20 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>bmalloc: a little bit of cleanup
https://bugs.webkit.org/show_bug.cgi?id=140687

Reviewed by Anders Carlsson.

* bmalloc/Algorithm.h:
(bmalloc::isPowerOfTwo): Added a check for 0, since 0 would break a lot
of code.

* bmalloc/BoundaryTag.h:
* bmalloc/BoundaryTagInlines.h:
(bmalloc::BoundaryTag::mergeLeft):
(bmalloc::BoundaryTag::mergeRight):
(bmalloc::BoundaryTag::merge):
(bmalloc::BoundaryTag::deallocate):
(bmalloc::BoundaryTag::split):
(bmalloc::BoundaryTag::allocate):
(bmalloc::BoundaryTag::mergeLargeLeft): Deleted.
(bmalloc::BoundaryTag::mergeLargeRight): Deleted.
(bmalloc::BoundaryTag::mergeLarge): Deleted.
(bmalloc::BoundaryTag::splitLarge): Deleted. Removed the word &quot;Large&quot;
from all these functions, since boundary tags always pertain to large
objects, and putting the word &quot;Large&quot; everywhere wasn't helping to
explain that.

* bmalloc/Heap.cpp:
(bmalloc::Heap::allocateXLarge):
(bmalloc::Heap::findXLarge):
(bmalloc::Heap::deallocateXLarge):
* bmalloc/Heap.h:
* bmalloc/VMHeap.h:
(bmalloc::VMHeap::allocateXLarge): Deleted.
(bmalloc::VMHeap::findXLarge): Deleted.
(bmalloc::VMHeap::deallocateXLarge): Deleted. Moved XLarge allocation
from VMHeap to Heap. Since the purpose of the VMHeap is to cache VM
ranges, and the VMHeap never caches any XLarge ranges, it doesn't
really make sense for the VMHeap to be involved.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourcebmallocChangeLog">trunk/Source/bmalloc/ChangeLog</a></li>
<li><a href="#trunkSourcebmallocbmallocAlgorithmh">trunk/Source/bmalloc/bmalloc/Algorithm.h</a></li>
<li><a href="#trunkSourcebmallocbmallocBoundaryTagh">trunk/Source/bmalloc/bmalloc/BoundaryTag.h</a></li>
<li><a href="#trunkSourcebmallocbmallocBoundaryTagInlinesh">trunk/Source/bmalloc/bmalloc/BoundaryTagInlines.h</a></li>
<li><a href="#trunkSourcebmallocbmallocHeapcpp">trunk/Source/bmalloc/bmalloc/Heap.cpp</a></li>
<li><a href="#trunkSourcebmallocbmallocHeaph">trunk/Source/bmalloc/bmalloc/Heap.h</a></li>
<li><a href="#trunkSourcebmallocbmallocVMHeaph">trunk/Source/bmalloc/bmalloc/VMHeap.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourcebmallocChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/ChangeLog (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/ChangeLog        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/ChangeLog        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2015-01-20  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        bmalloc: a little bit of cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=140687
+
+        Reviewed by Anders Carlsson.
+
+        * bmalloc/Algorithm.h:
+        (bmalloc::isPowerOfTwo): Added a check for 0, since 0 would break a lot
+        of code.
+
+        * bmalloc/BoundaryTag.h:
+        * bmalloc/BoundaryTagInlines.h:
+        (bmalloc::BoundaryTag::mergeLeft):
+        (bmalloc::BoundaryTag::mergeRight):
+        (bmalloc::BoundaryTag::merge):
+        (bmalloc::BoundaryTag::deallocate):
+        (bmalloc::BoundaryTag::split):
+        (bmalloc::BoundaryTag::allocate):
+        (bmalloc::BoundaryTag::mergeLargeLeft): Deleted.
+        (bmalloc::BoundaryTag::mergeLargeRight): Deleted.
+        (bmalloc::BoundaryTag::mergeLarge): Deleted.
+        (bmalloc::BoundaryTag::splitLarge): Deleted. Removed the word &quot;Large&quot;
+        from all these functions, since boundary tags always pertain to large
+        objects, and putting the word &quot;Large&quot; everywhere wasn't helping to
+        explain that.
+
+        * bmalloc/Heap.cpp:
+        (bmalloc::Heap::allocateXLarge):
+        (bmalloc::Heap::findXLarge):
+        (bmalloc::Heap::deallocateXLarge):
+        * bmalloc/Heap.h:
+        * bmalloc/VMHeap.h:
+        (bmalloc::VMHeap::allocateXLarge): Deleted.
+        (bmalloc::VMHeap::findXLarge): Deleted.
+        (bmalloc::VMHeap::deallocateXLarge): Deleted. Moved XLarge allocation
+        from VMHeap to Heap. Since the purpose of the VMHeap is to cache VM
+        ranges, and the VMHeap never caches any XLarge ranges, it doesn't
+        really make sense for the VMHeap to be involved.
+
</ins><span class="cx"> 2015-01-16  Geoffrey Garen  &lt;ggaren@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         bmalloc: refactored XLarge allocation for better alignment
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocAlgorithmh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Algorithm.h (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Algorithm.h        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/Algorithm.h        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline constexpr bool isPowerOfTwo(size_t size)
</span><span class="cx"> {
</span><del>-    return !(size &amp; (size - 1));
</del><ins>+    return size &amp;&amp; !(size &amp; (size - 1));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; inline T roundUpToMultipleOf(size_t divisor, T x)
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocBoundaryTagh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/BoundaryTag.h (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/BoundaryTag.h        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/BoundaryTag.h        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -72,10 +72,10 @@
</span><span class="cx">     static_assert((1 &lt;&lt; compactBeginBits) - 1 &gt;= largeMin / largeAlignment, &quot;compactBegin must be encodable in a BoundaryTag.&quot;);
</span><span class="cx">     static_assert((1 &lt;&lt; sizeBits) - 1 &gt;= largeMax, &quot;largeMax must be encodable in a BoundaryTag.&quot;);
</span><span class="cx"> 
</span><del>-    static void splitLarge(BeginTag*, size_t size, EndTag*&amp; endTag, Range&amp;, Range&amp; leftover);
-    static void mergeLargeLeft(EndTag*&amp; prev, BeginTag*&amp; beginTag, Range&amp;, bool&amp; hasPhysicalPages);
-    static void mergeLargeRight(EndTag*&amp;, BeginTag*&amp; next, Range&amp;, bool&amp; hasPhysicalPages);
-    static void mergeLarge(BeginTag*&amp;, EndTag*&amp;, Range&amp;);
</del><ins>+    static void split(BeginTag*, size_t, EndTag*&amp;, Range&amp;, Range&amp; leftover);
+    static void mergeLeft(EndTag*&amp; prev, BeginTag*&amp;, Range&amp;, bool&amp; hasPhysicalPages);
+    static void mergeRight(EndTag*&amp;, BeginTag*&amp; next, Range&amp;, bool&amp; hasPhysicalPages);
+    static void merge(BeginTag*&amp;, EndTag*&amp;, Range&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool m_isFree: 1;
</span><span class="cx">     bool m_isEnd: 1;
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocBoundaryTagInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/BoundaryTagInlines.h (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/BoundaryTagInlines.h        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/BoundaryTagInlines.h        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">     return range;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void BoundaryTag::mergeLargeLeft(EndTag*&amp; prev, BeginTag*&amp; beginTag, Range&amp; range, bool&amp; hasPhysicalPages)
</del><ins>+inline void BoundaryTag::mergeLeft(EndTag*&amp; prev, BeginTag*&amp; beginTag, Range&amp; range, bool&amp; hasPhysicalPages)
</ins><span class="cx"> {
</span><span class="cx">     Range left(range.begin() - prev-&gt;size(), prev-&gt;size());
</span><span class="cx"> 
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">     beginTag = LargeChunk::beginTag(range.begin());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void BoundaryTag::mergeLargeRight(EndTag*&amp; endTag, BeginTag*&amp; next, Range&amp; range, bool&amp; hasPhysicalPages)
</del><ins>+inline void BoundaryTag::mergeRight(EndTag*&amp; endTag, BeginTag*&amp; next, Range&amp; range, bool&amp; hasPhysicalPages)
</ins><span class="cx"> {
</span><span class="cx">     Range right(range.end(), next-&gt;size());
</span><span class="cx"> 
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">     endTag = LargeChunk::endTag(range.begin(), range.size());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-INLINE void BoundaryTag::mergeLarge(BeginTag*&amp; beginTag, EndTag*&amp; endTag, Range&amp; range)
</del><ins>+INLINE void BoundaryTag::merge(BeginTag*&amp; beginTag, EndTag*&amp; endTag, Range&amp; range)
</ins><span class="cx"> {
</span><span class="cx">     EndTag* prev = beginTag-&gt;prev();
</span><span class="cx">     BeginTag* next = endTag-&gt;next();
</span><span class="lines">@@ -142,10 +142,10 @@
</span><span class="cx">     validate(prev, range, next);
</span><span class="cx"> 
</span><span class="cx">     if (prev-&gt;isFree())
</span><del>-        mergeLargeLeft(prev, beginTag, range, hasPhysicalPages);
</del><ins>+        mergeLeft(prev, beginTag, range, hasPhysicalPages);
</ins><span class="cx"> 
</span><span class="cx">     if (next-&gt;isFree())
</span><del>-        mergeLargeRight(endTag, next, range, hasPhysicalPages);
</del><ins>+        mergeRight(endTag, next, range, hasPhysicalPages);
</ins><span class="cx"> 
</span><span class="cx">     beginTag-&gt;setRange(range);
</span><span class="cx">     beginTag-&gt;setFree(true);
</span><span class="lines">@@ -164,12 +164,12 @@
</span><span class="cx"> 
</span><span class="cx">     Range range(object, beginTag-&gt;size());
</span><span class="cx">     EndTag* endTag = LargeChunk::endTag(range.begin(), range.size());
</span><del>-    mergeLarge(beginTag, endTag, range);
</del><ins>+    merge(beginTag, endTag, range);
</ins><span class="cx">     
</span><span class="cx">     return range;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-INLINE void BoundaryTag::splitLarge(BeginTag* beginTag, size_t size, EndTag*&amp; endTag, Range&amp; range, Range&amp; leftover)
</del><ins>+INLINE void BoundaryTag::split(BeginTag* beginTag, size_t size, EndTag*&amp; endTag, Range&amp; range, Range&amp; leftover)
</ins><span class="cx"> {
</span><span class="cx">     leftover = Range(range.begin() + size, range.size() - size);
</span><span class="cx">     range = Range(range.begin(), size);
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx">     validate(beginTag-&gt;prev(), range, endTag-&gt;next());
</span><span class="cx"> 
</span><span class="cx">     if (range.size() - size &gt; largeMin)
</span><del>-        splitLarge(beginTag, size, endTag, range, leftover);
</del><ins>+        split(beginTag, size, endTag, range, leftover);
</ins><span class="cx"> 
</span><span class="cx">     hasPhysicalPages = beginTag-&gt;hasPhysicalPages();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Heap.cpp (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Heap.cpp        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/Heap.cpp        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -319,23 +319,40 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Range Heap::findXLarge(std::lock_guard&lt;StaticMutex&gt;&amp;, void* object)
-{
-    return m_vmHeap.findXLarge(object);
-}
-
</del><span class="cx"> void* Heap::allocateXLarge(std::lock_guard&lt;StaticMutex&gt;&amp;, size_t size)
</span><span class="cx"> {
</span><span class="cx">     m_isAllocatingPages = true;
</span><span class="cx"> 
</span><del>-    void* result = m_vmHeap.allocateXLarge(size);
-    vmAllocatePhysicalPagesSloppy(result, size);
</del><ins>+    void* result = vmAllocate(size, superChunkSize);
+    m_xLargeRanges.push(Range(result, size));
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Range Heap::findXLarge(std::lock_guard&lt;StaticMutex&gt;&amp;, void* object)
+{
+    for (auto&amp; range : m_xLargeRanges) {
+        if (range.begin() != object)
+            continue;
+        return range;
+    }
+
+    return Range();
+}
+
</ins><span class="cx"> void Heap::deallocateXLarge(std::unique_lock&lt;StaticMutex&gt;&amp; lock, void* object)
</span><span class="cx"> {
</span><del>-    m_vmHeap.deallocateXLarge(lock, object);
</del><ins>+    for (auto&amp; range : m_xLargeRanges) {
+        if (range.begin() != object)
+            continue;
+
+        Range toDeallocate = m_xLargeRanges.pop(&amp;range);
+
+        lock.unlock();
+        vmDeallocate(toDeallocate.begin(), toDeallocate.size());
+        lock.lock();
+        
+        break;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void* Heap::allocateLarge(std::lock_guard&lt;StaticMutex&gt;&amp;, size_t size)
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocHeaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/Heap.h (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/Heap.h        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/Heap.h        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -102,6 +102,7 @@
</span><span class="cx">     Vector&lt;MediumPage*&gt; m_mediumPages;
</span><span class="cx"> 
</span><span class="cx">     SegregatedFreeList m_largeRanges;
</span><ins>+    Vector&lt;Range&gt; m_xLargeRanges;
</ins><span class="cx"> 
</span><span class="cx">     bool m_isAllocatingPages;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocVMHeaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/VMHeap.h (178726 => 178727)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/VMHeap.h        2015-01-20 19:28:13 UTC (rev 178726)
+++ trunk/Source/bmalloc/bmalloc/VMHeap.h        2015-01-20 19:29:46 UTC (rev 178727)
</span><span class="lines">@@ -48,14 +48,10 @@
</span><span class="cx">     SmallPage* allocateSmallPage();
</span><span class="cx">     MediumPage* allocateMediumPage();
</span><span class="cx">     Range allocateLargeRange(size_t);
</span><del>-    void* allocateXLarge(size_t);
</del><span class="cx"> 
</span><del>-    Range findXLarge(void*);
-
</del><span class="cx">     void deallocateSmallPage(std::unique_lock&lt;StaticMutex&gt;&amp;, SmallPage*);
</span><span class="cx">     void deallocateMediumPage(std::unique_lock&lt;StaticMutex&gt;&amp;, MediumPage*);
</span><span class="cx">     void deallocateLargeRange(std::unique_lock&lt;StaticMutex&gt;&amp;, Range);
</span><del>-    void deallocateXLarge(std::unique_lock&lt;StaticMutex&gt;&amp;, void*);
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     void allocateSuperChunk();
</span><span class="lines">@@ -63,7 +59,6 @@
</span><span class="cx">     Vector&lt;SmallPage*&gt; m_smallPages;
</span><span class="cx">     Vector&lt;MediumPage*&gt; m_mediumPages;
</span><span class="cx">     SegregatedFreeList m_largeRanges;
</span><del>-    Vector&lt;Range&gt; m_xLargeRanges;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline SmallPage* VMHeap::allocateSmallPage()
</span><span class="lines">@@ -93,24 +88,6 @@
</span><span class="cx">     return range;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void* VMHeap::allocateXLarge(size_t size)
-{
-    void* result = vmAllocate(size, superChunkSize);
-    m_xLargeRanges.push(Range(result, size));
-    return result;
-}
-
-inline Range VMHeap::findXLarge(void* object)
-{
-    for (auto&amp; range : m_xLargeRanges) {
-        if (range.begin() != object)
-            continue;
-        return range;
-    }
-
-    return Range();
-}
-
</del><span class="cx"> inline void VMHeap::deallocateSmallPage(std::unique_lock&lt;StaticMutex&gt;&amp; lock, SmallPage* page)
</span><span class="cx"> {
</span><span class="cx">     lock.unlock();
</span><span class="lines">@@ -152,23 +129,6 @@
</span><span class="cx">     m_largeRanges.insert(range);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void VMHeap::deallocateXLarge(std::unique_lock&lt;StaticMutex&gt;&amp; lock, void* object)
-{
-    for (size_t i = 0; i &lt; m_xLargeRanges.size(); ++i) {
-        Range range = m_xLargeRanges[i];
-        if (range.begin() != object)
-            continue;
-
-        m_xLargeRanges.pop(i);
-
-        lock.unlock();
-        vmDeallocate(range.begin(), range.size());
-        lock.lock();
-        
-        break;
-    }
-}
-
</del><span class="cx"> } // namespace bmalloc
</span><span class="cx"> 
</span><span class="cx"> #endif // VMHeap_h
</span></span></pre>
</div>
</div>

</body>
</html>