<!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>[201959] trunk/PerformanceTests</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/201959">201959</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2016-06-10 18:20:21 -0700 (Fri, 10 Jun 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fix some text in Air.js/README.md
https://bugs.webkit.org/show_bug.cgi?id=158650

Reviewed by Benjamin Poulain.
        
I read the text again and found bugs:
        
- We never actually say how to run the benchmark. This change adds a blurb about how to run
  it.

- We both say that allocateStack is responsible for the bulk of the running time and that
  we haven't measured where the bulk of the time is spent. This changes the text to say that
  it was a goal to make allocateStack be the hottest part of the benchmark, but that we did
  not measure this.

* Air.js/README.md:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkPerformanceTestsAirjsREADMEmd">trunk/PerformanceTests/Air.js/README.md</a></li>
<li><a href="#trunkPerformanceTestsChangeLog">trunk/PerformanceTests/ChangeLog</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkPerformanceTestsAirjsREADMEmd"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Air.js/README.md (201958 => 201959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/README.md        2016-06-11 01:18:37 UTC (rev 201958)
+++ trunk/PerformanceTests/Air.js/README.md        2016-06-11 01:20:21 UTC (rev 201959)
</span><span class="lines">@@ -8,6 +8,9 @@
</span><span class="cx"> 
</span><span class="cx"> This documents the motivation, design, and license of Air.js.
</span><span class="cx"> 
</span><ins>+To run Air.js, simply open &quot;Air.js/test.html&quot; in your browser. It will only run
+correctly if your browser supports ES6.
+
</ins><span class="cx"> ## Motivation
</span><span class="cx"> 
</span><span class="cx"> At the time that Air.js was written, most JavaScript benchmarks used ES5 or
</span><span class="lines">@@ -90,18 +93,20 @@
</span><span class="cx"> These payloads allow Air.js to precisely replay allocateStack on those actual
</span><span class="cx"> functions.
</span><span class="cx"> 
</span><del>-The payload is executable code that allocates the IR, and about 15% of
</del><ins>+It was an a priori goal of Air.js to spend most of the time in the
+allocateStack phase. This is a faithful reproduction of the C++ allocateStack
+phase, including its use of an abstract liveness analysis. It's abstract in the
+sense that the same liveness algorithm can be reused for temporaries,
+registers, or stack slots. In C++ this meant using templates, while in ES6 it
+means more run-time dynamic dispatch.
+
+Each IR payload is executable code that allocates the IR, and about 15% of
</ins><span class="cx"> benchmark execution time is spent in that code. This is significant, but having
</span><span class="cx"> learned this, we don't feel that it would be honest to try to change the
</span><span class="cx"> efficiency of payload initialization. What if the payload initialization was
</span><span class="cx"> more expensive on our engine than others? If it was, then such a change would
</span><span class="cx"> not be fair.
</span><span class="cx"> 
</span><del>-Most of the time in Air.js is spent running the allocateStack phase, which is
-reproduced faithfully in ES6, including its use of an abstract liveness
-analysis. It's abstract in the sense that the same liveness algorithm can be
-reused for temporaries, registers, or stack slots.
-
</del><span class="cx"> Air.js validates its results. We added a Code hashing capability to both the
</span><span class="cx"> C++ Air and Air.js, and we assert each payload looks identical after
</span><span class="cx"> allocateStack to what it would have looked like after the original C++
</span></span></pre></div>
<a id="trunkPerformanceTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/ChangeLog (201958 => 201959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/ChangeLog        2016-06-11 01:18:37 UTC (rev 201958)
+++ trunk/PerformanceTests/ChangeLog        2016-06-11 01:20:21 UTC (rev 201959)
</span><span class="lines">@@ -1,5 +1,24 @@
</span><span class="cx"> 2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Fix some text in Air.js/README.md
+        https://bugs.webkit.org/show_bug.cgi?id=158650
+
+        Reviewed by Benjamin Poulain.
+        
+        I read the text again and found bugs:
+        
+        - We never actually say how to run the benchmark. This change adds a blurb about how to run
+          it.
+
+        - We both say that allocateStack is responsible for the bulk of the running time and that
+          we haven't measured where the bulk of the time is spent. This changes the text to say that
+          it was a goal to make allocateStack be the hottest part of the benchmark, but that we did
+          not measure this.
+
+        * Air.js/README.md:
+
+2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
+
</ins><span class="cx">         Air.js should have some documentation
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=158648
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>