Change ES6SampleBench into ARES-6
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Feb 2017 04:56:09 +0000 (04:56 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 6 Feb 2017 04:56:09 +0000 (04:56 +0000)
https://bugs.webkit.org/show_bug.cgi?id=167863

Rubber stamped by Saam Barati.

This imports changes that Jonathan Davis (jond@apple.com) made to ES6SampleBench to make it look
super awesome. Its now called ARES-6.

* ARES-6: Copied from PerformanceTests/ES6SampleBench.
* ARES-6/ARES-6.svg: Added.
* ARES-6/driver.js:
(Driver):
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
(Driver.prototype.start):
(Driver.prototype._updateIterations):
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/results.js:
(Results.prototype.reportRunning):
(Results.prototype.reportDone):
* ARES-6/stats.js:
(Stats.prototype.toString.return.span):
(Stats.prototype.toString.span.span):
(Stats.prototype.toString): Deleted.
* ARES-6/style.css: Removed.
* ARES-6/styles.css: Added.
(html):
(body):
(header,):
(p a):
(p a:hover):
(.flip):
(header):
(h2,):
(p):
(.about h2):
(.logo):
(.start):
(.start.ready):
(.start.ready:hover):
(.start:after):
(.start.ready .testrun):
(.tests):
(.test):
(.overall h2,):
(.test .indicator):
(.test .indicator.running):
(@keyframes test-running):
(100%):
(.score):
(.score label):
(.score .value):
(.score .units):
(.score .margin):
(.overall):
(.overall .score):
(.overall .margin):
(.testing, .about):
(.testing):
(.about):
(#about:target):
(@media only screen and (max-width: 784px)):
* ARES-6/swoop.svg: Added.
* ES6SampleBench: Removed.
* ES6SampleBench/Air: Removed.
* ES6SampleBench/Air/README.md: Removed.
* ES6SampleBench/Air/airjs-tests.yaml: Removed.
* ES6SampleBench/Air/all.js: Removed.
* ES6SampleBench/Air/allocate_stack.js: Removed.
* ES6SampleBench/Air/arg.js: Removed.
* ES6SampleBench/Air/basic_block.js: Removed.
* ES6SampleBench/Air/benchmark.js: Removed.
* ES6SampleBench/Air/code.js: Removed.
* ES6SampleBench/Air/custom.js: Removed.
* ES6SampleBench/Air/frequented_block.js: Removed.
* ES6SampleBench/Air/insertion_set.js: Removed.
* ES6SampleBench/Air/inst.js: Removed.
* ES6SampleBench/Air/liveness.js: Removed.
* ES6SampleBench/Air/make_dist.sh: Removed.
* ES6SampleBench/Air/opcode.js: Removed.
* ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
* ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
* ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
* ES6SampleBench/Air/reg.js: Removed.
* ES6SampleBench/Air/stack_slot.js: Removed.
* ES6SampleBench/Air/stress-test.js: Removed.
* ES6SampleBench/Air/strip-hash.rb: Removed.
* ES6SampleBench/Air/symbols.js: Removed.
* ES6SampleBench/Air/test.html: Removed.
* ES6SampleBench/Air/test.js: Removed.
* ES6SampleBench/Air/tmp.js: Removed.
* ES6SampleBench/Air/tmp_base.js: Removed.
* ES6SampleBench/Air/util.js: Removed.
* ES6SampleBench/Basic: Removed.
* ES6SampleBench/Basic/ast.js: Removed.
* ES6SampleBench/Basic/basic-tests.yaml: Removed.
* ES6SampleBench/Basic/basic.js: Removed.
* ES6SampleBench/Basic/benchmark.js: Removed.
* ES6SampleBench/Basic/caseless_map.js: Removed.
* ES6SampleBench/Basic/lexer.js: Removed.
* ES6SampleBench/Basic/number.js: Removed.
* ES6SampleBench/Basic/parser.js: Removed.
* ES6SampleBench/Basic/random.js: Removed.
* ES6SampleBench/Basic/state.js: Removed.
* ES6SampleBench/Basic/stress-test.js: Removed.
* ES6SampleBench/Basic/test.html: Removed.
* ES6SampleBench/Basic/test.js: Removed.
* ES6SampleBench/Basic/util.js: Removed.
* ES6SampleBench/air_benchmark.js: Removed.
* ES6SampleBench/basic_benchmark.js: Removed.
* ES6SampleBench/cli.js: Removed.
* ES6SampleBench/driver.js: Removed.
* ES6SampleBench/glue.js: Removed.
* ES6SampleBench/index.html: Removed.
* ES6SampleBench/results.js: Removed.
* ES6SampleBench/stats.js: Removed.
* ES6SampleBench/style.css: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211697 268f45cc-cd09-0410-ab3c-d52691b4dbfc

57 files changed:
PerformanceTests/ARES-6/ARES-6.svg [new file with mode: 0644]
PerformanceTests/ARES-6/Air/README.md [moved from PerformanceTests/ES6SampleBench/Air/README.md with 98% similarity]
PerformanceTests/ARES-6/Air/airjs-tests.yaml [moved from PerformanceTests/ES6SampleBench/Air/airjs-tests.yaml with 100% similarity]
PerformanceTests/ARES-6/Air/all.js [moved from PerformanceTests/ES6SampleBench/Air/all.js with 100% similarity]
PerformanceTests/ARES-6/Air/allocate_stack.js [moved from PerformanceTests/ES6SampleBench/Air/allocate_stack.js with 100% similarity]
PerformanceTests/ARES-6/Air/arg.js [moved from PerformanceTests/ES6SampleBench/Air/arg.js with 100% similarity]
PerformanceTests/ARES-6/Air/basic_block.js [moved from PerformanceTests/ES6SampleBench/Air/basic_block.js with 100% similarity]
PerformanceTests/ARES-6/Air/benchmark.js [moved from PerformanceTests/ES6SampleBench/Air/benchmark.js with 100% similarity]
PerformanceTests/ARES-6/Air/code.js [moved from PerformanceTests/ES6SampleBench/Air/code.js with 100% similarity]
PerformanceTests/ARES-6/Air/custom.js [moved from PerformanceTests/ES6SampleBench/Air/custom.js with 100% similarity]
PerformanceTests/ARES-6/Air/frequented_block.js [moved from PerformanceTests/ES6SampleBench/Air/frequented_block.js with 100% similarity]
PerformanceTests/ARES-6/Air/insertion_set.js [moved from PerformanceTests/ES6SampleBench/Air/insertion_set.js with 100% similarity]
PerformanceTests/ARES-6/Air/inst.js [moved from PerformanceTests/ES6SampleBench/Air/inst.js with 100% similarity]
PerformanceTests/ARES-6/Air/liveness.js [moved from PerformanceTests/ES6SampleBench/Air/liveness.js with 100% similarity]
PerformanceTests/ARES-6/Air/make_dist.sh [moved from PerformanceTests/ES6SampleBench/Air/make_dist.sh with 100% similarity]
PerformanceTests/ARES-6/Air/opcode.js [moved from PerformanceTests/ES6SampleBench/Air/opcode.js with 100% similarity]
PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js [moved from PerformanceTests/ES6SampleBench/Air/payload-airjs-ACLj8C.js with 100% similarity]
PerformanceTests/ARES-6/Air/payload-gbemu-executeIteration.js [moved from PerformanceTests/ES6SampleBench/Air/payload-gbemu-executeIteration.js with 100% similarity]
PerformanceTests/ARES-6/Air/payload-imaging-gaussian-blur-gaussianBlur.js [moved from PerformanceTests/ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js with 100% similarity]
PerformanceTests/ARES-6/Air/payload-typescript-scanIdentifier.js [moved from PerformanceTests/ES6SampleBench/Air/payload-typescript-scanIdentifier.js with 100% similarity]
PerformanceTests/ARES-6/Air/reg.js [moved from PerformanceTests/ES6SampleBench/Air/reg.js with 100% similarity]
PerformanceTests/ARES-6/Air/stack_slot.js [moved from PerformanceTests/ES6SampleBench/Air/stack_slot.js with 100% similarity]
PerformanceTests/ARES-6/Air/stress-test.js [moved from PerformanceTests/ES6SampleBench/Air/stress-test.js with 100% similarity]
PerformanceTests/ARES-6/Air/strip-hash.rb [moved from PerformanceTests/ES6SampleBench/Air/strip-hash.rb with 100% similarity]
PerformanceTests/ARES-6/Air/symbols.js [moved from PerformanceTests/ES6SampleBench/Air/symbols.js with 100% similarity]
PerformanceTests/ARES-6/Air/test.html [moved from PerformanceTests/ES6SampleBench/Air/test.html with 100% similarity]
PerformanceTests/ARES-6/Air/test.js [moved from PerformanceTests/ES6SampleBench/Air/test.js with 100% similarity]
PerformanceTests/ARES-6/Air/tmp.js [moved from PerformanceTests/ES6SampleBench/Air/tmp.js with 100% similarity]
PerformanceTests/ARES-6/Air/tmp_base.js [moved from PerformanceTests/ES6SampleBench/Air/tmp_base.js with 100% similarity]
PerformanceTests/ARES-6/Air/util.js [moved from PerformanceTests/ES6SampleBench/Air/util.js with 100% similarity]
PerformanceTests/ARES-6/Basic/ast.js [moved from PerformanceTests/ES6SampleBench/Basic/ast.js with 100% similarity]
PerformanceTests/ARES-6/Basic/basic-tests.yaml [moved from PerformanceTests/ES6SampleBench/Basic/basic-tests.yaml with 100% similarity]
PerformanceTests/ARES-6/Basic/basic.js [moved from PerformanceTests/ES6SampleBench/Basic/basic.js with 100% similarity]
PerformanceTests/ARES-6/Basic/benchmark.js [moved from PerformanceTests/ES6SampleBench/Basic/benchmark.js with 100% similarity]
PerformanceTests/ARES-6/Basic/caseless_map.js [moved from PerformanceTests/ES6SampleBench/Basic/caseless_map.js with 100% similarity]
PerformanceTests/ARES-6/Basic/lexer.js [moved from PerformanceTests/ES6SampleBench/Basic/lexer.js with 100% similarity]
PerformanceTests/ARES-6/Basic/number.js [moved from PerformanceTests/ES6SampleBench/Basic/number.js with 100% similarity]
PerformanceTests/ARES-6/Basic/parser.js [moved from PerformanceTests/ES6SampleBench/Basic/parser.js with 100% similarity]
PerformanceTests/ARES-6/Basic/random.js [moved from PerformanceTests/ES6SampleBench/Basic/random.js with 100% similarity]
PerformanceTests/ARES-6/Basic/state.js [moved from PerformanceTests/ES6SampleBench/Basic/state.js with 100% similarity]
PerformanceTests/ARES-6/Basic/stress-test.js [moved from PerformanceTests/ES6SampleBench/Basic/stress-test.js with 100% similarity]
PerformanceTests/ARES-6/Basic/test.html [moved from PerformanceTests/ES6SampleBench/Basic/test.html with 100% similarity]
PerformanceTests/ARES-6/Basic/test.js [moved from PerformanceTests/ES6SampleBench/Basic/test.js with 100% similarity]
PerformanceTests/ARES-6/Basic/util.js [moved from PerformanceTests/ES6SampleBench/Basic/util.js with 100% similarity]
PerformanceTests/ARES-6/air_benchmark.js [moved from PerformanceTests/ES6SampleBench/air_benchmark.js with 100% similarity]
PerformanceTests/ARES-6/basic_benchmark.js [moved from PerformanceTests/ES6SampleBench/basic_benchmark.js with 100% similarity]
PerformanceTests/ARES-6/cli.js [moved from PerformanceTests/ES6SampleBench/cli.js with 100% similarity]
PerformanceTests/ARES-6/driver.js [moved from PerformanceTests/ES6SampleBench/driver.js with 89% similarity]
PerformanceTests/ARES-6/glue.js [moved from PerformanceTests/ES6SampleBench/glue.js with 92% similarity]
PerformanceTests/ARES-6/index.html [new file with mode: 0644]
PerformanceTests/ARES-6/results.js [moved from PerformanceTests/ES6SampleBench/results.js with 96% similarity]
PerformanceTests/ARES-6/stats.js [moved from PerformanceTests/ES6SampleBench/stats.js with 93% similarity]
PerformanceTests/ARES-6/styles.css [new file with mode: 0644]
PerformanceTests/ARES-6/swoop.svg [new file with mode: 0644]
PerformanceTests/ChangeLog
PerformanceTests/ES6SampleBench/index.html [deleted file]
PerformanceTests/ES6SampleBench/style.css [deleted file]

diff --git a/PerformanceTests/ARES-6/ARES-6.svg b/PerformanceTests/ARES-6/ARES-6.svg
new file mode 100644 (file)
index 0000000..f3a8296
--- /dev/null
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 335 74">
+    <title>ARES-6</title>
+    <path fill="#9B9B9B" d="M 12.837 13.785 C 6.052 13.785 0.59 19.247 0.59 26.032 L 0.59 73.366 L 13.416 73.366 L 13.416 54.168 L 47.179 54.168 L 47.179 73.366 L 60.171 73.366 L 60.171 26.032 C 60.171 19.247 54.627 13.785 47.841 13.785 L 12.837 13.785 Z M 13.416 41.259 L 13.416 26.694 L 47.179 26.694 L 47.179 41.259 L 13.416 41.259 Z M 124.854 26.115 C 124.854 19.412 119.309 13.868 112.524 13.868 L 65.273 13.868 L 65.273 73.366 L 78.099 73.366 L 78.099 54.251 C 78.182 54.333 78.347 54.333 78.347 54.333 C 78.347 54.002 78.265 53.837 78.099 53.837 L 95.146 53.754 L 111.613 73.366 L 124.854 73.366 L 124.854 68.98 C 120.716 64.015 116.165 58.719 111.944 53.754 L 112.524 53.754 C 119.309 53.754 124.854 48.21 124.854 41.507 L 124.854 26.115 Z M 78.099 26.694 L 111.862 26.694 L 111.862 40.845 L 78.099 40.845 L 78.099 26.694 Z"/><path fill="#E7B135" d="M 313.955 73.053 C 317.167 71.389 319.353 68.037 319.353 64.158 L 319.353 49.842 C 319.353 44.215 314.885 39.83 309.34 39.83 L 269.206 39.83 C 267.468 39.83 265.979 38.34 265.979 36.519 L 265.979 24.603 C 265.979 22.865 267.468 21.376 269.206 21.376 L 308.927 21.376 L 308.927 14.508 L 269.206 14.508 C 263.579 14.508 259.193 18.976 259.193 24.603 L 259.193 64.158 C 259.193 68.037 261.339 71.389 264.555 73.053 L 234.069 73.053 C 239.473 71.802 243.566 66.949 243.566 61.119 L 243.566 49.368 C 243.566 42.583 238.022 37.121 231.319 37.121 L 196.812 37.121 L 196.812 26.694 L 230.574 26.694 L 230.574 31.577 L 243.566 31.577 L 243.566 26.032 C 243.566 19.247 238.022 13.785 231.319 13.785 L 196.232 13.785 C 189.447 13.785 183.985 19.247 183.985 26.032 L 183.985 37.783 C 183.985 44.569 189.447 50.03 196.232 50.03 L 230.574 50.03 L 230.574 60.457 L 196.812 60.457 L 196.812 55.575 L 183.985 55.575 L 183.985 61.119 C 183.985 66.949 188.017 71.802 193.457 73.053 L 179.747 73.053 L 179.747 60.457 L 137.709 60.457 L 137.709 50.03 L 171.555 50.03 L 171.555 37.121 L 137.709 37.121 L 137.709 26.694 L 179.747 26.694 L 179.747 13.785 L 124.717 13.785 L 124.717 43.419 L 124.717 0.366 L 334.951 0.366 L 334.951 73.053 L 313.955 73.053 Z M 247.722 40.547 L 247.722 47.333 L 254.507 47.333 L 254.507 40.547 L 247.722 40.547 Z M 312.568 64.158 C 312.568 65.896 311.078 67.386 309.34 67.386 L 269.206 67.386 C 267.468 67.386 265.979 65.896 265.979 64.158 L 265.979 46.615 L 309.34 46.615 C 311.078 46.615 312.568 48.105 312.568 49.842 L 312.568 64.158 Z"/>
+</svg>
similarity index 98%
rename from PerformanceTests/ES6SampleBench/Air/README.md
rename to PerformanceTests/ARES-6/Air/README.md
index 05a9f4e..9e45b6c 100644 (file)
@@ -28,7 +28,7 @@ We only recently completed our new JavaScript compiler, called
 backend, called
 [Air](https://webkit.org/docs/b3/assembly-intermediate-representation.html), is
 very CPU-intensive and uses a combination of object-oriented and functional
-idioms in C++. Additioally, it relies heavily on high speed maps and sets. It
+idioms in C++. Additionally, it relies heavily on high speed maps and sets. It
 goes so far as to use customized map/set implementations - even more so than
 the rest of WebKit. This makes Air a great candidate for ES6 benchmarking.
 Air.js is a faithful ES6 implementation of Air. It pulls no punches: just as
similarity index 89%
rename from PerformanceTests/ES6SampleBench/driver.js
rename to PerformanceTests/ARES-6/driver.js
index 609a562..1f5424c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
 "use strict";
 
 class Driver {
-    constructor(triggerCell, triggerLink, magicCell, summaryCell, key)
+    constructor(statusCell, triggerCell, triggerLink, magicCell, summaryCell, key)
     {
         this._benchmarks = new Map();
+        this._statusCell = statusCell;
         this._triggerCell = triggerCell;
         this._triggerLink = triggerLink;
         this._magicCell = magicCell;
@@ -43,10 +44,23 @@ class Driver {
         this._benchmarks.set(benchmark, new Results(benchmark));
     }
     
+    readyTrigger() 
+    {
+        this._triggerCell.addEventListener('click', this._triggerLink);
+        this._triggerCell.classList.add('ready');
+    }
+    
+    disableTrigger() 
+    {
+        this._triggerCell.removeEventListener('click', this._triggerLink);
+        this._triggerCell.classList.remove('ready');
+    }
+    
     start(numIterations)
     {
+        this.disableTrigger();
         this._updateIterations();
-        
+
         this._summary.reset();
         for (let [benchmark, results] of this._benchmarks)
             results.reset();
@@ -119,9 +133,9 @@ class Driver {
         if (!this._benchmark) {
             if (!this._numIterations) {
                 if (isInBrowser) {
-                    this._triggerCell.innerHTML =
-                        (this._hadErrors ? "Failures encountered!" : "Success!") +
-                        ` <a href="${this._triggerLink}">Restart Benchmark</a>`;
+                    this._statusCell.innerHTML =
+                        (this._hadErrors ? "Failures encountered!" : "Restart");
+                    this.readyTrigger();
                 } else
                     print(this._hadErrors ? "Failures encountered!" : "Success! Benchmark is now finished.");
                 return;
@@ -176,6 +190,6 @@ class Driver {
     _updateIterations()
     {
         if (isInBrowser)
-            this._triggerCell.innerHTML = "Running... (" + (this._numIterations + 1) + " to go)";
+            this._statusCell.innerHTML = "Running... " + (this._numIterations + 1) + " to go";
     }
 }
similarity index 92%
rename from PerformanceTests/ES6SampleBench/glue.js
rename to PerformanceTests/ARES-6/glue.js
index ce8912b..de61092 100644 (file)
 "use strict";
 
 const driver = new Driver(
+    isInBrowser ? document.getElementById("status") : null,
     isInBrowser ? document.getElementById("trigger") : null,
-    "driver.start(10)",
+    function() {
+        driver.start(10)
+    },
     isInBrowser ? document.getElementById("magic") : null,
     isInBrowser ? document.getElementById("Geomean") : null,
     "sampleBench");
@@ -37,3 +40,4 @@ function reportResult(...args) {
 
 driver.addBenchmark(AirBenchmarkRunner);
 driver.addBenchmark(BasicBenchmarkRunner);
+driver.readyTrigger();
diff --git a/PerformanceTests/ARES-6/index.html b/PerformanceTests/ARES-6/index.html
new file mode 100644 (file)
index 0000000..f543311
--- /dev/null
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="styles.css">    
+</head>
+<body>
+    <script>
+    window.onerror = function(message, url, lineNumber)
+    {
+        document.getElementById("error").innerHTML = "ERROR: " + url + ":" + lineNumber + ": " + message;
+    }
+
+    const isInBrowser = true;
+    </script>
+    <script src="driver.js"></script>
+    <script src="results.js"></script>
+    <script src="stats.js"></script>
+    
+    <header>
+        <h1 class="logo"><img src="ARES-6.svg" title="ARES-6" alt="ARES-6"></h1>
+        <button id="trigger" class="start">
+            <span id="status">Start</span>
+        </button>
+        <div id="error" class="error"></div>
+    </header>
+
+    <main>
+    
+    <p>ARES-6 measures the execution time of JavaScript's newest features. <a href="#about">Read more details &#9658;</a></p>
+
+    <div id="about" class="flip">
+    <div class="testing">
+            
+    <div class="overall">
+        <h2>Overall</h2>
+        <div class="score">
+            <span id="Geomean">
+                <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>
+            </span>
+        </div>
+    </div>    
+    
+    <div class="tests">
+        
+        <div class="air test">
+            <div id="AirMessage" class="indicator">.</div>
+            <h2>Air</h2> 
+
+            <div class="score">
+                <label>First Iteration</label>
+                <span id="AirFirstIteration">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>
+                </span>
+            </div>
+            <div class="score">
+                <label>Worst 2%</label>
+                <span id="AirAverageWorstCase">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>
+                </span>
+            </div>
+
+            <div class="score">
+                <label>Average</label>
+                <span id="AirSteadyState">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>
+                </span>
+            </div>
+            
+        </div>
+    
+        <div class="basic test">
+            <div id="BasicMessage" class="indicator">.</div>
+            <h2>Basic</h2> 
+            
+            <div class="score">
+                <label>First Iteration</label>
+                <span id="BasicFirstIteration">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>                    
+                </span>
+            </div>
+            <div class="score">
+                <label>Worst 2%</label>
+                <span id="BasicAverageWorstCase">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>                    
+                </span>
+            </div>
+
+            <div class="score">
+                <label>Average</label>
+                <span id="BasicSteadyState">
+                    <span class="value">&#10074;&#10074;.&#10074;&#10074;</span><span class="units">ms</span>                    
+                </span>
+            </div>
+            
+        </div>
+        
+    </div>
+    </div>
+    
+    <div class="about">
+        <h2>About</h2>
+        
+        <p>ARES-6 measures the execution time of JavaScript&#8217;s newest features, including symbols, for-of, arrow functions, Map/Set/WeakMap, let/const, classes, proxies, string interpolation, destructuring, default arguments, spread, tail calls, and generators.</p>
+
+        <p>Air is an ES2015 port of the <a href="https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/">WebKit B3 JIT</a>&#8217;s <a href="https://trac.webkit.org/changeset/201783"><code>Air::allocateStack</code> phase</a>. This code is a heavy user of Map, Set, classes, spread, and for-of. The benchmark runs <code>allocateStack</code> on hot function bodies from other popular JavaScript benchmarks: <code>executeIteration</code> from Octane/Gameboy, <code>gaussianBlur</code> from Kraken, and <code>scanIdentifier</code> from Octane/Typescript. Because metacircularity, the benchmark also runs <code>allocateStack</code> on the largest hot function in Air.</p>
+
+        <p>Basic is an <a href="https://trac.webkit.org/changeset/202446">ES2015 implementation of the ECMA-55 BASIC standard</a>. BASIC was an interactive language from the start, so our implementation uses generator functions for the entire interpreter. When the BASIC program says <code>INPUT</code>, our interpreter says <code>yield</code>. This allows users of the interpreter to easily integrate it into a runloop. Basic also uses classes, Map, and WeakMap. The benchmark runs a handful of simple programs, the most complex of which finds prime numbers.</p>
+
+        <p>We like making JavaScript run faster, but we didn&#8217;t have any ES2015 code to optimize. ARES-6 is a collection of sample ES2015 code written by the WebKit JavaScript team, which we used to bootstrap our ES2015 optimization efforts.</p>
+        
+        <p><a href="#">&#9700; Return to Testing</a></p>
+    </div>
+
+    </div>
+    </main>
+    
+    <iframe id="magic" frameBorder=0></iframe>
+    <script src="air_benchmark.js"></script>
+    <script src="basic_benchmark.js"></script>
+    <script src="glue.js"></script>
+        
+</body>
+</html>
\ No newline at end of file
similarity index 96%
rename from PerformanceTests/ES6SampleBench/results.js
rename to PerformanceTests/ARES-6/results.js
index 387e60b..cd27f52 100644 (file)
@@ -43,13 +43,13 @@ class Results {
     reportRunning()
     {
         if (isInBrowser)
-            this._benchmark.cells.message.innerHTML = "Running...";
+            this._benchmark.cells.message.classList.add('running');
     }
     
     reportDone()
     {
         if (isInBrowser)
-            this._benchmark.cells.message.innerHTML = "";
+            this._benchmark.cells.message.classList.remove('running');
     }
     
     reportResult(times)
similarity index 93%
rename from PerformanceTests/ES6SampleBench/stats.js
rename to PerformanceTests/ARES-6/stats.js
index 15ae0f4..687dc3c 100644 (file)
@@ -91,15 +91,15 @@ class Stats {
         let result = this.result;
         
         if (!result.n)
-            return "...";
+            return `<span class="value">\&#10074;\&#10074;.\&#10074;\&#10074;</span><span class="units">ms</span>`;
         
         if (result.mean != result.mean)
             return "ERROR";
         
         if ("interval" in result)
-            return `${this._prefix}${result.mean.toFixed(2)} ms +- ${result.interval.toFixed(2)} ms`;
+            return `<span class="value">${this._prefix}${result.mean.toFixed(2)}</span><span class="margin"> &plusmn;${result.interval.toFixed(2)}</span><span class="units">ms</span>`;
 
-        return `${this._prefix}${result.mean.toFixed(2)} ms`;
+        return `<span class="value">${this._prefix}${result.mean.toFixed(2)}</span><span class="units">ms</span>`;
     }
     
     _update()
diff --git a/PerformanceTests/ARES-6/styles.css b/PerformanceTests/ARES-6/styles.css
new file mode 100644 (file)
index 0000000..323b828
--- /dev/null
@@ -0,0 +1,245 @@
+html {
+    font-family: "Helvetica Neue","Helvetica",sans-serif;
+    font-size: 62.5%;
+    font-synthesis: none;
+}
+
+body {
+    margin: 0;
+    background: #2C2C3C url('swoop.svg') no-repeat;
+    background-size: 50vw;
+    width: 100%;
+    font-size: 1.6rem;
+    font-weight: 400;
+    line-height: 1.4;
+    color: #9B9B9B;
+    box-sizing: border-box;
+    padding: 6vw 9vw;
+    perspective: 1000px;
+}
+
+header,
+main,
+footer {
+    box-sizing: border-box;
+    max-width: 780px;
+    margin: 0 auto;
+}
+
+p a {
+    color: #E7B135;
+    text-decoration: none;
+}
+
+p a:hover {
+    text-decoration: underline;
+}
+
+.flip {
+       transition: 0.6s;
+       transform-style: preserve-3d;
+
+       position: relative;
+    display: flex;
+}
+
+header {
+    display: flex;
+    flex-wrap: wrap;
+}
+
+h2,
+.indicator {
+    font-size: 5rem;
+    color: #9B9B9B;
+    font-weight: 500;
+    line-height: 1.25;
+    margin: 0;
+}
+
+p {
+    color: #ffffff;
+    font-size: 1.8rem;
+    margin-bottom: 3rem;
+}
+
+.about h2 {
+    margin-top: 3rem;
+}
+
+.logo {
+    width: 33rem;
+    height: auto;
+    white-space: nowrap;
+    overflow: hidden;
+    margin: 1px 1rem 1px 0;
+    font-size: 0;
+}
+
+.start {
+    flex: 1;
+    display: block;
+    position: relative;
+    background-color: transparent;
+    border: 5px solid #E7B135;
+    font-size: 2.4rem;
+    line-height: 5.4rem;
+    font-weight: 600;
+    text-transform: uppercase;
+    color: #E7B135;
+}
+
+.start.ready {
+    transition: background 0.2s ease-out, color 0.2s ease-out;
+    cursor: pointer;
+}
+
+.start.ready:hover {
+    background-color: #E7B135;
+    color: #2C2C3C;
+}
+
+.start:after {
+    content: '';
+    display: block;  
+    position: absolute;
+    right: 0;
+    top: 0;
+    width: 0;
+    height: 0;
+    border-top: 3rem solid #E7B135;
+    border-right: 0 solid transparent;
+    border-bottom: 0 solid transparent;
+    border-left: 3rem solid transparent;
+}
+
+.start.ready .testrun {
+    opacity: 0;
+}
+
+.tests {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-around;
+}
+
+.test {
+    position: relative;
+    flex: 1;
+    border-bottom: 1px solid #979797;
+    margin-right: 1rem;
+    margin-bottom: 3rem;
+}
+
+.overall h2,
+.test h2 {
+    border-bottom: 1px solid #979797;
+}
+
+.test .indicator {
+    color: #E7B135;
+    opacity: 0;
+    
+    position: absolute;
+    left: -1.2rem;
+}
+
+.test .indicator.running {
+    animation: test-running 1s;
+}
+
+@keyframes test-running {
+  0%   { opacity: 0; }
+  100%  { opacity: 1; }
+}
+
+.score {
+    color: #E7B135;
+    margin: 1rem 0;
+    position: relative;
+}
+
+.score label {
+    text-transform: uppercase;
+    letter-spacing: 0.02rem;
+    font-weight: 500;
+    display: block;
+    line-height: 1;
+}
+
+.score .value {
+    font-size: 6.4rem;
+    font-weight: 600;
+
+    line-height: 1;
+    white-space: nowrap;
+}
+
+.score .units {
+    font-size: 4rem;
+    font-weight: 600;
+    
+}
+
+.score .margin {
+    color: #9B9B9B;
+    position: absolute;
+    font-size: 2rem;
+    top: 2rem;
+    margin-left: 0.2rem;
+}
+
+.overall {
+    margin-bottom: 3rem;
+}
+
+.overall .score  {
+    color: #ffffff;
+}
+
+.overall .margin  {
+    top: 0.5rem;
+}
+
+.testing, .about {
+    background-color: #2C2C3C;
+       -webkit-backface-visibility: hidden;
+
+       position: absolute;
+       top: 0;
+       left: 0;
+}
+
+.testing {
+    width: 100%;
+       z-index: 2;
+       transform: rotateY(0deg);
+    padding-bottom: 10rem;
+}
+
+.about {
+       transform: rotateY(180deg);
+}
+
+#about:target {
+       transform: rotateY(180deg);
+    
+}
+
+@media only screen and (max-width: 784px) {
+    
+    .logo {
+        width: 100%;
+        margin-bottom: 1rem;
+        margin: 0 0 1rem 0;
+    }
+    .start {
+        width: 100%;
+    }
+    
+    .test {
+        flex: none;
+        
+        width: 100%;
+    }
+}
\ No newline at end of file
diff --git a/PerformanceTests/ARES-6/swoop.svg b/PerformanceTests/ARES-6/swoop.svg
new file mode 100644 (file)
index 0000000..3ad8ada
--- /dev/null
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="614" height="612" viewBox="0 0 614 612">
+    <polygon fill="#9B9B9B" points="101.822 54.713 0 611.475 0 249.855 97.38 43.051 558.229 0 613.901 0"/><polygon fill="#E7B135" points="90.252 25.088 0 65.877 0 36.104 0 0 90.252 0 432.078 0"/>
+</svg>
index f259eca..640542d 100644 (file)
@@ -1,3 +1,125 @@
+2017-02-05  Filip Pizlo  <fpizlo@apple.com>
+
+        Change ES6SampleBench into ARES-6
+        https://bugs.webkit.org/show_bug.cgi?id=167863
+
+        Rubber stamped by Saam Barati.
+        
+        This imports changes that Jonathan Davis (jond@apple.com) made to ES6SampleBench to make it look
+        super awesome. Its now called ARES-6.
+
+        * ARES-6: Copied from PerformanceTests/ES6SampleBench.
+        * ARES-6/ARES-6.svg: Added.
+        * ARES-6/driver.js:
+        (Driver):
+        (Driver.prototype.readyTrigger):
+        (Driver.prototype.disableTrigger):
+        (Driver.prototype.start):
+        (Driver.prototype._updateIterations):
+        * ARES-6/glue.js:
+        * ARES-6/index.html:
+        * ARES-6/results.js:
+        (Results.prototype.reportRunning):
+        (Results.prototype.reportDone):
+        * ARES-6/stats.js:
+        (Stats.prototype.toString.return.span):
+        (Stats.prototype.toString.span.span):
+        (Stats.prototype.toString): Deleted.
+        * ARES-6/style.css: Removed.
+        * ARES-6/styles.css: Added.
+        (html):
+        (body):
+        (header,):
+        (p a):
+        (p a:hover):
+        (.flip):
+        (header):
+        (h2,):
+        (p):
+        (.about h2):
+        (.logo):
+        (.start):
+        (.start.ready):
+        (.start.ready:hover):
+        (.start:after):
+        (.start.ready .testrun):
+        (.tests):
+        (.test):
+        (.overall h2,):
+        (.test .indicator):
+        (.test .indicator.running):
+        (@keyframes test-running):
+        (100%):
+        (.score):
+        (.score label):
+        (.score .value):
+        (.score .units):
+        (.score .margin):
+        (.overall):
+        (.overall .score):
+        (.overall .margin):
+        (.testing, .about):
+        (.testing):
+        (.about):
+        (#about:target):
+        (@media only screen and (max-width: 784px)):
+        * ARES-6/swoop.svg: Added.
+        * ES6SampleBench: Removed.
+        * ES6SampleBench/Air: Removed.
+        * ES6SampleBench/Air/README.md: Removed.
+        * ES6SampleBench/Air/airjs-tests.yaml: Removed.
+        * ES6SampleBench/Air/all.js: Removed.
+        * ES6SampleBench/Air/allocate_stack.js: Removed.
+        * ES6SampleBench/Air/arg.js: Removed.
+        * ES6SampleBench/Air/basic_block.js: Removed.
+        * ES6SampleBench/Air/benchmark.js: Removed.
+        * ES6SampleBench/Air/code.js: Removed.
+        * ES6SampleBench/Air/custom.js: Removed.
+        * ES6SampleBench/Air/frequented_block.js: Removed.
+        * ES6SampleBench/Air/insertion_set.js: Removed.
+        * ES6SampleBench/Air/inst.js: Removed.
+        * ES6SampleBench/Air/liveness.js: Removed.
+        * ES6SampleBench/Air/make_dist.sh: Removed.
+        * ES6SampleBench/Air/opcode.js: Removed.
+        * ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
+        * ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
+        * ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
+        * ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
+        * ES6SampleBench/Air/reg.js: Removed.
+        * ES6SampleBench/Air/stack_slot.js: Removed.
+        * ES6SampleBench/Air/stress-test.js: Removed.
+        * ES6SampleBench/Air/strip-hash.rb: Removed.
+        * ES6SampleBench/Air/symbols.js: Removed.
+        * ES6SampleBench/Air/test.html: Removed.
+        * ES6SampleBench/Air/test.js: Removed.
+        * ES6SampleBench/Air/tmp.js: Removed.
+        * ES6SampleBench/Air/tmp_base.js: Removed.
+        * ES6SampleBench/Air/util.js: Removed.
+        * ES6SampleBench/Basic: Removed.
+        * ES6SampleBench/Basic/ast.js: Removed.
+        * ES6SampleBench/Basic/basic-tests.yaml: Removed.
+        * ES6SampleBench/Basic/basic.js: Removed.
+        * ES6SampleBench/Basic/benchmark.js: Removed.
+        * ES6SampleBench/Basic/caseless_map.js: Removed.
+        * ES6SampleBench/Basic/lexer.js: Removed.
+        * ES6SampleBench/Basic/number.js: Removed.
+        * ES6SampleBench/Basic/parser.js: Removed.
+        * ES6SampleBench/Basic/random.js: Removed.
+        * ES6SampleBench/Basic/state.js: Removed.
+        * ES6SampleBench/Basic/stress-test.js: Removed.
+        * ES6SampleBench/Basic/test.html: Removed.
+        * ES6SampleBench/Basic/test.js: Removed.
+        * ES6SampleBench/Basic/util.js: Removed.
+        * ES6SampleBench/air_benchmark.js: Removed.
+        * ES6SampleBench/basic_benchmark.js: Removed.
+        * ES6SampleBench/cli.js: Removed.
+        * ES6SampleBench/driver.js: Removed.
+        * ES6SampleBench/glue.js: Removed.
+        * ES6SampleBench/index.html: Removed.
+        * ES6SampleBench/results.js: Removed.
+        * ES6SampleBench/stats.js: Removed.
+        * ES6SampleBench/style.css: Removed.
+
 2017-02-05  Zalan Bujtas  <zalan@apple.com>
 
         Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
diff --git a/PerformanceTests/ES6SampleBench/index.html b/PerformanceTests/ES6SampleBench/index.html
deleted file mode 100644 (file)
index 5860e02..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<html>
-<head>
-<title>ES6 Sample Bench</title>
-<link rel="stylesheet" type="text/css" href="style.css">
-</head>
-<script>
-window.onerror = function(message, url, lineNumber)
-{
-    document.getElementById("trigger").innerHTML = "ERROR: " + url + ":" + lineNumber + ": " + message;
-}
-
-const isInBrowser = true;
-</script>
-<script src="driver.js"></script>
-<script src="results.js"></script>
-<script src="stats.js"></script>
-<body>
-<div id="contents">
-<h1>ES6 Sample Bench</h1>
-<p>This is a benchmark suite that consists of ES6 sample code written by the
-<a href="http://www.webkit.org/">WebKit</a> team.  All results are in milliseconds with 95%
-confidence intervals.  Lower is better.</p>
-<p id="trigger"><a href="javascript:driver.start(10)">Start Benchmark</a></p>
-<p><b>Geometric Mean Result: <span id="Geomean">...</span></b></p>
-<table cellspacing=0 cellpadding=0 border=0>
-  <tr>
-    <th width=180>Benchmark</th>
-    <th width=180>First Iteration</th>
-    <th width=180>Worst 2%</th>
-    <th width=180>Steady State</th>
-  <tr>
-    <th>Air</th>
-    <td id="AirFirstIteration">...</td>
-    <td id="AirAverageWorstCase">...</td>
-    <td id="AirSteadyState">...</td>
-    <td id="AirMessage"></td>
-  </tr>
-  <tr>
-    <th>Basic</th>
-    <td id="BasicFirstIteration">...</td>
-    <td id="BasicAverageWorstCase">...</td>
-    <td id="BasicSteadyState">...</td>
-    <td id="BasicMessage"></td>
-  </tr>
-</table>
-</div>
-<iframe id="magic" frameBorder=0></iframe>
-<script src="air_benchmark.js"></script>
-<script src="basic_benchmark.js"></script>
-<script src="glue.js"></script>
-</body>
-</html>
diff --git a/PerformanceTests/ES6SampleBench/style.css b/PerformanceTests/ES6SampleBench/style.css
deleted file mode 100644 (file)
index 3ca3059..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-body {
-    background: #fff;
-    color: #000;
-    margin: 10px;
-    padding: 0;
-}
-body, th, tr {
-    font: normal 13px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif;
-}
-h1, h2, h3, h4 {
-    font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif;
-    font-weight: bold;
-    letter-spacing: -0.018em;
-    page-break-after: avoid;
-}
-h1 { font-size: 20px; text-indent: -10px }
-h2 { font-size: 17px; text-indent: -10px }
-h3 { font-size: 15px; text-indent: -10px }
-hr { border: none;  border-top: 1px solid #ccb; margin: 2em 0 }
-address { font-style: normal }
-img { border: none }
-
-.underline { text-decoration: underline }
-ol.loweralpha { list-style-type: lower-alpha }
-ol.upperalpha { list-style-type: upper-alpha }
-ol.lowerroman { list-style-type: lower-roman }
-ol.upperroman { list-style-type: upper-roman }
-ol.arabic { list-style-type: decimal }
-
-.banner-link:link, .banner-link:visited {
-    text-decoration: none;
-    color: #b00;
-    border-bottom: 0px;
-}
-
-/* Link styles */
-:link, :visited {
-    text-decoration: none;
-    color: #b00;
-    border-bottom: 1px dotted #bbb;
-}
-h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited,
-h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited {
-    color: inherit;
-}
-
-/* Heading anchors */
-.anchor:link, .anchor:visited {
-    border: none;
-    color: #d7d7d7;
-    font-size: .8em;
-    vertical-align: text-top;
-}
-* > .anchor:link, * > .anchor:visited {
-    visibility: hidden;
-}
-h1:hover .anchor, h2:hover .anchor, h3:hover .anchor,
-h4:hover .anchor, h5:hover .anchor, h6:hover .anchor,
-span:hover .anchor {
-    visibility: visible;
-}
-
-a.missing:link, a.missing:visited, a.missing, span.missing,
-a.forbidden, span.forbidden { color: #998 }
-a.missing:hover { color: #000 }
-a.closed:link, a.closed:visited, span.closed { text-decoration: line-through }
-
-pre {
-    background: #f7f7f7;
-    border: 1px solid #d7d7d7;
-    margin: 1em 1.75em;
-    padding: .25em;
-    overflow: auto;
-}
-
-div.code {
-    background: #f7f7f7;
-    border: 1px solid #d7d7d7;
-    margin: 1em 1.75em;
-    padding: .25em;
-    overflow: auto
-}
-
-div.code pre { margin: 0; }
-
-dt {
-    font-weight: bold;
-}
-dd {
-    padding: 0 0 0.8em 0;
-}
-dd:last-child {
-    padding: 0 0 0 0;
-}
-
-/** Logo **/
-.site-logo {
-    font-size: 3rem;
-    line-height: 3rem;
-    font-weight: 200;
-    display: inline-block;
-    background: url('../../wp-content/themes/webkit/images/webkit.svg') no-repeat;
-    padding-left: 7rem;
-    color: #333;
-}
-
-.site-logo .tagline {
-    display: block;
-    font-size: 1.2rem;
-    line-height: 2rem;
-    letter-spacing: -0.05rem;
-    color: #666;
-}
-
-table {
-    padding: 0 0 0 0;
-}
-
-#contents {
-    font-size: 90%;
-    padding: 1em 2em 2em 2em
-}
-
-p {
-    margin: 0 0 1em 0;
-}
-
-p:last-child {
-    margin: 0 0 0 0;
-}
-
-th {
-    font-size: 90%;
-    font-weight: bold;   
-    padding: 0 0 1em 0;
-}
-
-td {
-    font-size: 90%;
-    text-align: center;
-    padding: 0 0 1em 0;
-}