<!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>[161030] branches/jsCStack/Source/JavaScriptCore</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/161030">161030</a></dd>
<dt>Author</dt> <dd>mark.lam@apple.com</dd>
<dt>Date</dt> <dd>2013-12-23 15:42:52 -0800 (Mon, 23 Dec 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>CStack: Cosmetic: rename JSStack::m_commitEnd to m_commitTop.
https://bugs.webkit.org/show_bug.cgi?id=126186

Not yet reviewed.

In the JSStack constructor, m_commitEnd is initialized to highAddress()
which is the address just above the start of the stack. This is
appropriate because no memory has been committed for the stack yet i.e.
highAddress() - m_commitEnd should equal 0.

When we grow the stack in growSlowCase, we set m_commitEnd to
m_commitEnd - delta, where delta is some even multiple of commitSize
(some units of page size). This means that if there is memory committed,
m_commitEnd would point to an allocatable slot in the stack, not past it.
Hence, m_commitEnd should more appropriately be named m_commitTop.

* interpreter/JSStack.cpp:
(JSC::JSStack::JSStack):
(JSC::JSStack::~JSStack):
(JSC::JSStack::growSlowCase):
(JSC::JSStack::releaseExcessCapacity):
* interpreter/JSStack.h:
* interpreter/JSStackInlines.h:
(JSC::JSStack::shrink):
(JSC::JSStack::installTrapsAfterFrame):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesjsCStackSourceJavaScriptCoreChangeLog">branches/jsCStack/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinterpreterJSStackcpp">branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinterpreterJSStackh">branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.h</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreinterpreterJSStackInlinesh">branches/jsCStack/Source/JavaScriptCore/interpreter/JSStackInlines.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesjsCStackSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/ChangeLog (161029 => 161030)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/ChangeLog        2013-12-23 23:28:53 UTC (rev 161029)
+++ branches/jsCStack/Source/JavaScriptCore/ChangeLog        2013-12-23 23:42:52 UTC (rev 161030)
</span><span class="lines">@@ -1,5 +1,33 @@
</span><span class="cx"> 2013-12-23  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        CStack: Cosmetic: rename JSStack::m_commitEnd to m_commitTop.
+        https://bugs.webkit.org/show_bug.cgi?id=126186
+
+        Not yet reviewed.
+
+        In the JSStack constructor, m_commitEnd is initialized to highAddress()
+        which is the address just above the start of the stack. This is
+        appropriate because no memory has been committed for the stack yet i.e.
+        highAddress() - m_commitEnd should equal 0.
+
+        When we grow the stack in growSlowCase, we set m_commitEnd to
+        m_commitEnd - delta, where delta is some even multiple of commitSize
+        (some units of page size). This means that if there is memory committed,
+        m_commitEnd would point to an allocatable slot in the stack, not past it.
+        Hence, m_commitEnd should more appropriately be named m_commitTop.
+
+        * interpreter/JSStack.cpp:
+        (JSC::JSStack::JSStack):
+        (JSC::JSStack::~JSStack):
+        (JSC::JSStack::growSlowCase):
+        (JSC::JSStack::releaseExcessCapacity):
+        * interpreter/JSStack.h:
+        * interpreter/JSStackInlines.h:
+        (JSC::JSStack::shrink):
+        (JSC::JSStack::installTrapsAfterFrame):
+
+2013-12-23  Mark Lam  &lt;mark.lam@apple.com&gt;
+
</ins><span class="cx">         CStack: Cosmetic: rename JSStack::m_useableEnd to m_useableTop.
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=126184.
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinterpreterJSStackcpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.cpp (161029 => 161030)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.cpp        2013-12-23 23:28:53 UTC (rev 161029)
+++ branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.cpp        2013-12-23 23:42:52 UTC (rev 161030)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_reservation = PageReservation::reserve(roundUpAllocationSize(capacity * sizeof(Register), commitSize), OSAllocator::JSVMStackPages);
</span><span class="cx">     setStackLimit(highAddress());
</span><del>-    m_commitEnd = highAddress();
</del><ins>+    m_commitTop = highAddress();
</ins><span class="cx">     
</span><span class="cx">     m_lastStackTop = baseOfStack();
</span><span class="cx"> 
</span><span class="lines">@@ -72,8 +72,8 @@
</span><span class="cx"> JSStack::~JSStack()
</span><span class="cx"> {
</span><span class="cx">     void* highAddress = reinterpret_cast&lt;void*&gt;(static_cast&lt;char*&gt;(m_reservation.base()) + m_reservation.size());
</span><del>-    m_reservation.decommit(reinterpret_cast&lt;void*&gt;(m_commitEnd), reinterpret_cast&lt;intptr_t&gt;(highAddress) - reinterpret_cast&lt;intptr_t&gt;(m_commitEnd));
-    addToCommittedByteCount(-(reinterpret_cast&lt;intptr_t&gt;(highAddress) - reinterpret_cast&lt;intptr_t&gt;(m_commitEnd)));
</del><ins>+    m_reservation.decommit(reinterpret_cast&lt;void*&gt;(m_commitTop), reinterpret_cast&lt;intptr_t&gt;(highAddress) - reinterpret_cast&lt;intptr_t&gt;(m_commitTop));
+    addToCommittedByteCount(-(reinterpret_cast&lt;intptr_t&gt;(highAddress) - reinterpret_cast&lt;intptr_t&gt;(m_commitTop)));
</ins><span class="cx">     m_reservation.deallocate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> {
</span><span class="cx">     // If we have already committed enough memory to satisfy this request,
</span><span class="cx">     // just update the end pointer and return.
</span><del>-    if (newEnd &gt;= m_commitEnd) {
</del><ins>+    if (newEnd &gt;= m_commitTop) {
</ins><span class="cx">         setStackLimit(newEnd);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -89,15 +89,15 @@
</span><span class="cx">     // Compute the chunk size of additional memory to commit, and see if we
</span><span class="cx">     // have it is still within our budget. If not, we'll fail to grow and
</span><span class="cx">     // return false.
</span><del>-    long delta = roundUpAllocationSize(reinterpret_cast&lt;char*&gt;(m_commitEnd) - reinterpret_cast&lt;char*&gt;(newEnd), commitSize);
-    if (reinterpret_cast&lt;char*&gt;(m_commitEnd) - delta &lt;= reinterpret_cast&lt;char*&gt;(m_useableTop))
</del><ins>+    long delta = roundUpAllocationSize(reinterpret_cast&lt;char*&gt;(m_commitTop) - reinterpret_cast&lt;char*&gt;(newEnd), commitSize);
+    if (reinterpret_cast&lt;char*&gt;(m_commitTop) - delta &lt;= reinterpret_cast&lt;char*&gt;(m_useableTop))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // Otherwise, the growth is still within our budget. Go ahead and commit
</span><span class="cx">     // it and return true.
</span><del>-    m_reservation.commit(reinterpret_cast&lt;char*&gt;(m_commitEnd) - delta, delta);
</del><ins>+    m_reservation.commit(reinterpret_cast&lt;char*&gt;(m_commitTop) - delta, delta);
</ins><span class="cx">     addToCommittedByteCount(delta);
</span><del>-    m_commitEnd = reinterpret_cast_ptr&lt;Register*&gt;(reinterpret_cast&lt;char*&gt;(m_commitEnd) - delta);
</del><ins>+    m_commitTop = reinterpret_cast_ptr&lt;Register*&gt;(reinterpret_cast&lt;char*&gt;(m_commitTop) - delta);
</ins><span class="cx">     setStackLimit(newEnd);
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="lines">@@ -127,10 +127,10 @@
</span><span class="cx"> 
</span><span class="cx"> void JSStack::releaseExcessCapacity()
</span><span class="cx"> {
</span><del>-    ptrdiff_t delta = reinterpret_cast&lt;uintptr_t&gt;(highAddress()) - reinterpret_cast&lt;uintptr_t&gt;(m_commitEnd);
-    m_reservation.decommit(m_commitEnd, delta);
</del><ins>+    ptrdiff_t delta = reinterpret_cast&lt;uintptr_t&gt;(highAddress()) - reinterpret_cast&lt;uintptr_t&gt;(m_commitTop);
+    m_reservation.decommit(m_commitTop, delta);
</ins><span class="cx">     addToCommittedByteCount(-delta);
</span><del>-    m_commitEnd = highAddress();
</del><ins>+    m_commitTop = highAddress();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSStack::initializeThreading()
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinterpreterJSStackh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.h (161029 => 161030)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.h        2013-12-23 23:28:53 UTC (rev 161029)
+++ branches/jsCStack/Source/JavaScriptCore/interpreter/JSStack.h        2013-12-23 23:42:52 UTC (rev 161030)
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx">         CallFrame*&amp; m_topCallFrame;
</span><span class="cx"> #if ENABLE(LLINT_C_LOOP)
</span><span class="cx">         Register* m_end;
</span><del>-        Register* m_commitEnd;
</del><ins>+        Register* m_commitTop;
</ins><span class="cx">         Register* m_useableTop;
</span><span class="cx">         PageReservation m_reservation;
</span><span class="cx">         Register* m_lastStackTop;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreinterpreterJSStackInlinesh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/interpreter/JSStackInlines.h (161029 => 161030)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/interpreter/JSStackInlines.h        2013-12-23 23:28:53 UTC (rev 161029)
+++ branches/jsCStack/Source/JavaScriptCore/interpreter/JSStackInlines.h        2013-12-23 23:42:52 UTC (rev 161030)
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx">     if (newEnd &gt;= m_end)
</span><span class="cx">         return;
</span><span class="cx">     setStackLimit(newEnd);
</span><del>-    if (m_end == baseOfStack() &amp;&amp; (m_commitEnd - baseOfStack()) &gt;= maxExcessCapacity)
</del><ins>+    if (m_end == baseOfStack() &amp;&amp; (m_commitTop - baseOfStack()) &gt;= maxExcessCapacity)
</ins><span class="cx">         releaseExcessCapacity();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -285,7 +285,7 @@
</span><span class="cx">     const int sizeOfTrap = 64;
</span><span class="cx">     int32_t* startOfTrap = reinterpret_cast&lt;int32_t*&gt;(topOfFrame);
</span><span class="cx">     int32_t* endOfTrap = startOfTrap - sizeOfTrap;
</span><del>-    int32_t* endOfCommitedMemory = reinterpret_cast&lt;int32_t*&gt;(m_commitEnd);
</del><ins>+    int32_t* endOfCommitedMemory = reinterpret_cast&lt;int32_t*&gt;(m_commitTop);
</ins><span class="cx"> 
</span><span class="cx">     // Make sure we're not exceeding the amount of available memory to write to:
</span><span class="cx">     if (endOfTrap &lt; endOfCommitedMemory)
</span></span></pre>
</div>
</div>

</body>
</html>