Speedometer: Update the jQuery implementation to a more recent library version
[WebKit-https.git] / PerformanceTests / ChangeLog
1 2017-05-11  Addy Osmani  <addyosmani@gmail.com>
2
3         Speedometer: Update the jQuery implementation to a more recent library version
4         https://bugs.webkit.org/show_bug.cgi?id=171308
5
6         Reviewed by Ryosuke Niwa.
7
8         Updates the jQuery implementation of TodoMVC to a more recent version
9
10         * Speedometer/resources/todomvc/architecture-examples/jquery/bower.json: Removed.
11         * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Removed.
12         * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Removed.
13         * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Removed.
14         * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Removed.
15         * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Removed.
16         * Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
17         * Speedometer/resources/todomvc/architecture-examples/jquery/js/app.js:
18         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/handlebars/dist/handlebars.js: Added.
19         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/jquery/dist/jquery.js: Added.
20         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/index.css: Added.
21         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/package.json: Added.
22         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/readme.md: Added.
23         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.css: Added.
24         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.js: Added.
25         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/package.json: Added.
26         * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/readme.md: Added.
27         * Speedometer/resources/todomvc/architecture-examples/jquery/package.json: Added.
28         * Speedometer/resources/todomvc/architecture-examples/jquery/readme.md:
29
30 2017-05-11  Addy Osmani  <addyosmani@gmail.com>
31
32         Speedometer: Update the Flight.js implementation to a more recent library version
33         https://bugs.webkit.org/show_bug.cgi?id=171471
34
35         Reviewed by Ryosuke Niwa.
36
37         Speedometer: Update FlightJS TodoMVC implementation
38
39         * Speedometer/resources/todomvc/dependency-examples/flight/.gitignore: Removed.
40         * Speedometer/resources/todomvc/dependency-examples/flight/.jshintrc: Removed.
41         * Speedometer/resources/todomvc/dependency-examples/flight/app/js/main.js: Removed.
42         * Speedometer/resources/todomvc/dependency-examples/flight/app/js/store.js: Removed.
43         * Speedometer/resources/todomvc/dependency-examples/flight/bower.json: Removed.
44         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Removed.
45         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Removed.
46         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Removed.
47         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Removed.
48         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Removed.
49         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Removed.
50         * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Removed.
51         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/stats.js.
52         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/todos.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/todos.js.
53         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js: Added.
54         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/page/app.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/app.js.
55         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/store.js: Added.
56         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/main_selector.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js.
57         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/new_item.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js.
58         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js.
59         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/todo_list.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js.
60         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/toggle_all.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js.
61         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/with_filters.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js.
62         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/utils.js.
63         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/stats.html.
64         * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/todo.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/todo.html.
65         * Speedometer/resources/todomvc/dependency-examples/flight/flight/index.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/index.html.
66         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/README.md: Added.
67         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js.
68         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.min.js: Added.
69         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/package.json: Added.
70         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/LICENSE: Added.
71         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js.
72         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.min.js: Added.
73         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.js: Added.
74         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.min.js: Added.
75         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/LICENSE: Added.
76         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/index.js: Added.
77         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/advice.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js.
78         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js.
79         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/component.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js.
80         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/compose.js: Added.
81         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/debug.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js.
82         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/logger.js: Added.
83         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/registry.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js.
84         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js.
85         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/README.md: Added.
86         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.js: Added.
87         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.min.js: Added.
88         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/package.json: Added.
89         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/memorystorage/memorystorage.js: Added.
90         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/LICENSE: Added.
91         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/README.md: Added.
92         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/bower.json: Added.
93         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/package.json: Added.
94         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/text.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js.
95         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/README.md: Added.
96         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/package.json: Added.
97         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js.
98         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css: Added.
99         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json: Added.
100         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/readme.md: Added.
101         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.css: Added.
102         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js.
103         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/package.json: Added.
104         * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/readme.md: Added.
105         * Speedometer/resources/todomvc/dependency-examples/flight/flight/package.json: Added.
106         * Speedometer/resources/todomvc/dependency-examples/flight/karma.conf.js: Removed.
107         * Speedometer/resources/todomvc/dependency-examples/flight/package.json: Removed.
108         * Speedometer/resources/todomvc/dependency-examples/flight/readme.md: Removed.
109         * Speedometer/resources/todomvc/dependency-examples/flight/test/.jshintrc: Removed.
110         * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Removed.
111         * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Removed.
112         * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Removed.
113         * Speedometer/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Removed.
114         * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Removed.
115         * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Removed.
116         * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Removed.
117         * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Removed.
118         * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Removed.
119         * Speedometer/resources/todomvc/dependency-examples/flight/test/test-main.js: Removed.
120
121 2017-05-11  Addy Osmani  <addyosmani@gmail.com>
122
123         Speedometer: Update the AngularJS implementation to a more recent library version
124         https://bugs.webkit.org/show_bug.cgi?id=171307
125
126         Reviewed by Ryosuke Niwa.
127
128         Updates the AngularJS implementation of TodoMVC to 1.4.x
129
130         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower.json: Removed.
131         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
132         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
133         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
134         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
135         * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
136         * Speedometer/resources/todomvc/architecture-examples/angularjs/index.html:
137         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js:
138         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js:
139         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
140         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js:
141         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js:
142         * Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js:
143         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js: Added.
144         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js: Added.
145         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js: Added.
146         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css: Added.
147         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json: Added.
148         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md: Added.
149         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css: Added.
150         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js: Added.
151         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json: Added.
152         * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md: Added.
153         * Speedometer/resources/todomvc/architecture-examples/angularjs/package.json: Added.
154         * Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
155         * Speedometer/resources/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
156         * Speedometer/resources/todomvc/architecture-examples/angularjs/test/package.json: Removed.
157         * Speedometer/resources/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
158         * Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
159         * Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
160         * Speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html: Added.
161
162 2017-05-09  Jon Davis  <jond@apple.com>
163
164         [ARES6] Improved the running test indicator
165         https://bugs.webkit.org/show_bug.cgi?id=171400
166         
167         Running tests show a triangle before the test title and the titles are white.
168
169         Reviewed by Joseph Pecoraro.
170
171         * ARES-6/index.html:
172         * ARES-6/styles.css:
173         (.test .running):
174         (.test .running:before):
175         (.test .indicator): Deleted.
176         (.test .indicator.running): Deleted.
177         (@keyframes test-running): Deleted.
178
179 2017-05-04  Andy VanWagoner  <thetalecrafter@gmail.com>
180
181         [INTL] Add PerformanceTests for Intl objects
182         https://bugs.webkit.org/show_bug.cgi?id=171695
183
184         Reviewed by Benjamin Poulain.
185
186         * Intl/collator-compare-all-options.html: Added.
187         * Intl/collator-compare-default.html: Added.
188         * Intl/collator-create-all-options.html: Added.
189         * Intl/collator-create-default.html: Added.
190         * Intl/datetimeformat-create-all-options.html: Added.
191         * Intl/datetimeformat-create-default.html: Added.
192         * Intl/datetimeformat-format-all-options.html: Added.
193         * Intl/datetimeformat-format-default.html: Added.
194         * Intl/numberformat-create-all-options.html: Added.
195         * Intl/numberformat-create-default.html: Added.
196         * Intl/numberformat-format-all-options.html: Added.
197         * Intl/numberformat-format-default.html: Added.
198
199 2017-04-27  Michael Saboff  <msaboff@apple.com>
200
201         Add back tests inadvertently deleted in r205032.
202
203         Rubber stamped by Geoffrey Garen.
204
205         * MallocBench/run-malloc-benchmarks:
206
207 2017-04-25  Myles C. Maxfield  <mmaxfield@apple.com>
208
209         Add performance test for FontCache::systemFallbackForCharacters()
210         https://bugs.webkit.org/show_bug.cgi?id=170842
211
212         Reviewed by Tim Horton.
213
214         * Layout/word-joiner.html: Added.
215
216 2017-04-24  Saam Barati  <sbarati@apple.com>
217
218         Add ML to ARES6
219         https://bugs.webkit.org/show_bug.cgi?id=171206
220
221         Rubber stamped by Filip Pizlo.
222
223         This patch adds a new test to ARES6 called ML. ML is an implementation of
224         a feedforward neural network: https://github.com/mljs/feedforward-neural-networks.
225         It makes heavy use of classes, and does non-trivial matrix math using the
226         ml-matrix library: https://github.com/mljs/matrix
227
228         * ARES-6/about.html:
229         * ARES-6/cli.js:
230         * ARES-6/glue.js:
231         * ARES-6/index.html:
232         * ARES-6/ml: Added.
233         * ARES-6/ml/benchmark.js: Added.
234         * ARES-6/ml/index.js: Added.
235         * ARES-6/ml_benchmark.js: Added.
236
237 2017-04-21  Zalan Bujtas  <zalan@apple.com>
238
239         Simple line layout: Add performance test to measure mid-word line breaking with long text.
240         https://bugs.webkit.org/show_bug.cgi?id=171136
241
242         Reviewed by Ryosuke Niwa.
243
244         * Layout/simple-line-layout-word-break-long-text.html: Added.
245
246 2017-04-17  Ryan Haddad  <ryanhaddad@apple.com>
247
248         Unreviewed, rolling out r215366.
249
250         This test is failing on performance bots.
251
252         Reverted changeset:
253
254         "Add performance test for asking the platform for a font for
255         U+2060 WORD JOINER"
256         https://bugs.webkit.org/show_bug.cgi?id=170842
257         http://trac.webkit.org/changeset/215366
258
259 2017-04-14  Myles C. Maxfield  <mmaxfield@apple.com>
260
261         Add performance test for asking the platform for a font for U+2060 WORD JOINER
262         https://bugs.webkit.org/show_bug.cgi?id=170842
263
264         Reviewed by Tim Horton.
265
266         * Layout/word-joiner.html: Added.
267
268 2017-04-03  Saam Barati  <sbarati@apple.com>
269
270         Add a new test to ARES6
271         https://bugs.webkit.org/show_bug.cgi?id=170077
272
273         Rubber stamped by Filip Pizlo.
274
275         This patch adds a new test to ARES6. The test is called Babylon. Babylon is
276         the JavaScript parser that is part of the Babel transpiler. The test runs
277         the parser on 4 different JS scripts.
278
279         * ARES-6/Babylon: Added.
280         * ARES-6/Babylon/AUTHORS: Added.
281         * ARES-6/Babylon/air-blob.js: Added.
282         (Reg):
283         (Reg.fromReg):
284         (Reg.prototype.get index):
285         (Reg.prototype.get type):
286         (Reg.prototype.get name):
287         (Reg.prototype.get isCalleeSave):
288         (Reg.prototype.get isReg):
289         (Reg.prototype.hash):
290         (Reg.prototype.toString):
291         (Reg.extract):
292         (Reg.forEachFast):
293         (Reg.forEach):
294         (newGPR):
295         (Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
296         * ARES-6/Babylon/babylon-blob.js: Added.
297         (export.default.Parser):
298         (export.default.Parser.prototype.isReservedWord):
299         (export.default.Parser.prototype.hasPlugin):
300         (export.default.Parser.prototype.extend):
301         (export.default.Parser.prototype.loadPlugins):
302         (export.default.Parser.prototype.parse):
303         * ARES-6/Babylon/basic-blob.js: Added.
304         (Basic.NumberApply):
305         (Basic.Variable):
306         (Basic.Const):
307         (Basic.NumberPow):
308         (Basic.NumberMul):
309         (Basic.NumberDiv):
310         (Basic.NumberNeg):
311         (Basic.NumberAdd):
312         (Basic.NumberSub):
313         (Basic.StringVar):
314         (Basic.Equals):
315         (Basic.NotEquals):
316         (Basic.LessThan):
317         (Basic.GreaterThan):
318         (Basic.LessEqual):
319         (Basic.GreaterEqual):
320         (Basic.GoTo):
321         (Basic.GoSub):
322         (Basic.Def):
323         (Basic.Let):
324         (Basic.If):
325         (Basic.Return):
326         (Basic.Stop):
327         (Basic.On):
328         (sideState.shouldStop):
329         (Basic.For):
330         (Basic.Next):
331         (Basic.Print):
332         (Basic.Input):
333         (Basic.Read):
334         (Basic.Restore):
335         (Basic.Dim):
336         (Basic.Randomize):
337         (Basic.End):
338         (Basic.Program):
339         * ARES-6/Babylon/benchmark.js: Added.
340         (this.performance.performance.now.currentTime):
341         (else.this.preciseTime.currentTime):
342         (else.currentTime):
343         (BabylonBenchmark.appendSource):
344         (BabylonBenchmark):
345         (BabylonBenchmark.prototype.runIteration.parse):
346         (BabylonBenchmark.prototype.runIteration.parseExpression):
347         (BabylonBenchmark.prototype.runIteration):
348         (runBenchmark):
349         * ARES-6/Babylon/index.js: Added.
350         (isIdentifierStart):
351         (isIdentifierChar):
352         (isNewLine):
353         (Position):
354         (SourceLocation):
355         (getLineInfo):
356         (TokenType):
357         (KeywordTokenType):
358         (BinopTokenType):
359         (TokContext):
360         (tt.parenR.updateContext.tt.braceR.updateContext):
361         (tt.name.updateContext):
362         (tt.braceL.updateContext):
363         (tt.dollarBraceL.updateContext):
364         (tt.parenL.updateContext):
365         (tt.incDec.updateContext):
366         (tt._function.updateContext):
367         (tt.backQuote.updateContext):
368         (State.prototype.init):
369         (State.prototype.curPosition):
370         (State.prototype.clone):
371         (State):
372         (Token):
373         (codePointToString):
374         (Tokenizer):
375         (Tokenizer.prototype.next):
376         (Tokenizer.prototype.eat):
377         (Tokenizer.prototype.match):
378         (Tokenizer.prototype.isKeyword):
379         (Tokenizer.prototype.lookahead):
380         (Tokenizer.prototype.setStrict):
381         (Tokenizer.prototype.curContext):
382         (Tokenizer.prototype.nextToken):
383         (Tokenizer.prototype.readToken):
384         (Tokenizer.prototype.fullCharCodeAtPos):
385         (Tokenizer.prototype.pushComment):
386         (Tokenizer.prototype.skipBlockComment):
387         (Tokenizer.prototype.skipLineComment):
388         (Tokenizer.prototype.skipSpace):
389         (Tokenizer.prototype.finishToken):
390         (Tokenizer.prototype.readToken_dot):
391         (Tokenizer.prototype.readToken_slash):
392         (Tokenizer.prototype.readToken_mult_modulo):
393         (Tokenizer.prototype.readToken_pipe_amp):
394         (Tokenizer.prototype.readToken_caret):
395         (Tokenizer.prototype.readToken_plus_min):
396         (Tokenizer.prototype.readToken_lt_gt):
397         (Tokenizer.prototype.readToken_eq_excl):
398         (Tokenizer.prototype.getTokenFromCode):
399         (Tokenizer.prototype.finishOp):
400         (Tokenizer.prototype.readRegexp):
401         (Tokenizer.prototype.readInt):
402         (Tokenizer.prototype.readRadixNumber):
403         (Tokenizer.prototype.readNumber):
404         (Tokenizer.prototype.readCodePoint):
405         (Tokenizer.prototype.readString):
406         (Tokenizer.prototype.readTmplToken):
407         (Tokenizer.prototype.readEscapedChar):
408         (Tokenizer.prototype.readHexChar):
409         (Tokenizer.prototype.readWord1):
410         (Tokenizer.prototype.readWord):
411         (Tokenizer.prototype.braceIsBlock):
412         (Tokenizer.prototype.updateContext):
413         (getOptions):
414         (prototype.isReservedWord):
415         (prototype.hasPlugin):
416         (prototype.extend):
417         (prototype.loadPlugins):
418         (prototype.parse):
419         (last):
420         (pp.addComment):
421         (pp.processComment):
422         (pp.checkPropClash):
423         (pp.getExpression):
424         (pp.parseExpression):
425         (pp.parseMaybeAssign):
426         (pos.set i):
427         * ARES-6/Babylon/inspector-blob.js: Added.
428         (WebInspector.ScriptSyntaxTree):
429         (WebInspector.ScriptSyntaxTree.prototype.get parsedSuccessfully):
430         (WebInspector.ScriptSyntaxTree.prototype.forEachNode):
431         (WebInspector.ScriptSyntaxTree.prototype.filter):
432         (WebInspector.ScriptSyntaxTree.prototype.containersOfOffset):
433         (WebInspector.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange):
434         (WebInspector.ScriptSyntaxTree.prototype.filterByRange):
435         (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement.removeFunctionsFilter):
436         (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
437         (WebInspector.ScriptSyntaxTree.functionReturnDivot):
438         (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
439         (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
440         (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
441         (WebInspector.ScriptSyntaxTree.prototype._defaultParserState):
442         (WebInspector.ScriptSyntaxTree.prototype._recurse):
443         (WebInspector.ScriptSyntaxTree.prototype._recurseArray):
444         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
445         * ARES-6/about.html:
446         * ARES-6/babylon_benchmark.js: Added.
447         * ARES-6/cli.js:
448         * ARES-6/glue.js:
449         * ARES-6/index.html:
450         * ARES-6/results.js:
451         (Results.prototype.reportResult):
452         (Results.prototype.reportResult.averageAbovePercentile): Deleted.
453         * ARES-6/styles.css:
454         (.test):
455         (@media only screen and (max-width: 784px)):
456
457 2017-03-29  Zalan Bujtas <zalan@apple.com>
458
459         [Arabic text] Add whitespace preserve/word wrap performance test.
460         https://bugs.webkit.org/show_bug.cgi?id=170243
461
462         Reviewed by Simon Fraser.
463
464         * Layout/ArabicLineLayout-pre-and-wrap.html: Added.
465
466 2017-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>
467
468         [JSC] Add helpers to run Six Speed to run-jsc-benchmarks
469         https://bugs.webkit.org/show_bug.cgi?id=169351
470
471         Reviewed by Saam Barati.
472
473         * SixSpeed/wrappers/wrapper.js: Added.
474         (assertEqual):
475         (test):
476         (jscRun):
477
478 2017-03-08  Jon Davis  <jond@apple.com>
479
480         Fixed ARES-6 animations for other browsers
481
482         Rubber stamped by Saam Barati.
483
484         * ARES-6/styles.css:
485         (.swoop):
486         (.logo):
487
488 2017-03-07  Filip Pizlo  <fpizlo@apple.com>
489
490         Revise the ARES-6 explainer text
491         https://bugs.webkit.org/show_bug.cgi?id=169287
492
493         Reviewed by Saam Barati.
494         
495         Just did some copy-editing.
496
497         * ARES-6/about.html:
498
499 2017-03-06  Jon Davis  <jond@apple.com>
500
501         Refined the ARES-6 experience
502         https://bugs.webkit.org/show_bug.cgi?id=169205
503
504         Reviewed by Saam Barati.
505
506         * ARES-6/about.html: Copied from PerformanceTests/ARES-6/index.html.
507         * ARES-6/driver.js:
508         (Driver.prototype.start):
509         (Driver.prototype._updateIterations):
510         (Driver):
511         * ARES-6/index.html:
512         * ARES-6/stats.js:
513         (Stats.prototype.toString.span.span):
514         * ARES-6/styles.css:
515         (body):
516         (.swoop):
517         (p):
518         (.logo):
519         (.start):
520         (.test):
521         (.test:nth-child(odd)):
522         (.overall):
523         (.about h2):
524         (.button):
525         (.button:hover):
526         (.button.return:before):
527         (@keyframes fade-in):
528         (@keyframes scale-in):
529         (@keyframes flicker-in):
530         (@keyframes wipe-in):
531         (.flip): Deleted.
532         (.testing, .about): Deleted.
533         (.testing): Deleted.
534         (.about): Deleted.
535         (#about:target): Deleted.
536
537 2017-03-06  Jeremy Jones  <jeremyj@apple.com>
538
539         StandardCanPlayThrough.html does not work on iOS.
540         https://bugs.webkit.org/show_bug.cgi?id=169207
541
542         Reviewed by Jer Noble.
543
544         On iOS only, add muted=true and autoplay=allowed. The loading policy on iOS requires these attributes to load enough
545         data to trigger canPlayThrough.
546
547         * Media/StandardCanPlayThrough.html:
548
549 2017-02-13  Zalan Bujtas <zalan@apple.com>
550
551         Simple line layout: Add performance test with text-rendering: optimizeSpeed
552         https://bugs.webkit.org/show_bug.cgi?id=168248
553
554         Reviewed by Simon Fraser.
555
556         * Layout/simple-line-layout-with-varying-content-and-optimized-speed.html: Added.
557
558 2017-02-10  Zalan Bujtas  <zalan@apple.com>
559
560         Mail hangs when removing multiple rows from large table.
561         https://bugs.webkit.org/show_bug.cgi?id=168103
562         <rdar://problem/30090186>
563
564         Reviewed by Ryosuke Niwa.
565
566         * DOM/large-table-edit.html: Added.
567
568 2017-02-05  Filip Pizlo  <fpizlo@apple.com>
569
570         Beef up the ARES-6 explainer text
571         https://bugs.webkit.org/show_bug.cgi?id=167867
572
573         Reviewed by Saam Barati.
574         
575         Added appropriate links.
576
577         Added text that explains the subscores.
578
579         * ARES-6/index.html:
580
581 2017-02-06  Jer Noble  <jer.noble@apple.com>
582
583         Playback stalls when a SourceBuffer append causes frame eviction
584         https://bugs.webkit.org/show_bug.cgi?id=167834
585
586         Reviewed by Eric Carlson.
587
588         Add an in-page performance test measuring the amount of time required
589         to append a large amount of media data to a SourceBuffer, and then to
590         completely remove that data 30s at a time.
591
592         Add a microbenchmark for MediaTime which measures the amount of time
593         required to create a 1M entry std::map and traverse the map 1M times.
594
595         * Media/MSERemoveCodedFrames.html: Added.
596         * Media/media-source-loader.js:
597         (MediaSourceLoader.prototype.get duration):
598         * MediaTime/Configurations/Base.xcconfig: Added.
599         * MediaTime/Configurations/DebugRelease.xcconfig: Added.
600         * MediaTime/Makefile: Added.
601         * MediaTime/MediaTime.xcodeproj/project.pbxproj: Added.
602         * MediaTime/main.cpp: Added.
603         (performTest):
604         (test):
605         (main):
606         * Skipped:
607
608 2017-02-06  Saam Barati  <sbarati@apple.com>
609
610         Make ARES-6 work from the CLI again
611         https://bugs.webkit.org/show_bug.cgi?id=167895
612
613         Reviewed by Michael Saboff.
614
615         * ARES-6/driver.js:
616         (Driver.prototype.readyTrigger):
617         (Driver.prototype.disableTrigger):
618         * ARES-6/stats.js:
619         (Stats.prototype.toString.span.span):
620         (Stats.prototype.toString.return.span):
621         (Stats.prototype.toString):
622
623 2017-02-06  Ryan Haddad  <ryanhaddad@apple.com>
624
625         Skip ARES-6 on performance bots
626         https://bugs.webkit.org/show_bug.cgi?id=167863
627
628         Unreviewed test gardening.
629
630         ES6SampleBench was renamed to ARES-6, so this should be updated in PerformanceTests/Skipped as well.
631
632         * Skipped:
633
634 2017-02-05  Filip Pizlo  <fpizlo@apple.com>
635
636         Change ES6SampleBench into ARES-6
637         https://bugs.webkit.org/show_bug.cgi?id=167863
638
639         Rubber stamped by Saam Barati.
640         
641         This imports changes that Jonathan Davis (jond@apple.com) made to ES6SampleBench to make it look
642         super awesome. Its now called ARES-6.
643
644         * ARES-6: Copied from PerformanceTests/ES6SampleBench.
645         * ARES-6/ARES-6.svg: Added.
646         * ARES-6/driver.js:
647         (Driver):
648         (Driver.prototype.readyTrigger):
649         (Driver.prototype.disableTrigger):
650         (Driver.prototype.start):
651         (Driver.prototype._updateIterations):
652         * ARES-6/glue.js:
653         * ARES-6/index.html:
654         * ARES-6/results.js:
655         (Results.prototype.reportRunning):
656         (Results.prototype.reportDone):
657         * ARES-6/stats.js:
658         (Stats.prototype.toString.return.span):
659         (Stats.prototype.toString.span.span):
660         (Stats.prototype.toString): Deleted.
661         * ARES-6/style.css: Removed.
662         * ARES-6/styles.css: Added.
663         (html):
664         (body):
665         (header,):
666         (p a):
667         (p a:hover):
668         (.flip):
669         (header):
670         (h2,):
671         (p):
672         (.about h2):
673         (.logo):
674         (.start):
675         (.start.ready):
676         (.start.ready:hover):
677         (.start:after):
678         (.start.ready .testrun):
679         (.tests):
680         (.test):
681         (.overall h2,):
682         (.test .indicator):
683         (.test .indicator.running):
684         (@keyframes test-running):
685         (100%):
686         (.score):
687         (.score label):
688         (.score .value):
689         (.score .units):
690         (.score .margin):
691         (.overall):
692         (.overall .score):
693         (.overall .margin):
694         (.testing, .about):
695         (.testing):
696         (.about):
697         (#about:target):
698         (@media only screen and (max-width: 784px)):
699         * ARES-6/swoop.svg: Added.
700         * ES6SampleBench: Removed.
701         * ES6SampleBench/Air: Removed.
702         * ES6SampleBench/Air/README.md: Removed.
703         * ES6SampleBench/Air/airjs-tests.yaml: Removed.
704         * ES6SampleBench/Air/all.js: Removed.
705         * ES6SampleBench/Air/allocate_stack.js: Removed.
706         * ES6SampleBench/Air/arg.js: Removed.
707         * ES6SampleBench/Air/basic_block.js: Removed.
708         * ES6SampleBench/Air/benchmark.js: Removed.
709         * ES6SampleBench/Air/code.js: Removed.
710         * ES6SampleBench/Air/custom.js: Removed.
711         * ES6SampleBench/Air/frequented_block.js: Removed.
712         * ES6SampleBench/Air/insertion_set.js: Removed.
713         * ES6SampleBench/Air/inst.js: Removed.
714         * ES6SampleBench/Air/liveness.js: Removed.
715         * ES6SampleBench/Air/make_dist.sh: Removed.
716         * ES6SampleBench/Air/opcode.js: Removed.
717         * ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
718         * ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
719         * ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
720         * ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
721         * ES6SampleBench/Air/reg.js: Removed.
722         * ES6SampleBench/Air/stack_slot.js: Removed.
723         * ES6SampleBench/Air/stress-test.js: Removed.
724         * ES6SampleBench/Air/strip-hash.rb: Removed.
725         * ES6SampleBench/Air/symbols.js: Removed.
726         * ES6SampleBench/Air/test.html: Removed.
727         * ES6SampleBench/Air/test.js: Removed.
728         * ES6SampleBench/Air/tmp.js: Removed.
729         * ES6SampleBench/Air/tmp_base.js: Removed.
730         * ES6SampleBench/Air/util.js: Removed.
731         * ES6SampleBench/Basic: Removed.
732         * ES6SampleBench/Basic/ast.js: Removed.
733         * ES6SampleBench/Basic/basic-tests.yaml: Removed.
734         * ES6SampleBench/Basic/basic.js: Removed.
735         * ES6SampleBench/Basic/benchmark.js: Removed.
736         * ES6SampleBench/Basic/caseless_map.js: Removed.
737         * ES6SampleBench/Basic/lexer.js: Removed.
738         * ES6SampleBench/Basic/number.js: Removed.
739         * ES6SampleBench/Basic/parser.js: Removed.
740         * ES6SampleBench/Basic/random.js: Removed.
741         * ES6SampleBench/Basic/state.js: Removed.
742         * ES6SampleBench/Basic/stress-test.js: Removed.
743         * ES6SampleBench/Basic/test.html: Removed.
744         * ES6SampleBench/Basic/test.js: Removed.
745         * ES6SampleBench/Basic/util.js: Removed.
746         * ES6SampleBench/air_benchmark.js: Removed.
747         * ES6SampleBench/basic_benchmark.js: Removed.
748         * ES6SampleBench/cli.js: Removed.
749         * ES6SampleBench/driver.js: Removed.
750         * ES6SampleBench/glue.js: Removed.
751         * ES6SampleBench/index.html: Removed.
752         * ES6SampleBench/results.js: Removed.
753         * ES6SampleBench/stats.js: Removed.
754         * ES6SampleBench/style.css: Removed.
755
756 2017-02-05  Zalan Bujtas  <zalan@apple.com>
757
758         Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
759         https://bugs.webkit.org/show_bug.cgi?id=167859
760         <rdar://problem/30368070>
761
762         Reviewed by Antti Koivisto.
763
764         This is in preparation for webkit.org/b/167843.
765
766         * Layout/simple-line-layout-with-varying-content.html: Added.
767
768 2017-01-16  Filip Pizlo  <fpizlo@apple.com>
769
770         Add framerate baselines to the splay-detail test
771         https://bugs.webkit.org/show_bug.cgi?id=167659
772
773         Reviewed by Geoffrey Garen.
774
775         * JetStream/Octane2/splay-detail.html:
776
777 2017-01-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>
778
779         [EFL][GTK] Skip some IndexedDB tests that time out on the Perf bots.
780
781         Unreviewed performance test gardening.
782
783         * Skipped:
784
785 2017-01-30  Zalan Bujtas  <zalan@apple.com>
786
787         Simple line layout: Small tweaks to improve performance.
788         https://bugs.webkit.org/show_bug.cgi?id=167611
789         <rdar://problem/30274294>
790
791         Reviewed by Simon Fraser.
792
793         * Layout/simple-line-layout-non-repeating-text.html: Added.
794
795 2017-01-13  Said Abou-Hallawa  <sabouhallawa@apple.com>
796
797         26 MotionMark performance tests failing
798         https://bugs.webkit.org/show_bug.cgi?id=166854
799
800         Reviewed by Ryosuke Niwa.
801         
802         Skip running MotionMark on WebKit perf bots.
803
804         * Skipped:
805
806 2017-01-06  Said Abou-Hallawa  <sabouhallawa@apple.com>
807
808         Rename the directory and the files of MotionMark from Animometer to MotionMark
809         https://bugs.webkit.org/show_bug.cgi?id=166659
810
811         Reviewed by Jon Lee.
812         
813         Rename the directory and the files of the benchmark to its new name.
814
815         * MotionMark/developer.html: Renamed from PerformanceTests/Animometer/developer.html.
816         * MotionMark/index.html: Renamed from PerformanceTests/Animometer/index.html.
817         * MotionMark/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/d3.min.js.
818         * MotionMark/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/graph.js.
819         * MotionMark/resources/debug-runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.css.
820         * MotionMark/resources/debug-runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.js.
821         * MotionMark/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/tests.js.
822         * MotionMark/resources/extensions.js: Renamed from PerformanceTests/Animometer/resources/extensions.js.
823         * MotionMark/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/runner/benchmark-runner.js.
824         * MotionMark/resources/runner/crystal.svg: Renamed from PerformanceTests/Animometer/resources/runner/crystal.svg.
825         * MotionMark/resources/runner/lines.svg: Renamed from PerformanceTests/Animometer/resources/runner/lines.svg.
826         * MotionMark/resources/runner/logo.svg: Renamed from PerformanceTests/Animometer/resources/runner/logo.svg.
827         * MotionMark/resources/runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/runner/animometer.css.
828         * MotionMark/resources/runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/runner/animometer.js.
829         * MotionMark/resources/runner/tests.js: Renamed from PerformanceTests/Animometer/resources/runner/tests.js.
830         * MotionMark/resources/statistics.js: Renamed from PerformanceTests/Animometer/resources/statistics.js.
831         * MotionMark/resources/strings.js: Renamed from PerformanceTests/Animometer/resources/strings.js.
832         * MotionMark/tests/3d/resources/webgl.js: Renamed from PerformanceTests/Animometer/tests/3d/resources/webgl.js.
833         * MotionMark/tests/3d/webgl.html: Renamed from PerformanceTests/Animometer/tests/3d/webgl.html.
834         * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-images.html.
835         * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html.
836         * MotionMark/tests/bouncing-particles/bouncing-css-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-images.html.
837         * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-shapes.html.
838         * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-images.html.
839         * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-shapes.html.
840         * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-tagged-images.html.
841         * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js.
842         * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js.
843         * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js.
844         * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js.
845         * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js.
846         * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js.
847         * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js.
848         * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js.
849         * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js.
850         * MotionMark/tests/bouncing-particles/resources/image1.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image1.jpg.
851         * MotionMark/tests/bouncing-particles/resources/image2.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image2.jpg.
852         * MotionMark/tests/bouncing-particles/resources/image3.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image3.jpg.
853         * MotionMark/tests/bouncing-particles/resources/image4.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image4.jpg.
854         * MotionMark/tests/bouncing-particles/resources/image5.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image5.jpg.
855         * MotionMark/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/dom/compositing-transforms.html.
856         * MotionMark/tests/dom/focus.html: Renamed from PerformanceTests/Animometer/tests/dom/focus.html.
857         * MotionMark/tests/dom/leaves.html: Renamed from PerformanceTests/Animometer/tests/dom/leaves.html.
858         * MotionMark/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/dom/particles.html.
859         * MotionMark/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/compositing-transforms.js.
860         * MotionMark/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/dom-particles.js.
861         * MotionMark/tests/dom/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/focus.js.
862         * MotionMark/tests/dom/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/leaves.js.
863         * MotionMark/tests/master/canvas-stage.html: Renamed from PerformanceTests/Animometer/tests/master/canvas-stage.html.
864         * MotionMark/tests/master/focus.html: Renamed from PerformanceTests/Animometer/tests/master/focus.html.
865         * MotionMark/tests/master/image-data.html: Renamed from PerformanceTests/Animometer/tests/master/image-data.html.
866         * MotionMark/tests/master/leaves.html: Renamed from PerformanceTests/Animometer/tests/master/leaves.html.
867         * MotionMark/tests/master/multiply.html: Renamed from PerformanceTests/Animometer/tests/master/multiply.html.
868         * MotionMark/tests/master/resources/canvas-stage.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-stage.js.
869         * MotionMark/tests/master/resources/canvas-tests.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-tests.js.
870         * MotionMark/tests/master/resources/compass.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/compass.svg.
871         * MotionMark/tests/master/resources/compass100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/compass100.png.
872         * MotionMark/tests/master/resources/console.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/console.svg.
873         * MotionMark/tests/master/resources/console100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/console100.png.
874         * MotionMark/tests/master/resources/contribute.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute.svg.
875         * MotionMark/tests/master/resources/contribute100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute100.png.
876         * MotionMark/tests/master/resources/debugger.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger.svg.
877         * MotionMark/tests/master/resources/debugger100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger100.png.
878         * MotionMark/tests/master/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/master/resources/focus.js.
879         * MotionMark/tests/master/resources/image-data.js: Renamed from PerformanceTests/Animometer/tests/master/resources/image-data.js.
880         * MotionMark/tests/master/resources/inspector.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector.svg.
881         * MotionMark/tests/master/resources/inspector100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector100.png.
882         * MotionMark/tests/master/resources/layout.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/layout.svg.
883         * MotionMark/tests/master/resources/layout100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/layout100.png.
884         * MotionMark/tests/master/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/master/resources/leaves.js.
885         * MotionMark/tests/master/resources/multiply.js: Renamed from PerformanceTests/Animometer/tests/master/resources/multiply.js.
886         * MotionMark/tests/master/resources/particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/particles.js.
887         * MotionMark/tests/master/resources/performance.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/performance.svg.
888         * MotionMark/tests/master/resources/performance100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/performance100.png.
889         * MotionMark/tests/master/resources/script.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/script.svg.
890         * MotionMark/tests/master/resources/script100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/script100.png.
891         * MotionMark/tests/master/resources/shortcuts.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts.svg.
892         * MotionMark/tests/master/resources/shortcuts100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts100.png.
893         * MotionMark/tests/master/resources/standards.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/standards.svg.
894         * MotionMark/tests/master/resources/standards100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/standards100.png.
895         * MotionMark/tests/master/resources/storage.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/storage.svg.
896         * MotionMark/tests/master/resources/storage100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/storage100.png.
897         * MotionMark/tests/master/resources/styles.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/styles.svg.
898         * MotionMark/tests/master/resources/styles100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/styles100.png.
899         * MotionMark/tests/master/resources/svg-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/svg-particles.js.
900         * MotionMark/tests/master/resources/text.js: Renamed from PerformanceTests/Animometer/tests/master/resources/text.js.
901         * MotionMark/tests/master/resources/timeline.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline.svg.
902         * MotionMark/tests/master/resources/timeline100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline100.png.
903         * MotionMark/tests/master/svg-particles.html: Renamed from PerformanceTests/Animometer/tests/master/svg-particles.html.
904         * MotionMark/tests/master/text.html: Renamed from PerformanceTests/Animometer/tests/master/text.html.
905         * MotionMark/tests/resources/main.js: Renamed from PerformanceTests/Animometer/tests/resources/main.js.
906         * MotionMark/tests/resources/math.js: Renamed from PerformanceTests/Animometer/tests/resources/math.js.
907         * MotionMark/tests/resources/stage.css: Renamed from PerformanceTests/Animometer/tests/resources/stage.css.
908         * MotionMark/tests/resources/star.svg: Renamed from PerformanceTests/Animometer/tests/resources/star.svg.
909         * MotionMark/tests/resources/yin-yang.png: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.png.
910         * MotionMark/tests/resources/yin-yang.svg: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.svg.
911         * MotionMark/tests/simple/resources/simple-canvas-paths.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js.
912         * MotionMark/tests/simple/resources/simple-canvas.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas.js.
913         * MotionMark/tests/simple/resources/tiled-canvas-image.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/tiled-canvas-image.js.
914         * MotionMark/tests/simple/simple-canvas-paths.html: Renamed from PerformanceTests/Animometer/tests/simple/simple-canvas-paths.html.
915         * MotionMark/tests/simple/tiled-canvas-image.html: Renamed from PerformanceTests/Animometer/tests/simple/tiled-canvas-image.html.
916         * MotionMark/tests/template/resources/template-canvas.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-canvas.js.
917         * MotionMark/tests/template/resources/template-css.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-css.js.
918         * MotionMark/tests/template/resources/template-svg.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-svg.js.
919         * MotionMark/tests/template/template-canvas.html: Renamed from PerformanceTests/Animometer/tests/template/template-canvas.html.
920         * MotionMark/tests/template/template-css.html: Renamed from PerformanceTests/Animometer/tests/template/template-css.html.
921         * MotionMark/tests/template/template-svg.html: Renamed from PerformanceTests/Animometer/tests/template/template-svg.html.
922
923 2016-12-13  Brady Eidson  <beidson@apple.com>
924
925         Add a PerfTest targeting IDBObjectStore.get().
926         https://bugs.webkit.org/show_bug.cgi?id=165816
927
928         Reviewed by Alex Christensen.
929
930         * IndexedDB/objectstore-get.html: Added.
931
932 2016-12-13  Brady Eidson  <beidson@apple.com>
933
934         Add a PerfTest targeting IDBIndex.get().
935         https://bugs.webkit.org/show_bug.cgi?id=165803
936
937         Reviewed by Alex Christensen.
938
939         * IndexedDB/index-get.html: Added.
940
941 2016-12-12  Brady Eidson  <beidson@apple.com>
942
943         More IndexedDB perf tests.
944         https://bugs.webkit.org/show_bug.cgi?id=165634
945
946         Reviewed by Sam Weinig.
947
948         * IndexedDB/index-multientry.html:
949         * IndexedDB/large-number-of-inserts-responsiveness.html: Added.
950         * IndexedDB/large-number-of-inserts.html: Added.
951         * IndexedDB/objectstore-cursor.html: Added. Runtime cut in 1/4th compared to r209672.
952
953         * resources/runner.js:
954
955 2016-12-12  Commit Queue  <commit-queue@webkit.org>
956
957         Unreviewed, rolling out r209672.
958         https://bugs.webkit.org/show_bug.cgi?id=165766
959
960         IndexedDB/objectstore-cursor.html perf test always times out
961         (Requested by ap on #webkit).
962
963         Reverted changeset:
964
965         "More IndexedDB perf tests."
966         https://bugs.webkit.org/show_bug.cgi?id=165634
967         http://trac.webkit.org/changeset/209672
968
969 2016-12-10  Brady Eidson  <beidson@apple.com>
970
971         More IndexedDB perf tests.
972         https://bugs.webkit.org/show_bug.cgi?id=165634
973
974         Reviewed by Sam Weinig.
975
976         * IndexedDB/index-multientry.html:
977         * IndexedDB/large-number-of-inserts-responsiveness.html: Added.
978         * IndexedDB/large-number-of-inserts.html: Added.
979         * IndexedDB/objectstore-cursor.html: Added.
980         
981         * resources/runner.js: Add "track responsiveness" functionality to PerfTestRunner.
982
983 2016-12-06  Filip Pizlo  <fpizlo@apple.com>
984
985         Concurrent GC should be stable enough to land enabled
986         https://bugs.webkit.org/show_bug.cgi?id=164990
987
988         Reviewed by Geoffrey Garen.
989         
990         Made CDjs more configurable and refined the "large.js" configuration. I was using that one and
991         the new "long.js" configuration to tune concurrent eden GCs.
992         
993         Added a new way of running Splay in browser, which using chartjs to plot the execution times of
994         2000 iterations. This includes the minified chartjs.
995
996         * JetStream/Octane2/splay-detail.html: Added.
997         * JetStream/cdjs/benchmark.js:
998         (benchmarkImpl):
999         (benchmark):
1000         * JetStream/cdjs/long.js: Added.
1001
1002 2016-12-07  Brady Eidson  <beidson@apple.com>
1003
1004         Add IDB perf tests stressing key size.
1005         https://bugs.webkit.org/show_bug.cgi?id=165567
1006
1007         Reviewed by Alex Christensen.
1008
1009         * IndexedDB/large-array-keys.html: Added.
1010         * IndexedDB/large-binary-keys.html: Added.
1011         * IndexedDB/large-string-keys.html: Added.
1012
1013 2016-12-05  Brady Eidson  <beidson@apple.com>
1014
1015         Add an IndexedDB perf test to PerformanceTests.
1016         https://bugs.webkit.org/show_bug.cgi?id=165430
1017
1018         Reviewed by Alex Christensen.
1019
1020         * IndexedDB/index-multientry.html: Added.
1021
1022 2016-12-02  Filip Pizlo  <fpizlo@apple.com>
1023
1024         ES6SampleBench should report an average for Steady State so that all of the numbers are comparable
1025         https://bugs.webkit.org/show_bug.cgi?id=165325
1026
1027         Reviewed by Saam Barati.
1028
1029         This makes all of the numbers that ES6SampleBench reports comparable to each other: they all speak of the time
1030         it took to run an iteration of something.
1031
1032         * ES6SampleBench/results.js:
1033         (Results.prototype.reportResult):
1034
1035 2016-11-18  Jer Noble  <jer.noble@apple.com>
1036
1037         Add some performance tests for various aspects of media loading and playback.
1038         https://bugs.webkit.org/show_bug.cgi?id=164977
1039
1040         Reviewed by Darin Adler.
1041
1042         Add new tests for a few aspects of media playback; namely: how quickly  media elements fire
1043         the "canplaythrough" event when all data is immediately available, how quickly HLS playback
1044         switches resolutions, and at what playback rate MSE-backed video can play without dropping
1045         frames. Skip these tests by default, as they're not runnable on all ports, and they require
1046         a webserver (run-webkit-httpd) to complete on macOS.
1047
1048         * Media/HLSCanPlayThrough.html: Added.
1049         * Media/HLSGearChange.html: Added.
1050         * Media/MSECanPlayThrough.html: Added.
1051         * Media/MSEPlaybackRate.html: Added.
1052         * Media/StandardCanPlayThrough.html: Added.
1053         * Media/hls/1080p/iframe_index.m3u8: Added.
1054         * Media/hls/1080p/prog_index.m3u8: Added.
1055         * Media/hls/1080p/test.ts: Added.
1056         * Media/hls/480p/iframe_index.m3u8: Added.
1057         * Media/hls/480p/prog_index.m3u8: Added.
1058         * Media/hls/480p/test.ts: Added.
1059         * Media/hls/720p/iframe_index.m3u8: Added.
1060         * Media/hls/720p/prog_index.m3u8: Added.
1061         * Media/hls/720p/test.ts: Added.
1062         * Media/hls/720p/test.ts.back: Added.
1063         * Media/hls/index.m3u8: Added.
1064         * Media/media-source-loader.js: Added.
1065         (MediaSourceLoader):
1066         (MediaSourceLoader.prototype.loadManifest):
1067         (MediaSourceLoader.prototype.loadManifestSucceeded):
1068         (MediaSourceLoader.prototype.loadManifestFailed):
1069         (MediaSourceLoader.prototype.loadMediaData):
1070         (MediaSourceLoader.prototype.loadMediaDataSucceeded):
1071         (MediaSourceLoader.prototype.loadMediaDataFailed):
1072         (MediaSourceLoader.prototype.get type):
1073         (MediaSourceLoader.prototype.get duration):
1074         (MediaSourceLoader.prototype.get initSegment):
1075         (MediaSourceLoader.prototype.get mediaSegmentsLength):
1076         (MediaSourceLoader.prototype.mediaSegments):
1077         (MediaSourceLoader.prototype.get everyMediaSegment):
1078         * Media/test-fragmented-video.json: Added.
1079         * Media/test-fragmented-video.mp4: Added.
1080         * Media/test.mp4: Added.
1081         * Skipped:
1082
1083 2016-11-18  Filip Pizlo  <fpizlo@apple.com>
1084
1085         Concurrent GC should be able to run splay in debug mode and earley/raytrace in release mode with no perf regression
1086         https://bugs.webkit.org/show_bug.cgi?id=164282
1087
1088         Reviewed by Geoffrey Garen and Oliver Hunt.
1089         
1090         CDjs is a fun benchmark for stressing concurrent GCs, but to really give the GC a good
1091         workout you need to increase the amount of work that the test does. This adds a second
1092         configuration of the benchmark that has more aircraft. It uses much more memory and causes us
1093         to do more GCs and those GCs take longer.
1094
1095         * JetStream/cdjs/benchmark.js:
1096         (benchmarkImpl):
1097         (benchmark):
1098         * JetStream/cdjs/large.js: Added.
1099
1100 2016-11-14  Filip Pizlo  <fpizlo@apple.com>
1101
1102         Unreviewed, revert unintended change.
1103
1104         * ES6SampleBench/Air/benchmark.js:
1105
1106 2016-10-03  Saam Barati  <sbarati@apple.com>
1107
1108         MapHash should speculate on the type of its child node
1109         https://bugs.webkit.org/show_bug.cgi?id=161922
1110
1111         Reviewed by Filip Pizlo.
1112
1113         I gave the main generator a name so it's easier to see what
1114         it is when using the sampling profiler.
1115
1116         * ES6SampleBench/Basic/ast.js:
1117         (Basic.Program):
1118
1119 2016-09-19  Sergio Villar Senin  <svillar@igalia.com>
1120
1121         [css-grid] Remove the x2 computation of row sizes with indefinite heights
1122         https://bugs.webkit.org/show_bug.cgi?id=162150
1123
1124         Reviewed by Darin Adler.
1125
1126         Added a new test case which checks the layout performance of grids inside other grids, i.e,
1127         grids acting both as grid container and grid item.
1128
1129         * Layout/nested-grid.html: Added.
1130
1131 2016-09-09  Simon Fraser  <simon.fraser@apple.com>
1132
1133         Perf test Animation/css-accelerated-animation.html failing
1134         https://bugs.webkit.org/show_bug.cgi?id=161795
1135
1136         Skip Animation/css-accelerated-animation.html since this only works as a MobileSafari
1137         perf test.
1138
1139         * Skipped:
1140
1141 2016-09-08  Simon Fraser  <simon.fraser@apple.com>
1142
1143         Add a content-animation test with accelerated CSS animations
1144         https://bugs.webkit.org/show_bug.cgi?id=161776
1145
1146         Reviewed by Dean Jackson.
1147
1148         Add a test that measures the frame rate of accelerated CSS animations.
1149
1150         This is like css-animation.html (which animates 'left' and 'top') but animates
1151         transforms instead. In order to get animation in X and Y we make two nested elements
1152         and set transformX() on one, and transformY() on the other.
1153
1154         * Animation/css-accelerated-animation.html: Added.
1155
1156 2016-08-23  Saam Barati  <sbarati@apple.com>
1157
1158         It should be easy to run ES6SampleBench from the jsc shell
1159         https://bugs.webkit.org/show_bug.cgi?id=161085
1160
1161         Reviewed by Yusuke Suzuki.
1162
1163         This patch makes ES6 sample bench runnable through the `jsc` shell.
1164         To do that, you need to be in the PerformanceTests/ES6SampleBench
1165         directory and run `jsc cli.js`. To make this work, the benchmark
1166         is now aware of being run in two modes: via the browser, and via
1167         the shell. Each entry point will set a variable `isInBrowser`,
1168         and the benchmark will do different things based on if that
1169         variable is true or false.
1170
1171         * ES6SampleBench/Air/benchmark.js:
1172         * ES6SampleBench/Air/stress-test.js:
1173         * ES6SampleBench/Basic/benchmark.js:
1174         (runBenchmark):
1175         * ES6SampleBench/Basic/stress-test.js:
1176         * ES6SampleBench/air_benchmark.js:
1177         * ES6SampleBench/basic_benchmark.js:
1178         * ES6SampleBench/cli.js: Added.
1179         (return.doRun):
1180         (makeBenchmarkRunner):
1181         * ES6SampleBench/driver.js:
1182         (Driver):
1183         (Driver.prototype._recomputeSummary):
1184         (Driver.prototype._iterate.window.setTimeout):
1185         (Driver.prototype._iterate):
1186         (Driver.prototype._updateIterations):
1187         * ES6SampleBench/glue.js:
1188         (reportResult):
1189         * ES6SampleBench/index.html:
1190         * ES6SampleBench/results.js:
1191         (Results):
1192         (Results.prototype.reportRunning):
1193         (Results.prototype.reportDone):
1194         (Results.prototype.reportError):
1195         * ES6SampleBench/stats.js:
1196         (Stats):
1197         (Stats.prototype.toString):
1198         (Stats.prototype._update):
1199
1200 2016-08-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
1201
1202         Add an option to run the MotionMark tests with classic tile size (512x512)
1203         https://bugs.webkit.org/show_bug.cgi?id=160371
1204
1205         Reviewed by Darin Adler.
1206
1207         Setting the body to large size (3000x3000) and overflow to scroll forces
1208         the classic tile size (512x512). This option does not affect the canvas
1209         tests because the canvas is displayed on one tile regardless of its size.
1210
1211         * Animometer/developer.html:
1212         * Animometer/resources/debug-runner/animometer.css:
1213         (body.showing-test-container.tiles-big):
1214         (body.showing-test-container.tiles-classic):
1215         * Animometer/resources/debug-runner/animometer.js:
1216         * Animometer/resources/runner/animometer.js:
1217         (window.benchmarkController.startBenchmark):
1218
1219 2016-06-29  Filip Pizlo  <fpizlo@apple.com>
1220
1221         Generators violate bytecode liveness validation
1222         https://bugs.webkit.org/show_bug.cgi?id=159279
1223
1224         Reviewed by Yusuke Suzuki.
1225
1226         Add Basic to our test harness.
1227
1228         Also made some cosmetic changes to the benchmark harness.
1229
1230         * ES6SampleBench/Basic/basic-tests.yaml: Added.
1231         * ES6SampleBench/Basic/stress-test.js: Added.
1232         (preciseTime):
1233         * ES6SampleBench/driver.js:
1234         (Driver):
1235         (Driver.prototype.start):
1236         (Driver.prototype.reportError):
1237         * ES6SampleBench/glue.js:
1238         * ES6SampleBench/index.html:
1239
1240 2016-06-28  Filip Pizlo  <fpizlo@apple.com>
1241
1242         ES6SampleBench should have a harness
1243         https://bugs.webkit.org/show_bug.cgi?id=159246
1244
1245         Reviewed by Saam Barati.
1246         
1247         This adds a simple web harness for ES6SampleBench. It runs Air and Basic 10 times for 200
1248         iterations each and reports three metrics:
1249         
1250         First iteration: the time it takes for the first iteration to run. This is the first
1251         iteration after the benchmark is loaded into the iframe, so it's representative of what
1252         would happen if one of these workloads only ran for a short time.
1253         
1254         Worst 2%: of the last 199 iterations, the average of the worst 2% iterations. If code like
1255         any of these workloads was used in an important event handler, you'd want that code to run
1256         well in the worst case in addition to having great throughput.
1257         
1258         Steady state: the total of the last 199 iterations. This is representative of what would
1259         happen if you ran code like this for a long time.
1260         
1261         The total score is the geomean of the firstIteration/worstCase/steadyState numbers of the
1262         two benchmarks.
1263         
1264         The harness does statistics using Student's T-distribution confidence intervals.
1265
1266         * ES6SampleBench/Basic/benchmark.js:
1267         (Benchmark):
1268         * ES6SampleBench/air_benchmark.js: Added.
1269         * ES6SampleBench/basic_benchmark.js: Added.
1270         * ES6SampleBench/driver.js: Added.
1271         (Driver):
1272         (Driver.prototype.addBenchmark):
1273         (Driver.prototype.start):
1274         (Driver.prototype.reportResult):
1275         (Driver.prototype.reportError):
1276         (Driver.prototype._recomputeSummary.Geomean):
1277         (Driver.prototype._recomputeSummary.Geomean.prototype.add):
1278         (Driver.prototype._recomputeSummary.Geomean.prototype.get result):
1279         (Driver.prototype._recomputeSummary):
1280         (Driver.prototype._iterate):
1281         (Driver.prototype._updateIterations):
1282         * ES6SampleBench/glue.js: Added.
1283         * ES6SampleBench/index.html: Added.
1284         * ES6SampleBench/results.js: Added.
1285         (Results):
1286         (Results.prototype.get benchmark):
1287         (Results.prototype.reset):
1288         (Results.prototype.reportRunning):
1289         (Results.prototype.reportDone):
1290         (Results.prototype.reportResult.averageAbovePercentile):
1291         (Results.prototype.reportResult):
1292         (Results.prototype.reportError):
1293         * ES6SampleBench/stats.js: Added.
1294         (Stats):
1295         (Stats.prototype.reset):
1296         (Stats.prototype.add):
1297         (Stats.prototype.get numIterations):
1298         (Stats.prototype.valueForIteration):
1299         (Stats.get result.tDist):
1300         (Stats.prototype.get result):
1301         (Stats.prototype.toString):
1302         (Stats.prototype._update):
1303         * ES6SampleBench/style.css: Added.
1304         (body):
1305         (body, th, tr):
1306         (h1, h2, h3, h4):
1307         (h1):
1308         (h2):
1309         (h3):
1310         (hr):
1311         (address):
1312         (img):
1313         (.underline):
1314         (ol.loweralpha):
1315         (ol.upperalpha):
1316         (ol.lowerroman):
1317         (ol.upperroman):
1318         (ol.arabic):
1319         (.banner-link:link, .banner-link:visited):
1320         (:link, :visited):
1321         (h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited):
1322         (.anchor:link, .anchor:visited):
1323         (* > .anchor:link, * > .anchor:visited):
1324         (span:hover .anchor):
1325         (a.forbidden, span.forbidden):
1326         (a.missing:hover):
1327         (a.closed:link, a.closed:visited, span.closed):
1328         (pre):
1329         (div.code):
1330         (div.code pre):
1331         (dt):
1332         (dd):
1333         (dd:last-child):
1334         (.site-logo):
1335         (.site-logo .tagline):
1336         (table):
1337         (#contents):
1338         (p):
1339         (p:last-child):
1340         (th):
1341         (td):
1342
1343 2016-06-28  Jon Lee  <jonlee@apple.com>
1344
1345         Update focus test
1346         https://bugs.webkit.org/show_bug.cgi?id=159242
1347         rdar://problem/27070007
1348
1349         Reviewed by Dean Jackson.
1350         Provisionally reviewed by Said Abou-Hallawa.
1351
1352         Move previous test to dom suite, and update the test for better reporting of frame rate, although
1353         it uses a different rendering path.
1354
1355         * Animometer/resources/debug-runner/tests.js: Add to dom suite.
1356         * Animometer/tests/dom/focus.html: Copied from PerformanceTests/Animometer/tests/master/focus.html.
1357         * Animometer/tests/dom/resources/focus.js: Copied from PerformanceTests/Animometer/tests/master/resources/focus.js.
1358         * Animometer/tests/master/focus.html: Remove center element.
1359         * Animometer/tests/master/resources/focus.js: Use narrower size range with smaller particles. Remove the
1360         container elements. Inline getBlurValue and getOpacityValue since they are only called once.
1361
1362 2016-06-28  Filip Pizlo  <fpizlo@apple.com>
1363
1364         Move Air.js and Basic into ES6SampleBench
1365
1366         Rubber stamped by Geoffrey Garen.
1367         
1368         We want to group our ES6 benchmarks together, and eventually, we want to give them a
1369         common harness.
1370
1371         * Air.js: Removed.
1372         * Air.js/README.md: Removed.
1373         * Air.js/airjs-tests.yaml: Removed.
1374         * Air.js/all.js: Removed.
1375         * Air.js/allocate_stack.js: Removed.
1376         * Air.js/arg.js: Removed.
1377         * Air.js/basic_block.js: Removed.
1378         * Air.js/benchmark.js: Removed.
1379         * Air.js/code.js: Removed.
1380         * Air.js/custom.js: Removed.
1381         * Air.js/frequented_block.js: Removed.
1382         * Air.js/insertion_set.js: Removed.
1383         * Air.js/inst.js: Removed.
1384         * Air.js/liveness.js: Removed.
1385         * Air.js/make_dist.sh: Removed.
1386         * Air.js/opcode.js: Removed.
1387         * Air.js/payload-airjs-ACLj8C.js: Removed.
1388         * Air.js/payload-gbemu-executeIteration.js: Removed.
1389         * Air.js/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
1390         * Air.js/payload-typescript-scanIdentifier.js: Removed.
1391         * Air.js/reg.js: Removed.
1392         * Air.js/stack_slot.js: Removed.
1393         * Air.js/stress-test.js: Removed.
1394         * Air.js/strip-hash.rb: Removed.
1395         * Air.js/symbols.js: Removed.
1396         * Air.js/test.html: Removed.
1397         * Air.js/test.js: Removed.
1398         * Air.js/tmp.js: Removed.
1399         * Air.js/tmp_base.js: Removed.
1400         * Air.js/util.js: Removed.
1401         * Basic: Removed.
1402         * Basic/ast.js: Removed.
1403         * Basic/basic.js: Removed.
1404         * Basic/benchmark.js: Removed.
1405         * Basic/caseless_map.js: Removed.
1406         * Basic/lexer.js: Removed.
1407         * Basic/number.js: Removed.
1408         * Basic/parser.js: Removed.
1409         * Basic/random.js: Removed.
1410         * Basic/state.js: Removed.
1411         * Basic/test.html: Removed.
1412         * Basic/test.js: Removed.
1413         * Basic/util.js: Removed.
1414         * ES6SampleBench: Added.
1415         * ES6SampleBench/Air: Copied from PerformanceTests/Air.js.
1416         * ES6SampleBench/Basic: Copied from PerformanceTests/Basic.
1417         * Skipped:
1418
1419 2016-06-24  Filip Pizlo  <fpizlo@apple.com>
1420
1421         Add a ES6 generator benchmark
1422         https://bugs.webkit.org/show_bug.cgi?id=159101
1423
1424         Rubber stamped by Keith Miller.
1425         
1426         This adds a Basic interpreter loosely based on ECMA-55:
1427         
1428         http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-55,%201st%20Edition,%20January%201978.pdf
1429         
1430         It includes a lexer that is a generator, a parser that uses regular expressions, and an AST
1431         walk interpreter where the walking functions for statements are generators that call each
1432         other with yield*. This enables the interpreter to look like an AST walk even though it can
1433         yield at INPUT and PRINT statements.
1434         
1435         This also uses for-of, classes, Map, and WeakMap. It also uses deprecated-but-awesome RegExp
1436         features like RegExp.lastMatch and RegExp.rightContext. I did it that way because this is
1437         how I've always written lexers in dynamic languages; see offlineasm's lex() method in
1438         parser.rb for example.
1439         
1440         The benchmark runs a handful of simple Basic programs. The longest-running one computes
1441         prime numbers.
1442         
1443         Includes a command-line and web harness. On my machine it runs in 2-3 seconds.
1444
1445         * Basic: Added.
1446         * Basic/ast.js: Added.
1447         (Basic.NumberApply):
1448         (Basic.Variable):
1449         (Basic.Const):
1450         (Basic.NumberPow):
1451         (Basic.NumberMul):
1452         (Basic.NumberDiv):
1453         (Basic.NumberNeg):
1454         (Basic.NumberAdd):
1455         (Basic.NumberSub):
1456         (Basic.StringVar):
1457         (Basic.Equals):
1458         (Basic.NotEquals):
1459         (Basic.LessThan):
1460         (Basic.GreaterThan):
1461         (Basic.LessEqual):
1462         (Basic.GreaterEqual):
1463         (Basic.GoTo):
1464         (Basic.GoSub):
1465         (Basic.Def):
1466         (Basic.Let):
1467         (Basic.If):
1468         (Basic.Return):
1469         (Basic.Stop):
1470         (Basic.On):
1471         (sideState.shouldStop):
1472         (Basic.For):
1473         (Basic.Next):
1474         (Basic.Print):
1475         (Basic.Input):
1476         (Basic.Read):
1477         (Basic.Restore):
1478         (Basic.Dim):
1479         (Basic.Randomize):
1480         (Basic.End):
1481         (Basic.Program):
1482         * Basic/basic.js: Added.
1483         (prepare):
1484         (simulate):
1485         * Basic/benchmark.js: Added.
1486         (Benchmark):
1487         (Benchmark.prototype.runIteration.expect):
1488         (Benchmark.prototype.runIteration):
1489         (runBenchmark):
1490         * Basic/caseless_map.js: Added.
1491         (CaselessMap):
1492         * Basic/lexer.js: Added.
1493         (lex.consumeWhitespace):
1494         (lex.consume):
1495         (lex):
1496         * Basic/lexer_test.js: Added.
1497         * Basic/number.js: Added.
1498         (NumberValue):
1499         (NumberValue.prototype.get value):
1500         (NumberValue.prototype.apply):
1501         (NumberValue.prototype.leftApply):
1502         (NumberValue.prototype.assign):
1503         (NumberArray.):
1504         (NumberArray):
1505         (NumberArray.prototype.apply):
1506         (NumberArray.prototype.leftApply):
1507         (NumberFunction):
1508         (NumberFunction.prototype.apply):
1509         (NumberFunction.prototype.leftApply):
1510         (NativeFunction):
1511         (NativeFunction.prototype.apply):
1512         (NativeFunction.prototype.leftApply):
1513         * Basic/parser.js: Added.
1514         (parse):
1515         (parse.pushToken):
1516         (parse.peekToken):
1517         (parse.consumeKind):
1518         (parse.consumeToken):
1519         (parse.parseVariable):
1520         (parse.parseNumericExpression.parsePrimary):
1521         (parse.parseNumericExpression.parseFactor):
1522         (parse.parseNumericExpression.parseTerm):
1523         (parse.parseNumericExpression):
1524         (parse.parseConstant):
1525         (parse.parseStringExpression):
1526         (parse.isStringExpression):
1527         (parse.parseRelationalExpression):
1528         (parse.parseNonNegativeInteger):
1529         (parse.parseGoToStatement):
1530         (parse.parseGoSubStatement):
1531         (parse.parseStatement):
1532         (parse.parseStatements):
1533         * Basic/random.js: Added.
1534         (createRNG):
1535         (createRNGWithFixedSeed):
1536         (createRNGWithRandomSeed):
1537         * Basic/state.js: Added.
1538         (State):
1539         (State.prototype.getValue):
1540         (State.prototype.getSideState):
1541         (State.prototype.abort):
1542         (State.prototype.validate):
1543         * Basic/test.html: Added.
1544         * Basic/test.js: Added.
1545         * Basic/util.js: Added.
1546         (this.performance.performance.now.currentTime):
1547         (else.this.preciseTime.currentTime):
1548         (else.currentTime):
1549         * Skipped: Make sure that we don't run Basic yet.
1550
1551 2016-06-21  Jon Lee  <jonlee@apple.com>
1552
1553         Update canvas size when benchmark begins
1554         https://bugs.webkit.org/show_bug.cgi?id=159010
1555
1556         Reviewed by Dean Jackson.
1557
1558         Previously we would evaluate the media queries and assign the canvas size to the test
1559         on body.onload. Instead, do it once the user starts the benchmark.
1560
1561         * Animometer/resources/debug-runner/animometer.js: Move benchmarkController.determineCanvasSize()
1562         to benchmarkController._startBenchmark.
1563         * Animometer/resources/runner/animometer.js: Ditto.
1564
1565 2016-06-21  Jon Lee  <jonlee@apple.com>
1566
1567         Add new timestamp option
1568         https://bugs.webkit.org/show_bug.cgi?id=159006
1569
1570         Reviewed by Dean Jackson.
1571
1572         Add a new option to take timestamps from the rAF callback.
1573
1574         * Animometer/developer.html: Added option.
1575         * Animometer/tests/resources/main.js:
1576         (Benchmark): Fall back to using the rAF timestamp if performance.now()
1577         is not available.
1578         (Benchmark._animateLoop): Update how timestamp is set. Prefer to use
1579         local var instead of accessing private var.
1580
1581 2016-06-21  Jon Lee  <jonlee@apple.com>
1582
1583         Improvements to Animometer benchmark
1584         https://bugs.webkit.org/show_bug.cgi?id=157738
1585
1586         Reviewed by Dean Jackson.
1587         Provisionally reviewed by Said Abou-Hallawa.
1588
1589         Update tests.
1590
1591         * Animometer/tests/master/text.html: Ensure only three text sizes for
1592         the three canvases.
1593         * Animometer/tests/master/focus.html: Reduce the text size to fit with smaller
1594         particle sizes.
1595         * Animometer/tests/master/resources/focus.js: Remove the quadratic distribution for
1596         particle sizes, and make it linear. Reduce the size variance. Shuffle the math to
1597         reduce some calculations per frame. Fix the placement of the particles which might
1598         otherwise be culled.
1599         * Animometer/tests/master/resources/image-data.js: Reduce the particle size
1600         to encourage larger scores.
1601
1602 2016-06-21  Jon Lee  <jonlee@apple.com>
1603
1604         Improvements to Animometer benchmark
1605         https://bugs.webkit.org/show_bug.cgi?id=157738
1606
1607         Reviewed by Dean Jackson.
1608         Provisionally reviewed by Said Abou-Hallawa.
1609
1610         Include confidence interval for the final score, and store the canvas
1611         size in the serialization so that it is accurately shown in results.
1612
1613         * Animometer/developer.html: Add a "confidence" div.
1614         * Animometer/index.html: Ditto. Convert "mean" to "confidence".
1615         * Animometer/resources/debug-runner/animometer.js: Look at options, and
1616         if the configuration is included, update the body class based on it
1617         (similar to what we do when we first load the page). That way, if you
1618         drag-and-drop previous results in, that configuration is reflected in
1619         the dashboard. Show the full confidence interval.
1620
1621         * Animometer/resources/debug-runner/animometer.css:
1622         * Animometer/resources/debug-runner/animometer.js: Style update.
1623         * Animometer/resources/runner/animometer.css:
1624
1625         * Animometer/resources/runner/animometer.js:
1626         (_processData): Propagate the confidence interval values out and calculate
1627         the lower and upper bounds. For now, shortcut the aggregate calculation,
1628         since we only go through one iteration.
1629         (this._processData.calculateScore): Propagate the confidence interval out
1630         to be next to the score. Depending on the controller these values are
1631         calculated differently.
1632         (this._processData._getResultsProperty): Convenience function.
1633         (this._processData.get score): Refactor.
1634         (this._processData.get scoreLowerBound): Get the aggregate lower bound.
1635         (this._processData.get scoreUpperBound): Get the aggregate upper bound.
1636         (window.sectionsManager.setSectionScore):
1637         (window.benchmarkController._startBenchmark): When the benchmark starts, note
1638         the canvas size and add it to options. That way it will be automatically be
1639         serialized.
1640         (window.benchmarkController.showResults): Include the maximum deviation
1641         percentage.
1642         * Animometer/resources/runner/lines.svg: Make the background line up with the
1643         skew.
1644         * Animometer/resources/runner/tests.js:
1645         (Headers.details.text): Refactor.
1646         * Animometer/resources/statistics.js:
1647         (Statistics.largestDeviationPercentage): Convenience function to calculate
1648         the deviation percentage on either end and return the largest deviation.
1649         * Animometer/resources/strings.js:
1650
1651         Allow specifying a regression profile to use instead of taking the one
1652         with the lowest error.
1653
1654         Address an issue in the focus test when the regression calculated ends
1655         up overestimating the change point, causing a cascade of tougher
1656         ramps. The reason behind this is that at max complexity of an initial
1657         ramp, the frame length is very high, and it influences the second
1658         segment of the piecewise regression strongly, causing it to be very
1659         steep. As a result, the first segment, expected to be flat, ends up
1660         covering a higher range of complexity. That makes the change point
1661         much higher than it should be. To avoid this, we will add a sanity
1662         check on the maximum value of the ramp. If the regression's projected
1663         value at the maximum complexity of the current ramp is very slow (less
1664         than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not
1665         include the regression's change point in the change point estimator.
1666         That estimator is used as the midpoint of the next ramp, and including
1667         the change point from a poor regression can bake in the error. The
1668         controller already knows how to adjust for ramps that are too easy for
1669         the system.
1670
1671         * Animometer/resources/runner/animometer.js:
1672         (this._processData.findRegression): Takes a preferred profile and gives that to
1673         Regression.
1674         (this._processData.calculateScore): With the ramp controller, take the profile
1675         of the ramp that was used the most when calculating the ramp's regression. That
1676         profile is what is used for the test's score.
1677         * Animometer/resources/statistics.js:
1678         (Regression.Utilities.createClass): Update to take an options object which can
1679         specify a profile to calculate with. Otherwise it will continue to use both and
1680         select the one with the lower error.
1681         (_calculateRegression): Fix an issue where we claim 0 error if the regression
1682         calculation fails due to divide-by-zero. Instead reject that regression calculation
1683         by giving it Number.MAX_VALUE.
1684         * Animometer/resources/strings.js: New strings for marking a regression as flat
1685         or slope.
1686         * Animometer/tests/resources/main.js:
1687         (RampController): Rename the thresholds for clarity. Add a threshold that, if
1688         exceeded, will lower the maximum complexity of the next ramp.
1689         (tune): Relax the cdf check to consider whether the interval definitely falls in
1690         the desired frame length threshold.
1691         (processSamples): Include the profile in the ramp.
1692
1693         Update ramp controller test. Increase the length of the test to 30 seconds, and extend
1694         the interval to 120 ms during sampling. Improve the estimation of the ramp parameters.
1695
1696         * Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar
1697         by default.
1698         * Animometer/resources/runner/animometer.js: Change default to 30 seconds.
1699         * Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in
1700         the order in which they appear in the patch:
1701
1702         - With a longer test length use longer ramps with longer intervals to get more data at each
1703         complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to
1704         spend more time there to find the right order of magnitude, but increase it during the
1705         ramps to 120 ms.
1706         - The ramp linearly interpolates the complexity to render based on its timestamp, but it would
1707         never sample the minimum complexity. Instead of lerping max to min complexity from time
1708         0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that
1709         we can have at least one interval sample at the min complexity for that ramp.
1710         - Some regression calculations only come out with one line segment rather than the two
1711         we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the
1712         case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that
1713         we ensure that at least part of the ramp is covering a complexity range that the system can
1714         handle at full 60.
1715         - Remove an assignment to interpolatedFrameLength since that is never subsequently used.
1716
1717         Update the format used to serialize the results for analysis.
1718
1719         Each data point used to have named properties for fields like complexity and frame rate.
1720         In addition the serialized numbers had rounding errors that took up many characters.
1721         Update the format by introducing a new data container called SampleData, which contains a
1722         field map. The map maps a string to an array index. Each data point is an array, so, to
1723         get a stat, use the field map to get the array index into the data point. This allows future
1724         versions to track other data, and reduces the size of the output string by two-thirds.
1725
1726         * Animometer/resources/extensions.js:
1727         (Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed
1728         precision, and converts it back to a number.
1729         (SampleData): New class that contains sample data and a field map that maps properties to
1730         an array index.
1731         (get length): Number of data points.
1732         (addField): Add a field to the field map.
1733         (push): Add a data point.
1734         (sort): Sort the data.
1735         (slice): Return new SampleData object with sliced data.
1736         (forEach): Iterate over the data with provided function.
1737         (createDatum):
1738         (getFieldInDatum): Returns the data point associated with the field name by looking it up
1739         in the field map in the datum provided, which can be the datum object itself (an array) or
1740         an index into the data member variable.
1741         (setFieldInDatum): Sets the data point associated with the field name.
1742         (at): Returns the data point at the provided index.
1743         (toArray): Serializes the data where the field map serves as property names for each point.
1744
1745         * Animometer/resources/debug-runner/graph.js:
1746         (updateGraphData): Remove unused _testData. Convert the data to the old array format for the
1747         graph to use, since the old format was much easier to work with when displaying the graphs.
1748         (onGraphTypeChanged): For some controllers, no alternative score or mean is provided.
1749         * Animometer/resources/runner/animometer.css:
1750         * Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output
1751         to only go to 3 digits of precision for purposes of reducing the data size.
1752         * Animometer/resources/strings.js: Add new strings to put into the field maps.
1753         * Animometer/tests/resources/main.js: Refactor to use SampleData.
1754
1755         * Animometer/developer.html:
1756         * Animometer/index.html: Restructure results table for both pages. Add charset attribute to
1757         tests.js include.
1758         * Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner.
1759         * Animometer/resources/debug-runner/graph.js:
1760         (onGraphTypeChanged): Update score and mean if bootstrap results are available from the
1761         controller, since not all controllers do bootstrapping.
1762         * Animometer/resources/debug-runner/tests.js: Update header text.
1763         * Animometer/resources/runner/animometer.css: Include confidence interval in results.
1764         * Animometer/resources/runner/animometer.js:
1765         (ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead.
1766         (ResultsTable._addBody): Add tbody element.
1767         (ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents.
1768         (window.benchmarkController.showResults): Add table that includes tests' confidence intervals.
1769         * Animometer/resources/runner/tests.js:
1770         (Headers.details.text): Add new details table that includes bootstrap confidence interval.
1771         The interval can be asymmetric, but for simplicity, report the maximum deviation percentage
1772         on either side of the bootstrap median.
1773         * Animometer/resources/statistics.js:
1774         (bootstrap): Include the confidence percentage in the return object.
1775
1776         Report canvas size in results.
1777
1778         * Animometer/developer.html: Add markup to indicate whether a small, medium, or large
1779         canvas was used.
1780         * Animometer/index.html: Ditto.
1781         * Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize().
1782         * Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the
1783         body class size.
1784         * Animometer/resources/runner/animometer.js:
1785         (window.benchmarkController.initialize): Update styles to set the canvas based on the
1786         body class size.
1787         (window.benchmarkController.determineCanvasSize): Run various media queries and set the body
1788         class based on the size of the device.
1789
1790         * Animometer/developer.html: Refactor to include the main CSS file, and redo
1791         the layout so that it doesn't rely on flexbox.
1792         * Animometer/resources/debug-runner/animometer.css:
1793         * Animometer/resources/debug-runner/animometer.js:
1794         (updateDisplay): Since various parts of the script alter the body class, we can't
1795         replace the className directly. Instead, remove all display-based values and then add
1796         the one that was selected.
1797         * Animometer/resources/debug-runner/graph.js:
1798         (updateGraphData): To set the size of the graph, use window.innerHeight.
1799         * Animometer/resources/runner/animometer.js:
1800         (window.sectionsManager.showSection): Since various parts of the script alter the body
1801         class, we can't replace the className directly. Remove all of the section classes
1802         individually and then add the one desired.
1803         * Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the
1804         stage.
1805
1806 2016-06-12  Filip Pizlo  <fpizlo@apple.com>
1807
1808         Fix round-down goof in Air.js's ShuffleCustom.forEachArg
1809         https://bugs.webkit.org/show_bug.cgi?id=158674
1810
1811         Reviewed by Michael Saboff.
1812         
1813         x / 3 * 3 is not how you round down to multiples of 3 in JavaScript. You need to do
1814         Math.floor(x / 3) * 3 instead.
1815         
1816         This is a benign change, because having extra arguments to a Shuffle is not something we
1817         actually take advantage of yet. But I think it's best to match the original C++ code's
1818         intent.
1819
1820         * Air.js/custom.js:
1821         (const.ShuffleCustom.forEachArg):
1822
1823 2016-06-11  Filip Pizlo  <fpizlo@apple.com>
1824
1825         Unreviewed, skip Air.js. It got unskipped when I renamed it from JSAir.
1826
1827         * Skipped:
1828
1829 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1830
1831         Make it easy to package Air.js
1832         https://bugs.webkit.org/show_bug.cgi?id=158652
1833
1834         Reviewed by Benjamin Poulain.
1835         
1836         If you want to give Air.js to someone, you can now do:
1837         
1838         cd PerformanceTests/Air.js
1839         ./make_dist.sh
1840         
1841         This will create Air.js.tar.gz and a directory called Air.js. If you want to send someone
1842         the benchmark, just send either of those things and tell them to look at index.html.
1843         
1844         You may have to edit make_dist.sh for wherever you have Markdown.pl. You can get that from
1845         https://daringfireball.net/projects/markdown/
1846
1847         * Air.js/make_dist.sh: Added.
1848         * Air.js/test.html:
1849
1850 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1851
1852         Unreviewed, make the link to test.html into an actual link.
1853
1854         * Air.js/README.md:
1855
1856 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1857
1858         Fix some text in Air.js/README.md
1859         https://bugs.webkit.org/show_bug.cgi?id=158650
1860
1861         Reviewed by Benjamin Poulain.
1862         
1863         I read the text again and found bugs:
1864         
1865         - We never actually say how to run the benchmark. This change adds a blurb about how to run
1866           it.
1867
1868         - We both say that allocateStack is responsible for the bulk of the running time and that
1869           we haven't measured where the bulk of the time is spent. This changes the text to say that
1870           it was a goal to make allocateStack be the hottest part of the benchmark, but that we did
1871           not measure this.
1872
1873         * Air.js/README.md:
1874
1875 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1876
1877         Air.js should have some documentation
1878         https://bugs.webkit.org/show_bug.cgi?id=158648
1879
1880         Reviewed by Keith Miller.
1881         
1882         I want to be able to point people at a document if they want to know more about this
1883         benchmark.
1884
1885         * Air.js/README.md: Added.
1886
1887 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1888
1889         Rename JSAir to Air.js.
1890
1891         Rubber stamped by Mark Lam.
1892
1893         * Air.js: Copied from PerformanceTests/JSAir.
1894         * Air.js/airjs-tests.yaml: Copied from PerformanceTests/JSAir/jsair-tests.yaml.
1895         * Air.js/benchmark.js: Copied from PerformanceTests/JSAir/benchmark.js.
1896         (Benchmark):
1897         * Air.js/jsair-tests.yaml: Removed.
1898         * Air.js/payload-airjs-ACLj8C.js: Copied from PerformanceTests/JSAir/payload-jsair-ACLj8C.js.
1899         * Air.js/payload-jsair-ACLj8C.js: Removed.
1900         * Air.js/stress-test.js: Copied from PerformanceTests/JSAir/stress-test.js.
1901         * Air.js/test.html: Copied from PerformanceTests/JSAir/test.html.
1902         * Air.js/test.js: Copied from PerformanceTests/JSAir/test.js.
1903         * JSAir: Removed.
1904         * JSAir/all.js: Removed.
1905         * JSAir/allocate_stack.js: Removed.
1906         * JSAir/arg.js: Removed.
1907         * JSAir/basic_block.js: Removed.
1908         * JSAir/benchmark.js: Removed.
1909         * JSAir/code.js: Removed.
1910         * JSAir/custom.js: Removed.
1911         * JSAir/frequented_block.js: Removed.
1912         * JSAir/insertion_set.js: Removed.
1913         * JSAir/inst.js: Removed.
1914         * JSAir/jsair-tests.yaml: Removed.
1915         * JSAir/liveness.js: Removed.
1916         * JSAir/opcode.js: Removed.
1917         * JSAir/payload-gbemu-executeIteration.js: Removed.
1918         * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
1919         * JSAir/payload-jsair-ACLj8C.js: Removed.
1920         * JSAir/payload-typescript-scanIdentifier.js: Removed.
1921         * JSAir/reg.js: Removed.
1922         * JSAir/stack_slot.js: Removed.
1923         * JSAir/stress-test.js: Removed.
1924         * JSAir/strip-hash.rb: Removed.
1925         * JSAir/symbols.js: Removed.
1926         * JSAir/test.html: Removed.
1927         * JSAir/test.js: Removed.
1928         * JSAir/tmp.js: Removed.
1929         * JSAir/tmp_base.js: Removed.
1930         * JSAir/util.js: Removed.
1931
1932 2016-06-10  Filip Pizlo  <fpizlo@apple.com>
1933
1934         JSC Stress Test failing: jsair-tests.yaml/test.js.ftl-eager-no-cjit
1935         https://bugs.webkit.org/show_bug.cgi?id=158571
1936
1937         Reviewed by Keith Miller.
1938         
1939         Introduce a different harness for run-jsc-stress-tests, which runs for a minimum of 10
1940         iterations and then tries to do any number of "bonus" iterations until it's been running for
1941         two seconds. Since this is the sort of test that isn't really meant to stress anything in
1942         particular, I think it's OK if it is time-limited in this way. The worst case is that some
1943         of its failures will be flaky, but I think that they would have been flaky anyway given the
1944         complexity of the test.
1945
1946         * JSAir/benchmark.js:
1947         (Benchmark):
1948         (Benchmark.prototype.runIteration):
1949         (benchmark): Deleted.
1950         * JSAir/jsair-tests.yaml:
1951         * JSAir/stress-test.js: Added.
1952         (preciseTime):
1953         * JSAir/test.html:
1954         * JSAir/test.js:
1955
1956 2016-06-09  Filip Pizlo  <fpizlo@apple.com>
1957
1958         Unreviewed, teach the perf bots not to run JSAir.
1959
1960         * Skipped:
1961
1962 2016-06-08  Filip Pizlo  <fpizlo@apple.com>
1963
1964         Use more ES6 features in JSAir
1965         https://bugs.webkit.org/show_bug.cgi?id=158497
1966
1967         Reviewed by Keith Miller.
1968         
1969         This improves JSAir with the following ES6 features suggested by JoePeck:
1970         
1971         - String interpolation.
1972         - Destructuring inside PatchCustom.
1973         - Default arguments.
1974         
1975         All of these things are on hot paths.
1976         
1977         Note that I didn't use string interpolation everywhere that I could, only in those places
1978         where it made the code more readable. In Ruby, I used the style that if the interpolation
1979         expression has any non-trivial stuff (like a ternary operator, a chain of calls, or embedded
1980         strings) then it's better to use regular strcat. I think that's what I carried over to here.
1981         
1982         Note that the previous change (Add result validation to JSAir) also made the Proxy code not
1983         dead, though it's not necessarily on the hot path. The Proxy isn't called into frequently
1984         but it's used from a function that is otherwise hot, so if calling into the Proxy prevents
1985         that function from being optimized then it will hurt so good.
1986         
1987         I also reenabled tail calls in a few places.
1988         
1989         This change doesn't seem to change the performance of the benchmark for us. That's expected
1990         since these ES6 features are cheap. Note that this claim doesn't include Proxy, which was
1991         added in a separate change and that change did make the benchmark overall more expensive.
1992
1993         * JSAir/allocate_stack.js:
1994         (allocateStack):
1995         * JSAir/arg.js:
1996         (Arg.createBitImm64):
1997         (Arg.createAddr):
1998         (Arg.createStack):
1999         (Arg.logScale):
2000         (Arg.createIndex):
2001         * JSAir/basic_block.js:
2002         (BasicBlock.get headerString):
2003         (BasicBlock.prototype.get if):
2004         (BasicBlock):
2005         * JSAir/benchmark.js:
2006         (benchmark):
2007         * JSAir/code.js:
2008         (Code):
2009         (Code.prototype.addBlock):
2010         (Code.prototype.addStackSlot):
2011         (Code.prototype.newTmp):
2012         (Code.prototype.get size):
2013         (Code.prototype.get blocks):
2014         (Code.prototype.get stackSlots):
2015         (Code.prototype.tmps):
2016         (Code.prototype.get callArgAreaSize):
2017         (Code.prototype.toString):
2018         * JSAir/custom.js:
2019         (const.PatchCustom.forEachArg):
2020         * JSAir/inst.js:
2021         (Inst):
2022         * JSAir/reg.js:
2023         (Reg.prototype.toString):
2024         * JSAir/util.js:
2025         (symbolName):
2026         (lowerSymbolName):
2027
2028 2016-06-07  Filip Pizlo  <fpizlo@apple.com>
2029
2030         Add result validation to JSAir
2031         https://bugs.webkit.org/show_bug.cgi?id=158493
2032
2033         Reviewed by Saam Barati.
2034         
2035         This adds the ability to hash a Code in a way that matches the C++ code's hashing of Code.
2036         This allows us to check if the Code that JSAir sees is the code that C++ saw. We use this to
2037         check the Code before and after allocateStack, and compare against hashes we got from C++.
2038         
2039         Doing this uncovered bugs. roundUpToMultipleOf wasn't doing anything. allocateStack was not
2040         allocating things correctly because I was concatting a Set to an Array, which doesn't really
2041         work. Now these bugs are fixed.
2042         
2043         The checking step adds to the running time so I reduced the number of iterations. The
2044         benchmark spends a decent amount of its time computing Code hashes; I think it's around 1/3
2045         total. This is probably OK. It's better to verify the results even if the running time is
2046         not all in the "core" of the algorithm.
2047         
2048         Also add a run-jsc-stress-tests yaml file to allow this to run as a test.
2049
2050         * JSAir/allocate_stack.js:
2051         * JSAir/arg.js:
2052         (Arg.createImm):
2053         (Arg.createBigImm):
2054         (Arg.createBitImm):
2055         (Arg.createBitImm64):
2056         (Arg.createWidth):
2057         (Arg.createSpecial):
2058         (Arg.prototype.get kind):
2059         (Arg.prototype.get isTmp):
2060         (Arg.prototype.get isImm):
2061         (Arg.prototype.get isSomeImm):
2062         (Arg.prototype.get isSomeBigImm):
2063         (Arg.prototype.get isCondition):
2064         (Arg.prototype.get isWidth):
2065         (Arg.prototype.get isSpecial):
2066         (Arg.prototype.get isAlive):
2067         (Arg.prototype.get tmp):
2068         (Arg.prototype.get value):
2069         (Arg.prototype.get lowValue):
2070         (Arg.prototype.get highValue):
2071         (Arg.prototype.get base):
2072         (Arg.prototype.get isGP):
2073         (Arg.prototype.get isFP):
2074         (Arg.prototype.isValidForm):
2075         (Arg.prototype.get isInvertible):
2076         (Arg.kindCode):
2077         (Arg.prototype.hash):
2078         (Arg.prototype.toString):
2079         (Arg):
2080         * JSAir/basic_block.js:
2081         (BasicBlock.get successorBlocks):
2082         * JSAir/benchmark.js:
2083         (benchmark):
2084         * JSAir/code.js:
2085         (Code.prototype.setFrameSize):
2086         (Code.prototype.hash):
2087         (Code.prototype.toString):
2088         (Code):
2089         * JSAir/inst.js:
2090         (Inst.prototype.get hasNonArgEffects):
2091         (Inst.prototype.hash):
2092         (Inst.prototype.toString):
2093         (Inst):
2094         * JSAir/jsair-tests.yaml: Added.
2095         * JSAir/opcode.js:
2096         (Inst_forEachArg):
2097         (Inst_hasNonArgEffects):
2098         (opcodeCode):
2099         * JSAir/payload-gbemu-executeIteration.js:
2100         (createPayloadGbemuExecuteIteration):
2101         * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js:
2102         (createPayloadImagingGaussianBlurGaussianBlur):
2103         * JSAir/payload-jsair-ACLj8C.js:
2104         (createPayloadJSAirACLj8C):
2105         * JSAir/payload-typescript-scanIdentifier.js:
2106         (createPayloadTypescriptScanIdentifier):
2107         * JSAir/reg.js:
2108         (Reg.prototype.get isReg):
2109         (Reg.prototype.hash):
2110         (Reg.prototype.toString):
2111         * JSAir/stack_slot.js:
2112         (StackSlot.prototype.setOffsetFromFP):
2113         (StackSlot.prototype.hash):
2114         (StackSlot.prototype.toString):
2115         * JSAir/symbols.js:
2116         (relCondCode):
2117         (resCondCode):
2118         (doubleCondCode):
2119         * JSAir/test.html:
2120         * JSAir/tmp.js:
2121         (Tmp.prototype.get isReg):
2122         (Tmp.prototype.hash):
2123         (Tmp.prototype.toString):
2124         * JSAir/util.js:
2125         (roundUpToMultipleOf):
2126         (symbolName):
2127
2128 2016-06-07  Filip Pizlo  <fpizlo@apple.com>
2129
2130         Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
2131         https://bugs.webkit.org/show_bug.cgi?id=158318
2132
2133         Reviewed by Saam Barati.
2134         
2135         This adds a new benchmark for us to play with called JSAir. It's a complete ES6
2136         implementation of Air's allocateStack() phase along with all of Air needed to run that
2137         phase. This includes things like stack slots, registers, temporaries, basic blocks,
2138         instructions, and all of the code for iterating over, inspecting, and modifying those
2139         things.
2140         
2141         To make this work, JSC can now dump Air just before allocateStack() in the form of JS code
2142         that creates a Code object that matches exactly what C++ Air saw. This benchmark comprises
2143         four Air IRs:
2144         
2145         - Octane/gbemu's largest function, executeIteration.
2146         - Kraken/imaging-gaussian-blur's largest function in OSR entry mode, gaussuanBlur.
2147         - Octane/typescript's largest function that is actually hot, scanIdentifier.
2148         - JSAir's largest hot function, which is anonymous, so we call it by its hash (ACLj8C).
2149         
2150         This runs in about 2 seconds on my machine in JSC trunk. It includes both a commandline
2151         harness and a web harness. JSAir is almost exactly 100x slower in ES6 in WebKit than the
2152         C++ Air::allocateStack() phase on which it is based.
2153         
2154         JSAir uses the following ES6 features:
2155         
2156         - Symbol.
2157         - for-of.
2158         - arrow functions.
2159         - Map/Set.
2160         - let/const.
2161         - classes.
2162         
2163         All of these things are used in anger and should end up on the hot path. There is also code
2164         that uses Proxies, but it ends up being dead.
2165         
2166         We can improve this even more:
2167         I still need to add result validation: https://bugs.webkit.org/show_bug.cgi?id=158493
2168         I want to make it use more ES6 features: https://bugs.webkit.org/show_bug.cgi?id=158497
2169         
2170         * JSAir: Added.
2171         * JSAir/all.js: Added.
2172         * JSAir/allocate_stack.js: Added.
2173         (allocateStack.attemptAssignment):
2174         (allocateStack.assign):
2175         (allocateStack.interfere):
2176         (allocateStack.):
2177         (allocateStack):
2178         * JSAir/arg.js: Added.
2179         (Arg):
2180         (Arg.isAnyUse):
2181         (Arg.isColdUse):
2182         (Arg.isWarmUse):
2183         (Arg.cooled):
2184         (Arg.isEarlyUse):
2185         (Arg.isLateUse):
2186         (Arg.isAnyDef):
2187         (Arg.isEarlyDef):
2188         (Arg.isLateDef):
2189         (Arg.isZDef):
2190         (Arg.typeForB3Type):
2191         (Arg.widthForB3Type):
2192         (Arg.conservativeWidth):
2193         (Arg.minimumWidth):
2194         (Arg.bytes):
2195         (Arg.widthForBytes):
2196         (Arg.createTmp):
2197         (Arg.fromReg):
2198         (Arg.createImm):
2199         (Arg.createBigImm):
2200         (Arg.createBitImm):
2201         (Arg.createBitImm64):
2202         (Arg.createAddr):
2203         (Arg.createStack):
2204         (Arg.createCallArg):
2205         (Arg.createStackAddr):
2206         (Arg.isValidScale):
2207         (Arg.logScale):
2208         (Arg.createIndex):
2209         (Arg.createRelCond):
2210         (Arg.createResCond):
2211         (Arg.createDoubleCond):
2212         (Arg.createWidth):
2213         (Arg.prototype.get kind):
2214         (Arg.prototype.get isTmp):
2215         (Arg.prototype.get isImm):
2216         (Arg.prototype.get isBigImm):
2217         (Arg.prototype.get isBitImm):
2218         (Arg.prototype.get isBitImm64):
2219         (Arg.prototype.get isSomeImm):
2220         (Arg.prototype.get isAddr):
2221         (Arg.prototype.get isStack):
2222         (Arg.prototype.get isCallArg):
2223         (Arg.prototype.get isIndex):
2224         (Arg.prototype.get isMemory):
2225         (Arg.prototype.get isStackMemory):
2226         (Arg.prototype.get isRelCond):
2227         (Arg.prototype.get isResCond):
2228         (Arg.prototype.get isDoubleCond):
2229         (Arg.prototype.get isCondition):
2230         (Arg.prototype.get isWidth):
2231         (Arg.prototype.get isAlive):
2232         (Arg.prototype.get tmp):
2233         (Arg.prototype.get value):
2234         (Arg.prototype.get base):
2235         (Arg.prototype.get hasOffset):
2236         (Arg.prototype.get offset):
2237         (Arg.prototype.get stackSlot):
2238         (Arg.prototype.get index):
2239         (Arg.prototype.get scale):
2240         (Arg.prototype.get logScale):
2241         (Arg.prototype.get width):
2242         (Arg.prototype.get isGPTmp):
2243         (Arg.prototype.get isFPTmp):
2244         (Arg.prototype.get isGP):
2245         (Arg.prototype.get isFP):
2246         (Arg.prototype.get hasType):
2247         (Arg.prototype.get type):
2248         (Arg.prototype.isType):
2249         (Arg.prototype.isCompatibleType):
2250         (Arg.prototype.get isGPR):
2251         (Arg.prototype.get gpr):
2252         (Arg.prototype.get isFPR):
2253         (Arg.prototype.get fpr):
2254         (Arg.prototype.get isReg):
2255         (Arg.prototype.get reg):
2256         (Arg.isValidImmForm):
2257         (Arg.isValidBitImmForm):
2258         (Arg.isValidBitImm64Form):
2259         (Arg.isValidAddrForm):
2260         (Arg.isValidIndexForm):
2261         (Arg.prototype.isValidForm):
2262         (Arg.prototype.forEachTmpFast):
2263         (Arg.prototype.usesTmp):
2264         (Arg.prototype.forEachTmp):
2265         (Arg.prototype.is):
2266         (Arg.prototype.as):
2267         (Arg.prototype.forEachFast):
2268         (Arg.prototype.forEach):
2269         (Arg.extract):
2270         (Arg.forEachFast):
2271         (Arg.forEach):
2272         (Arg.prototype.get condition):
2273         (Arg.prototype.get isInvertible):
2274         (Arg.prototype.toString):
2275         * JSAir/basic_block.js: Added.
2276         (BasicBlock):
2277         (BasicBlock.prototype.get index):
2278         (BasicBlock.prototype.get size):
2279         (BasicBlock.prototype.Symbol.iterator):
2280         (BasicBlock.prototype.at):
2281         (BasicBlock.get last):
2282         (BasicBlock.get insts):
2283         (BasicBlock.get numSuccessors):
2284         (BasicBlock.get successors):
2285         (BasicBlock.get successorBlocks.):
2286         (BasicBlock.get successorBlocks):
2287         (BasicBlock.set get numPredecessors):
2288         (BasicBlock.get predecessors):
2289         (BasicBlock.get frequency):
2290         (BasicBlock.get headerString):
2291         (BasicBlock.get footerString):
2292         * JSAir/benchmark.js: Added.
2293         (benchmark):
2294         * JSAir/code.js: Added.
2295         (Code):
2296         (Code.prototype.addBlock):
2297         (Code.prototype.addStackSlot):
2298         (Code.prototype.newTmp):
2299         (Code.prototype.get size):
2300         (Code.prototype.at):
2301         (Code.prototype.Symbol.iterator):
2302         (Code.prototype.get blocks):
2303         (Code.prototype.get stackSlots):
2304         (Code.prototype.tmps):
2305         (Code.prototype.get callArgAreaSize):
2306         (Code.prototype.requestCallArgAreaSize):
2307         (Code.prototype.get frameSize):
2308         (Code.prototype.setFrameSize):
2309         (Code.prototype.toString):
2310         * JSAir/custom.js: Added.
2311         (const.ShuffleCustom.forEachArg):
2312         (const.ShuffleCustom.hasNonArgNonControlEffects):
2313         (const.PatchCustom.forEachArg):
2314         (const.PatchCustom.hasNonArgNonControlEffects):
2315         (const.CCallCustom.forEachArg):
2316         (const.CCallCustom.hasNonArgNonControlEffects):
2317         (const.ColdCCallCustom.forEachArg):
2318         (const.ColdCCallCustom.hasNonArgNonControlEffects):
2319         * JSAir/frequented_block.js: Added.
2320         (FrequentedBlock):
2321         (FrequentedBlock.prototype.toString):
2322         * JSAir/insertion_set.js: Added.
2323         (Insertion):
2324         (Insertion.prototype.get index):
2325         (Insertion.prototype.get element):
2326         (Insertion.prototype.lessThan):
2327         (InsertionSet):
2328         (InsertionSet.prototype.appendInsertion):
2329         (InsertionSet.prototype.append):
2330         (InsertionSet.prototype.execute):
2331         * JSAir/inst.js: Added.
2332         (Inst):
2333         (Inst.prototype.append):
2334         (Inst.prototype.clear):
2335         (Inst.prototype.get opcode):
2336         (Inst.prototype.get args):
2337         (Inst.prototype.visitArg):
2338         (Inst.prototype.forEachTmpFast):
2339         (Inst.prototype.forEachArg):
2340         (Inst.prototype.forEachTmp):
2341         (Inst.prototype.forEach):
2342         (Inst.forEachDef):
2343         (Inst.forEachDefWithExtraClobberedRegs):
2344         (Inst.prototype.get hasNonArgEffects):
2345         (Inst.prototype.toString):
2346         * JSAir/liveness.js: Added.
2347         (Liveness):
2348         (Liveness.prototype.get thing):
2349         (Liveness.prototype.get code):
2350         (Liveness.prototype.get liveAtHead):
2351         (Liveness.prototype.get liveAtTail):
2352         (Liveness.prototype.localCalc.LocalCalc):
2353         (Liveness.prototype.localCalc.LocalCalc.prototype.get liveSet):
2354         (Liveness.prototype.localCalc.LocalCalc.prototype.execute):
2355         (Liveness.prototype.localCalc):
2356         * JSAir/opcode.js: Added.
2357         (Inst_forEachArg):
2358         (Inst_hasNonArgEffects):
2359         * JSAir/payload-gbemu-executeIteration.js: Added.
2360         (createPayloadGbemuExecuteIteration):
2361         * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Added.
2362         (createPayloadImagingGaussianBlurGaussianBlur):
2363         * JSAir/payload-jsair-ACLj8C.js: Added.
2364         (createPayloadJSAirACLj8C):
2365         * JSAir/payload-typescript-scanIdentifier.js: Added.
2366         (createPayloadTypescriptScanIdentifier):
2367         * JSAir/reg.js: Added.
2368         (Reg):
2369         (Reg.fromReg):
2370         (Reg.prototype.get index):
2371         (Reg.prototype.get type):
2372         (Reg.prototype.get name):
2373         (Reg.prototype.get isCalleeSave):
2374         (Reg.prototype.get isReg):
2375         (Reg.prototype.toString):
2376         (Reg.extract):
2377         (Reg.forEachFast):
2378         (Reg.forEach):
2379         (newGPR):
2380         (Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
2381         * JSAir/stack_slot.js: Added.
2382         (StackSlot):
2383         (StackSlot.prototype.get byteSize):
2384         (StackSlot.prototype.get kind):
2385         (StackSlot.prototype.get isLocked):
2386         (StackSlot.prototype.get isSpill):
2387         (StackSlot.prototype.get index):
2388         (StackSlot.prototype.ensureSize):
2389         (StackSlot.prototype.get alignment):
2390         (StackSlot.prototype.get offsetFromFP):
2391         (StackSlot.prototype.setOffsetFromFP):
2392         (StackSlot.prototype.toString):
2393         (StackSlot.extract):
2394         (StackSlot.forEachFast):
2395         (StackSlot.forEach):
2396         * JSAir/symbols.js: Added.
2397         * JSAir/test.html: Added.
2398         * JSAir/test.js: Added.
2399         * JSAir/tmp.js: Added.
2400         (Tmp):
2401         (Tmp.fromReg):
2402         (Tmp.prototype.get index):
2403         (Tmp.prototype.get type):
2404         (Tmp.prototype.get isReg):
2405         (Tmp.prototype.toString):
2406         (Tmp.extract):
2407         (Tmp.forEachFast):
2408         (Tmp.forEach):
2409         * JSAir/tmp_base.js: Added.
2410         (TmpBase.prototype.get isGP):
2411         (TmpBase.prototype.get isFP):
2412         (TmpBase.prototype.get isGPR):
2413         (TmpBase.prototype.get isFPR):
2414         (TmpBase.prototype.get reg):
2415         (TmpBase.prototype.get gpr):
2416         (TmpBase.prototype.get fpr):
2417         (TmpBase):
2418         * JSAir/util.js: Added.
2419         (isRepresentableAsInt32):
2420         (addIndexed):
2421         (roundUpToMultipleOf):
2422         (symbolName):
2423         (mergeIntoSet):
2424         (nonEmptyRangesOverlap):
2425         (rangesOverlap):
2426         (removeAllMatching):
2427         (swap):
2428         (bubble):
2429         (bubbleSort):
2430         (currentTime):
2431         (else.currentTime):
2432
2433 2016-05-26  Yusuke Suzuki  <utatane.tea@gmail.com>
2434
2435         [JSC] Allow JSBench to use precise time
2436         https://bugs.webkit.org/show_bug.cgi?id=158050
2437
2438         Reviewed by Geoffrey Garen.
2439
2440         * JSBench/amazon-chrome-win/urem.js:
2441         (else.window.performance.window.performance.now.currentTimeInMS):
2442         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2443         (else.else.currentTimeInMS):
2444         (onload.cb):
2445         (onload):
2446         * JSBench/amazon-chrome/urem.js:
2447         (else.window.performance.window.performance.now.currentTimeInMS):
2448         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2449         (else.else.currentTimeInMS):
2450         (onload.cb):
2451         (onload):
2452         * JSBench/amazon-firefox-win/urm.js:
2453         (else.window.performance.window.performance.now.currentTimeInMS):
2454         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2455         (else.else.currentTimeInMS):
2456         (onload.cb):
2457         (onload):
2458         * JSBench/amazon-firefox/urm.js:
2459         (else.window.performance.window.performance.now.currentTimeInMS):
2460         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2461         (else.else.currentTimeInMS):
2462         (onload.cb):
2463         (onload):
2464         * JSBench/amazon-safari/urem.js:
2465         (else.window.performance.window.performance.now.currentTimeInMS):
2466         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2467         (else.else.currentTimeInMS):
2468         (onload.cb):
2469         (onload):
2470         * JSBench/facebook-chrome-win/urem.js:
2471         (else.window.performance.window.performance.now.currentTimeInMS):
2472         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2473         (else.else.currentTimeInMS):
2474         (onload.cb):
2475         (onload):
2476         * JSBench/facebook-chrome/urem.js:
2477         (else.window.performance.window.performance.now.currentTimeInMS):
2478         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2479         (else.else.currentTimeInMS):
2480         (onload.cb):
2481         (onload):
2482         * JSBench/facebook-firefox-win/urem.js:
2483         (else.window.performance.window.performance.now.currentTimeInMS):
2484         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2485         (else.else.currentTimeInMS):
2486         (onload.cb):
2487         (onload):
2488         * JSBench/facebook-firefox/urem.js:
2489         (else.window.performance.window.performance.now.currentTimeInMS):
2490         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2491         (else.else.currentTimeInMS):
2492         (onload.cb):
2493         (onload):
2494         * JSBench/facebook-safari/urem.js:
2495         (else.window.performance.window.performance.now.currentTimeInMS):
2496         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2497         (else.else.currentTimeInMS):
2498         (onload.cb):
2499         (onload):
2500         * JSBench/google-chrome-win/urem.js:
2501         (else.window.performance.window.performance.now.currentTimeInMS):
2502         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2503         (else.else.currentTimeInMS):
2504         (onload.cb):
2505         (onload):
2506         * JSBench/google-chrome/urem.js:
2507         (else.window.performance.window.performance.now.currentTimeInMS):
2508         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2509         (else.else.currentTimeInMS):
2510         (onload.cb):
2511         (onload):
2512         * JSBench/google-firefox-win/urem.js:
2513         (else.window.performance.window.performance.now.currentTimeInMS):
2514         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2515         (else.else.currentTimeInMS):
2516         (onload.cb):
2517         (onload):
2518         * JSBench/google-firefox/uem.js:
2519         (else.window.performance.window.performance.now.currentTimeInMS):
2520         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2521         (else.else.currentTimeInMS):
2522         (onload.cb):
2523         (onload):
2524         * JSBench/google-safari/urem.js:
2525         (else.window.performance.window.performance.now.currentTimeInMS):
2526         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2527         (else.else.currentTimeInMS):
2528         (onload.cb):
2529         (onload):
2530         * JSBench/harness.js:
2531         (runBenchmark.window.currentTimeInMS):
2532         (runBenchmark.else.window.currentTimeInMS):
2533         * JSBench/twitter-chrome-win/rem.js:
2534         (else.window.performance.window.performance.now.currentTimeInMS):
2535         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2536         (else.else.currentTimeInMS):
2537         (onload.cb):
2538         (onload):
2539         * JSBench/twitter-chrome/urem.js:
2540         (else.window.performance.window.performance.now.currentTimeInMS):
2541         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2542         (else.else.currentTimeInMS):
2543         (onload.cb):
2544         (onload):
2545         * JSBench/twitter-firefox-win/urem.js:
2546         (else.window.performance.window.performance.now.currentTimeInMS):
2547         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2548         (else.else.currentTimeInMS):
2549         (onload.cb):
2550         (onload):
2551         * JSBench/twitter-firefox/urem.js:
2552         (else.window.performance.window.performance.now.currentTimeInMS):
2553         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2554         (else.else.currentTimeInMS):
2555         (onload.cb):
2556         (onload):
2557         * JSBench/twitter-safari/urem.js:
2558         (else.window.performance.window.performance.now.currentTimeInMS):
2559         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2560         (else.else.currentTimeInMS):
2561         (onload.cb):
2562         (onload):
2563         * JSBench/yahoo-chrome-win/urem.js:
2564         (else.window.performance.window.performance.now.currentTimeInMS):
2565         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2566         (else.else.currentTimeInMS):
2567         (onload.cb):
2568         (onload):
2569         * JSBench/yahoo-chrome/urem.js:
2570         (else.window.performance.window.performance.now.currentTimeInMS):
2571         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2572         (else.else.currentTimeInMS):
2573         (onload.cb):
2574         (onload):
2575         * JSBench/yahoo-firefox-win/urem.js:
2576         (else.window.performance.window.performance.now.currentTimeInMS):
2577         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2578         (else.else.currentTimeInMS):
2579         (onload.cb):
2580         (onload):
2581         * JSBench/yahoo-firefox/urem.js:
2582         (else.window.performance.window.performance.now.currentTimeInMS):
2583         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2584         (else.else.currentTimeInMS):
2585         (onload.cb):
2586         (onload):
2587         * JSBench/yahoo-safari/urem.js:
2588         (else.window.performance.window.performance.now.currentTimeInMS):
2589         (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
2590         (else.else.currentTimeInMS):
2591         (onload.cb):
2592         (onload):
2593
2594 2016-05-25  Geoffrey Garen  <ggaren@apple.com>
2595
2596         replaceable own properties seem to ignore replacement after property caching
2597         https://bugs.webkit.org/show_bug.cgi?id=158091
2598
2599         Reviewed by Darin Adler.
2600
2601         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
2602         * MallocBench/MallocBench/Benchmark.cpp:
2603         * MallocBench/MallocBench/Interpreter.cpp:
2604         (Interpreter::doMallocOp):
2605         * MallocBench/MallocBench/Interpreter.h:
2606         * MallocBench/MallocBench/fastMallocLog.63316.ops: Added.
2607         * MallocBench/MallocBench/jetstream.cpp: Added.
2608         (benchmark_jetstream):
2609         * MallocBench/MallocBench/jetstream.h: Added.
2610
2611 2016-05-25  Keith Miller  <keith_miller@apple.com>
2612
2613         Unreviewed, add JSBench to the skipped list for now since it doesn't
2614         work currently.
2615
2616         * Skipped:
2617
2618 2016-05-17  Keith Miller  <keith_miller@apple.com>
2619         We should have JSBench in PerformanceTests
2620         https://bugs.webkit.org/show_bug.cgi?id=157952
2621
2622         Rubber-stamped by Saam Barati.
2623
2624         There are some slight changes to the layout of the test directory
2625         to make it work nicely with run-jsc-benchmarks. Before JSBench
2626         had each of the browser specific sub-tests in a sub-directory.
2627         These have been flattened e.g. amazon/safari/ has become
2628         amazon-safari/.
2629
2630         * JSBench/amazon-chrome-win/urem.html: Added.
2631         * JSBench/amazon-chrome-win/urem.js: Added.
2632         * JSBench/amazon-chrome/urem.html: Added.
2633         * JSBench/amazon-chrome/urem.js: Added.
2634         * JSBench/amazon-firefox-win/urm.html: Added.
2635         * JSBench/amazon-firefox-win/urm.js: Added.
2636         * JSBench/amazon-firefox/urm.html: Added.
2637         * JSBench/amazon-firefox/urm.js: Added.
2638         * JSBench/amazon-safari/urem.html: Added.
2639         * JSBench/amazon-safari/urem.js: Added.
2640         * JSBench/browsercheck.js: Added.
2641         * JSBench/facebook-chrome-win/urem.html: Added.
2642         * JSBench/facebook-chrome-win/urem.js: Added.
2643         * JSBench/facebook-chrome/urem.html: Added.
2644         * JSBench/facebook-chrome/urem.js: Added.
2645         * JSBench/facebook-firefox-win/urem.html: Added.
2646         * JSBench/facebook-firefox-win/urem.js: Added.
2647         * JSBench/facebook-firefox/urem.html: Added.
2648         * JSBench/facebook-firefox/urem.js: Added.
2649         * JSBench/facebook-safari/urem.html: Added.
2650         * JSBench/facebook-safari/urem.js: Added.
2651         * JSBench/google-chrome-win/urem.html: Added.
2652         * JSBench/google-chrome-win/urem.js: Added.
2653         * JSBench/google-chrome/urem.html: Added.
2654         * JSBench/google-chrome/urem.js: Added.
2655         * JSBench/google-firefox-win/urem.html: Added.
2656         * JSBench/google-firefox-win/urem.js: Added.
2657         * JSBench/google-firefox/uem.html: Added.
2658         * JSBench/google-firefox/uem.js: Added.
2659         * JSBench/google-safari/urem.html: Added.
2660         * JSBench/google-safari/urem.js: Added.
2661         * JSBench/harness.html: Added.
2662         * JSBench/harness.js: Added.
2663         * JSBench/harness.py: Added.
2664         * JSBench/index.html: Added.
2665         * JSBench/reload.html: Added.
2666         * JSBench/twitter-chrome-win/rem.html: Added.
2667         * JSBench/twitter-chrome-win/rem.js: Added.
2668         * JSBench/twitter-chrome/urem.html: Added.
2669         * JSBench/twitter-chrome/urem.js: Added.
2670         * JSBench/twitter-firefox-win/urem.html: Added.
2671         * JSBench/twitter-firefox-win/urem.js: Added.
2672         * JSBench/twitter-firefox/urem.html: Added.
2673         * JSBench/twitter-firefox/urem.js: Added.
2674         * JSBench/twitter-safari/urem.html: Added.
2675         * JSBench/twitter-safari/urem.js: Added.
2676         * JSBench/yahoo-chrome-win/urem.html: Added.
2677         * JSBench/yahoo-chrome-win/urem.js: Added.
2678         * JSBench/yahoo-chrome/urem.html: Added.
2679         * JSBench/yahoo-chrome/urem.js: Added.
2680         * JSBench/yahoo-firefox-win/urem.html: Added.
2681         * JSBench/yahoo-firefox-win/urem.js: Added.
2682         * JSBench/yahoo-firefox/urem.html: Added.
2683         * JSBench/yahoo-firefox/urem.js: Added.
2684         * JSBench/yahoo-safari/urem.html: Added.
2685         * JSBench/yahoo-safari/urem.js: Added.
2686
2687 2016-05-20  Ryosuke Niwa  <rniwa@webkit.org>
2688
2689         run-benchmark's results should contain Animometer's debug output
2690         https://bugs.webkit.org/show_bug.cgi?id=157941
2691
2692         Reviewed by Stephanie Lewis.
2693
2694         Made developer.html support the JSON generated by run-benchmark which stores everything under debugOutput.
2695
2696         * Animometer/resources/debug-runner/animometer.js:
2697         (Utilities.initialize): Unwrap debugOutput in the case run-benchmark's result JSON is used.
2698
2699 2016-05-18  Timothy Hatcher  <timothy@apple.com>
2700
2701         Make Animometer work in all browsers
2702         https://bugs.webkit.org/show_bug.cgi?id=157855
2703         rdar://problem/26338521
2704
2705         Reviewed by Jon Lee.
2706
2707         * Animometer/resources/runner/logo.svg: Use a symbol instead
2708         of putting the id on the root svg. This works in all browsers.
2709
2710 2016-05-07  Timothy Hatcher  <timothy@apple.com>
2711
2712         Update Animometer design
2713         https://bugs.webkit.org/show_bug.cgi?id=157449
2714
2715         Reviewed by Darin Adler.
2716
2717         * Animometer/developer.html: Stop including runner/animometer.css.
2718         * Animometer/index.html: Udpated elements to fit new styles.
2719
2720         * Animometer/resources/debug-runner/animometer.css:
2721         Copy the old runner/animometer.css to here so the debug runner is unaffected.
2722
2723         * Animometer/resources/runner/animometer.css:
2724         New styles for the design. Drop flex box for broad browser support.
2725
2726         * Animometer/resources/runner/animometer.js:
2727         (ResultsTable.clear): Use textContent.
2728         (window.sectionsManager.showSection): Add class to the body.
2729         (window.sectionsManager.setSectionScore): Use textContent, not innerHTML.
2730
2731         * Animometer/resources/runner/crystal.svg: Added.
2732         * Animometer/resources/runner/lines.svg: Added.
2733         * Animometer/resources/runner/logo.svg: Added.
2734
2735         * Animometer/resources/runner/tests.js: Shorten test name and title case them.
2736
2737 2016-05-06  Manuel Rego Casasnovas  <rego@igalia.com>
2738
2739         [css-grid] Unprefix CSS Grid Layout properties
2740         https://bugs.webkit.org/show_bug.cgi?id=157137
2741
2742         Reviewed by Simon Fraser.
2743
2744         Remove "-webkit" prefix from all the grid layout properties,
2745         including the display value.
2746         Update the source code to remove the prefix where it was used too.
2747
2748         * Layout/auto-grid-lots-of-data.html:
2749         * Layout/fixed-grid-lots-of-data.html:
2750         * Layout/fixed-grid-lots-of-stretched-data.html:
2751
2752 2016-04-25  Geoffrey Garen  <ggaren@apple.com>
2753
2754         bmalloc: Misc improvements to MallocBench
2755         https://bugs.webkit.org/show_bug.cgi?id=157004
2756
2757         Reviewed by Darin Adler.
2758
2759         * MallocBench/run-malloc-benchmarks: Added --memory and --memory_warning
2760         modes for focused memory testing.
2761
2762         * MallocBench/MallocBench/Benchmark.cpp:
2763         (Benchmark::printReport): Clarified output.
2764
2765         (Benchmark::currentMemoryBytes): Added compressed memory because top
2766         does the same. (It always happens to zero in the benchmarks we run. But
2767         this is good for sanity.)
2768
2769         * MallocBench/MallocBench/CommandLine.cpp: Moved up to 8 runs to reduce
2770         variance.
2771
2772         * MallocBench/MallocBench/alloc_free.cpp:
2773         (benchmark_alloc_free): Cycle a single allocation in order to stress
2774         the effect of merging on calls to madvise.
2775
2776         * MallocBench/MallocBench/big.cpp:
2777         (benchmark_big): Graduated to 8kB-128kB because medium tests up to 8 and
2778         our large allocator doesn't kick in until 64kB.
2779
2780         * MallocBench/MallocBench/medium.cpp:
2781         (benchmark_medium): Test all the way down to 1kB because our large
2782         allocator used to service 1kB allocations and 1kB is an interesting
2783         middle size where memory is unusually large but allocation throughput
2784         still matters.
2785
2786         * MallocBench/MallocBench/stress.cpp:
2787         (benchmark_stress): Reduced the churn count to match stress_aligned
2788         because this test was taking too long to complete.
2789
2790         * MallocBench/MallocBench/stress_aligned.cpp:
2791         (benchmark_stress_aligned): Our new large allocator can handle even
2792         more absurdly large values.
2793
2794 2016-04-25  Simon Fraser  <simon.fraser@apple.com>
2795
2796         Add a content animation test that uses SVG animation.
2797         https://bugs.webkit.org/show_bug.cgi?id=156827
2798
2799         * Animation/svg-animation.html: Added.
2800         * Skipped:
2801
2802 2016-04-22  Simon Fraser  <simon.fraser@apple.com>
2803
2804         Skip two content animation tests which are only meant for iOS testing.
2805
2806         * Animation/css-animation.html: Added.
2807         * Animation/raf-animation.html: Added.
2808
2809         * Skipped:
2810
2811 2016-04-20  Simon Fraser  <simon.fraser@apple.com>
2812
2813         Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
2814         https://bugs.webkit.org/show_bug.cgi?id=156827
2815
2816         Add two files missing from the previous commit.
2817
2818         * Animation/css-animation.html: Added.
2819         * Animation/raf-animation.html: Added.
2820
2821 2016-04-20  Simon Fraser  <simon.fraser@apple.com>
2822
2823         Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
2824         https://bugs.webkit.org/show_bug.cgi?id=156827
2825
2826         Reviewed by Stephanie Lewis.
2827
2828         Two new files for the content-animation suite.
2829
2830         After patching for use in the benchmark, these tests are a little different to other benchmarks.
2831         The test content itself does not collect performance data; the tests spit out a boilerplate JSON
2832         result with a placeholder for framerate, which is collected in native code.
2833
2834         When run as a benchmark, test completion involves a couple of bounces between the test and MobileSafari.
2835         Test completion is initiated by a setTimeout() in the test, at which point location.hash is set to "#done".
2836         MobileSafari detects that, and asynchronously dumps performance data. Once this is complete, MobileSafari
2837         changes the URL has to "#submit", which triggers the XHR to the test relay that indicates the test is
2838         complete.
2839
2840         * Animation/css-animation.html: Added.
2841         * Animation/raf-animation.html: Added.
2842
2843 2016-04-15  Jon Lee  <jonlee@apple.com>
2844
2845         Animometer test could report a NaN
2846         https://bugs.webkit.org/show_bug.cgi?id=156646
2847
2848         Reviewed by Darin Adler.
2849         Provisionally reviewed by Said Abou-Hallawa.
2850
2851         * Animometer/tests/resources/main.js:
2852         (didFinishInterval): The ramp controller has a first phase where it ramps up the complexity and
2853         reacts based on how well the system handles the load. The assumption was that it would handle at least
2854         1 particle easily. That is not always the case. As a result, an interpolation calculation could
2855         end up setting an upper bound of NaN.
2856
2857         This occurs because we never get out of the first tier, so this._lastTierComplexity is undefined.
2858         Now that we guarantee a minimum complexity of 1, modify the conditional to check for this._lastTierComplexity
2859         before interpolating the upper bound of the first ramp. In the case where the system struggles with
2860         1 particle, set it to currentComplexity.
2861
2862 2016-04-09  Jon Lee  <jonlee@apple.com>
2863
2864         Update Animometer to accommodate different screens
2865         https://bugs.webkit.org/show_bug.cgi?id=156449
2866
2867         Reviewed by Darin Adler.
2868         Provisionally reviewed by Said Abou-Hallawa.
2869
2870         * Animometer/index.html: Wrap button in a container to add padding at the bottom.
2871         * Animometer/resources/debug-runner/animometer.css:
2872         (@media screen and (min-device-width: 1800px)): Deleted.
2873         (@media screen and (min-width: 1800px)): Cannot use min-device-width since it may match incorrectly.
2874         (screen and (max-device-height: 414px) and (orientation: landscape)): Some devices swap device width
2875         and height with orientation change.
2876         * Animometer/resources/runner/animometer.css: Similar.
2877         (screen and (min-device-width: 1024px) and (orientation: landscape)):
2878         (screen and (max-device-height: 414px) and (orientation: landscape)):
2879         (.frame-container): On smaller iPhones, adding 1px prevents the navigation bars from appearing.
2880         (@media screen and (min-device-width: 768px) and (max-device-width: 1024px)): Deleted.
2881         (@media (min-device-height: 768px) and (max-device-height: 1024px)): Target iPad Airs and similar.
2882         (@media screen and (min-device-width: 1024px) and (max-device-width: 1366px)): Deleted.
2883         (@media screen and (max-device-width: 1024px) and (min-device-height: 1366px)): Target iPad Pro.
2884         (#results footer): Add padding below the button for testing again.
2885         * Animometer/tests/master/multiply.html: Remove the center text.
2886         * Animometer/tests/master/resources/text.js: Update the test so that in every frame the text moves.
2887         * Animometer/tests/master/text.html: Update the text sizing depending on the size of the device.
2888
2889 2016-04-08  Jon Lee  <jonlee@apple.com>
2890
2891         Have Animometer benchmark always start with complexity of 1
2892         https://bugs.webkit.org/show_bug.cgi?id=156432
2893
2894         Reviewed by Ryosuke Niwa.
2895
2896         * Animometer/tests/resources/main.js: Update the default Controller and RampController to
2897         set its minimum complexities to 1 instead of 0.
2898
2899 2016-04-08  Jon Lee  <jonlee@apple.com>
2900
2901         Fix SVG benchmark test
2902         https://bugs.webkit.org/show_bug.cgi?id=156410
2903
2904         Reviewed by Dean Jackson.
2905
2906         * Animometer/resources/extensions.js: Update Point.zero to be a static Point.
2907         * Animometer/tests/simple/resources/tiled-canvas-image.js:
2908         (Stage.call._setupTiles): Refactor.
2909         * Animometer/tests/master/resources/particles.js:
2910         (Particle.prototype.reset): Use Point.center.
2911         (complexity): We are not using a gradient background anymore, so remove the +1.
2912         * Animometer/tests/master/resources/svg-particles.js: Update to use SVG transform
2913         instead of CSS transform.
2914
2915 2016-04-06  Jon Lee  <jonlee@apple.com>
2916
2917         Update master benchmark with SVG test
2918         https://bugs.webkit.org/show_bug.cgi?id=156273
2919
2920         Reviewed by Dean Jackson.
2921         Provisionally reviewed by Said Abou-Hallawa.
2922
2923         Switch masks tests for SVG path test.
2924
2925         * Animometer/resources/debug-runner/tests.js: Move mask test here.
2926         * Animometer/resources/runner/tests.js: Add SVG test here.
2927         * Animometer/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/master/particles.html.
2928         * Animometer/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/dom-particles.js.
2929
2930         * Animometer/tests/master/resources/particles.js: Add minPosition for bounds checking. Prevents particle from being
2931         partially obscured.
2932         * Animometer/tests/master/resources/svg-particles.js: Added.
2933         (Particle): The particle is either a path object or a rect using a path as a clip. The
2934         same path is used either way. For each particle create a linear gradient with a random
2935         rotation.
2936         (SVGParticlesStage): Look in #shapes to see how many different kinds of paths are available.
2937         This makes the test more generic in case other shapes need to be tested.
2938         * Animometer/tests/master/svg-particles.html: Added. Have two defs, one that houses each
2939         particle's gradient, and one that holds the shape templates.
2940
2941 2016-03-27  Hunseop Jeong  <hs85.jeong@samsung.com>
2942
2943         [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
2944         https://bugs.webkit.org/show_bug.cgi?id=148470 
2945
2946         Reviewed by Darin Adler.
2947
2948         * Skipped: Unskip the Bindings/event-target-wrapper test.
2949
2950 2016-03-23  Jon Lee  <jonlee@apple.com>
2951
2952         Update focus and leaves tests
2953         https://bugs.webkit.org/show_bug.cgi?id=155825
2954
2955         Reviewed by Simon Fraser.
2956
2957         Particles would improperly disappear, before they were fully off stage. Update the calculation.
2958         * Animometer/tests/dom/resources/leaves.js:
2959         * Animometer/tests/master/resources/leaves.js:
2960
2961         * Animometer/tests/master/focus.html: Update the center element styling.
2962         * Animometer/tests/master/resources/focus.js:
2963         (FocusElement.Utilities.createClass): Give enough space in the container for each particle for the blur
2964         to spread. It should be about 3x more space than the blur radius on each side.
2965         (Stage.call.initialize): Ditto for the center element.
2966
2967 2016-03-23  Jon Lee  <jonlee@apple.com>
2968
2969         Update support for other platforms
2970         https://bugs.webkit.org/show_bug.cgi?id=155824
2971
2972         Reviewed by Simon Fraser.
2973
2974         * Animometer/resources/debug-runner/animometer.css: Remove extraneous media query. All of it should
2975         be handled in the release stylesheet.
2976         * Animometer/resources/debug-runner/animometer.js: Add support for browsers that return an HTMLCollection
2977         when retrieving radio elements with a name, instead of the selected value.
2978         * Animometer/resources/runner/animometer.css: Adjust the queries for devices of varying widths.
2979         (.frame-container): Move overflow:hidden to #stage.
2980         * Animometer/tests/master/resources/stage.css: Consolidate into tests/resources/stage.css.
2981         * Animometer/tests/resources/stage.css:
2982         (body): Remove overflow:hidden.
2983         (#stage): Set overflow:hidden here.
2984         (#center-text): Moved from master/resources/stage.css.
2985
2986         Update stylesheet hrefs.
2987         * Animometer/tests/master/canvas-stage.html:
2988         * Animometer/tests/master/focus.html:
2989         * Animometer/tests/master/leaves.html:
2990         * Animometer/tests/master/multiply.html:
2991         * Animometer/tests/master/particles.html:
2992         * Animometer/tests/master/text.html: Adjust text size to fit in the device screen.
2993
2994 2016-03-23  Jon Lee  <jonlee@apple.com>
2995
2996         Make the benchmark require device to be in landscape orientation
2997         https://bugs.webkit.org/show_bug.cgi?id=155822
2998         rdar://problem/25258650
2999
3000         Reviewed by Ryosuke Niwa.
3001
3002         Check that the device is in landscape orientation. If not, disable the button to start it,
3003         and show a warning message.
3004
3005         * Animometer/developer.html: Add a message about how the browser should be set up. Include a
3006         warning message that appears if the orientation is incorrect on mobile devices.
3007         * Animometer/index.html: Ditto.
3008
3009         * Animometer/resources/debug-runner/animometer.css: Migrate the .hidden rule into the release
3010         stylesheet. Update the style to accommodate the new UI.
3011         * Animometer/resources/runner/animometer.css:
3012
3013         * Animometer/resources/runner/animometer.js:
3014         (window.benchmarkController.initialize): Add the orientation listener is needed.
3015         (window.benchmarkController.addOrientationListenerIfNecessary): Only mobile devices need this. Check
3016         to see for support of window.orientation.
3017         (window.benchmarkController._orientationChanged): Toggle the warning based on whether we match the
3018         landscape query. Set a state variable, which is needed for the debug harness. Call updateStartButtonState.
3019         (window.benchmarkController.updateStartButtonState):
3020         * Animometer/resources/debug-runner/animometer.js: Change _updateStartButtonState to return
3021         a boolean about whether at least one test is selected. That will be used in
3022         benchmarkController.updateStartButtonState(). Move the load event listener to the release version.
3023         (window.benchmarkController.updateStartButtonState): Override the release version, and also check
3024         that at least one test is selected.
3025
3026 2016-03-22  Geoffrey Garen  <ggaren@apple.com>
3027
3028         MallocBench: consolidate regression testing for aligned allocation
3029         https://bugs.webkit.org/show_bug.cgi?id=155762
3030
3031         Reviewed by Michael Saboff.
3032
3033         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
3034         * MallocBench/MallocBench/Benchmark.cpp:
3035         * MallocBench/MallocBench/memalign.cpp: Removed.
3036         * MallocBench/MallocBench/memalign.h: Removed. The stress_aligned test
3037         covers this and much more.
3038
3039         * MallocBench/MallocBench/stress_aligned.cpp:
3040         (benchmark_stress_aligned): Include specific tests for extreme sizes
3041         and alignments.
3042
3043 2016-03-21  Jon Lee  <jonlee@apple.com>
3044
3045         Update benchmark tests
3046         https://bugs.webkit.org/show_bug.cgi?id=155723
3047
3048         Reviewed by Darin Adler.
3049         Provisionally reviewed by Said Abou-Hallawa.
3050
3051         Add quadratic and bezier segments to the canvas path test.
3052
3053         * Animometer/resources/runner/tests.js: Some of the query strings are unnecessary.
3054         Rename the test.
3055         * Animometer/tests/master/resources/canvas-stage.js:
3056         (tune): Update to be able to take an array of possible constructors. Choose one randomly.
3057         * Animometer/tests/master/resources/canvas-tests.js:
3058         (CanvasLinePoint.Utilities.createClass): Move the point selection out to a separate
3059         function called randomPoint() for reuse. Move X_LOOPS, Y_LOOPS, and offsets into the
3060         class definition.
3061         (randomPoint): Scale the grid down a little bit so that the lines along the edge of the
3062         canvas are not cut off when the stroke size is thick.
3063         (CanvasQuadraticSegment): Added.
3064         (CanvasBezierSegment): Added.
3065         (SimpleCanvasStage): Pass in an array of the different segment types. Since line segments
3066         are short compared to the curved ones, make it twice as likely to render a line segment.
3067         (SimpleCanvasStage.animate): Update the drawing code so that we render all line segments.
3068
3069         Add a helper method that selects a random element from an array.
3070
3071         * Animometer/tests/resources/main.js:
3072         (Stage.randomElementInArray): Select a random element from the provided array.
3073
3074         * Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Refactor.
3075         * Animometer/tests/dom/resources/leaves.js: Ditto.
3076         * Animometer/tests/master/resources/dom-particles.js: Ditto.
3077         * Animometer/tests/master/resources/image-data.js: Ditto.
3078         * Animometer/tests/master/resources/leaves.js: Ditto.
3079         * Animometer/tests/simple/resources/simple-canvas-paths.js: Ditto.
3080
3081         Add canvas tests that includes all stroke and fill paths. This makes it possible to avoid having to
3082         include the full simple canvas suite for perf testing.
3083
3084         * Animometer/resources/debug-runner/tests.js: Add new tests. Move the canvas test into the Canvas
3085         suite.
3086         * Animometer/tests/simple/resources/simple-canvas-paths.js: Add a CanvasStroke and CanvasFill particle
3087         that random selects an object to render.
3088
3089         * Animometer/resources/debug-runner/tests.js: Move 3D suite before basic canvas suite.
3090         When updating the perf bot script, we will include the suites up to this one, but exclude
3091         the basic canvas suite.
3092
3093         Move compositing transforms test to HTML suite and remove the empty Miscellaneous suite.
3094
3095         * Animometer/resources/debug-runner/tests.js:
3096         * Animometer/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/misc/compositing-transforms.html.
3097         * Animometer/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js.
3098
3099         Clean up miscellaneous test suite. Add a canvas ellipse test, and remove the other
3100         canvas tests.
3101
3102         * Animometer/resources/debug-runner/tests.js: Add ellipse tests to the simple suite.
3103         * Animometer/tests/misc/canvas-electrons.html: Removed.
3104         * Animometer/tests/misc/canvas-stars.html: Removed.
3105         * Animometer/tests/misc/resources/canvas-electrons.js: Removed.
3106         * Animometer/tests/misc/resources/canvas-stars.js: Removed.
3107         * Animometer/tests/simple/resources/simple-canvas-paths.js: Add ellipse primitives.
3108
3109         Merge text tests together into one.
3110
3111         * Animometer/resources/runner/tests.js: Remove international.html.
3112         * Animometer/tests/master/international.html: Removed.
3113         * Animometer/tests/master/resources/text.js:
3114         (animate): Update styling. Manually calculate gradients for the shadow particles.
3115         Reduce the step size for y direction to avoid cutting text off at the margins. Increase
3116         step for x since there will be a little more room.
3117         * Animometer/tests/master/text.html: Add more translations and lay it out in a table.
3118
3119 2016-03-20  Jon Lee  <jonlee@apple.com>
3120
3121         Add a link to show debug data
3122         https://bugs.webkit.org/show_bug.cgi?id=155724
3123
3124         Reviewed by Simon Fraser.
3125
3126         * Animometer/developer.html: Attach the onclick handler to the score.
3127         * Animometer/index.html: Ditto.
3128
3129 2016-03-18  Dean Jackson  <dino@apple.com>
3130
3131         Add a basic WebGL test to Animometer
3132         https://bugs.webkit.org/show_bug.cgi?id=155475
3133         <rdar://problem/25156860>
3134
3135         Reviewed by Simon Fraser and Jon Lee.
3136
3137         Add a pretty simple WebGL test to Animometer
3138         which tries to draw a number of animated triangles.
3139         The result still needs a bit of tuning.
3140
3141         * Animometer/resources/debug-runner/tests.js: Add a new
3142         Suite for "3D" tests.
3143         * Animometer/tests/3d/resources/webgl.js: Added.
3144         * Animometer/tests/3d/webgl.html: Added.
3145
3146 2016-03-18  Jon Lee  <jonlee@apple.com>
3147
3148         Add support for statically linking to a specific test
3149         https://bugs.webkit.org/show_bug.cgi?id=155631
3150
3151         Rubber-stamped by Darin Adler.
3152
3153         * Animometer/developer.html: Update to call restartBenchmark instead so that it works for
3154         both the preset and the manually set test sessions.
3155         * Animometer/resources/debug-runner/animometer.css:
3156         (.tree .link): Style the "link" UI.
3157         * Animometer/resources/debug-runner/animometer.js: Move updateDisplay from suitesManager
3158         to optionsManager since this is a visual option and has nothing to do with the suites
3159         settings. Update the construction of the test UI by including a "link" after each test.
3160         Clicking on that link brings up a JS prompt with a URL and a query string with the current
3161         parameters of the controller, and selected test. Pasting this URL into the location bar will
3162         automatically start running the selected test.
3163         (suitesManager.suitesFromQueryString): Iterate through the Suites and tests and find the one
3164         that matches the provided parameters. Returns an object similar to the form in
3165         suitesManager.updateLocalStorageFromUI.
3166         (benchmarkController.initialize): After settings up the events and options, try parsing the
3167         query string and running the benchmark immediately. Otherwise, fall back to the form.
3168         (benchmarkController.startBenchmark): Store the options and suites into member variables for
3169         reuse in restartBenchmark.
3170         (benchmarkController.startBenchmarkImmediatelyIfEncoded): Convert the query string to an object.
3171         If that's successful, find the suite and test referenced in the query string. Start the benchmark if
3172         the search for the test succeeded.
3173         * Animometer/resources/extensions.js:
3174         (Utilities.stripNonASCIICharacters): Helper method to convert the name of the suite and test
3175         into a query-string-friendly version.
3176         (Utilities.convertObjectToQueryString): Helper method to convert an object to query string
3177         format.
3178         (Utilities.convertQueryStringToObject): Helper method to convert query string into an object
3179         with properties and values.
3180
3181 2016-03-16  Jon Lee  <jonlee@apple.com>
3182
3183         Add a new benchmark test
3184         https://bugs.webkit.org/show_bug.cgi?id=155570
3185
3186         Reviewed by Simon Fraser.
3187
3188         New Leaves test includes various image sizes and opacity.
3189
3190         * Animometer/resources/debug-runner/tests.js: Add it to the HTML test suite.
3191         * Animometer/tests/dom/leaves.html: Added.
3192         * Animometer/tests/dom/resources/leaves.js: Added. Override the
3193         (Particle.call.reset): Uses a range of sizes, and opacity.
3194         (Particle.call.animate): Opacity goes up then down. When it hits 0, reset the particle.
3195         (Particle.call.move): Set transform and opacity.
3196         * Animometer/tests/master/resources/leaves.js: Get rid of the closure so that it
3197         can be used in this test. Update the relative path so that it works in both the master
3198         and dom test suite.
3199
3200 2016-03-15  Simon Fraser  <simon.fraser@apple.com>
3201
3202         Add developer Animometer test that bounces P3-tagged images
3203         https://bugs.webkit.org/show_bug.cgi?id=155511
3204
3205         Reviewed by Tim Horton.
3206         
3207         Add a test for rendering performance of tagged images. The 5 images are tagged
3208         with the Display P3 colorspace.
3209
3210         * Animometer/resources/debug-runner/tests.js:
3211         * Animometer/tests/bouncing-particles/bouncing-tagged-images.html: Added.
3212         * Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Added.
3213         * Animometer/tests/bouncing-particles/resources/image1.jpg: Added.
3214         * Animometer/tests/bouncing-particles/resources/image2.jpg: Added.
3215         * Animometer/tests/bouncing-particles/resources/image3.jpg: Added.
3216         * Animometer/tests/bouncing-particles/resources/image4.jpg: Added.
3217         * Animometer/tests/bouncing-particles/resources/image5.jpg: Added.
3218
3219 2016-03-09  Jon Lee  <jonlee@apple.com>
3220
3221         Enhance existing Animometer tests
3222         https://bugs.webkit.org/show_bug.cgi?id=155261
3223
3224         Reviewed by Simon Fraser.
3225
3226         * Animometer/tests/master/resources/canvas-tests.js: Add a gradient to
3227         the filled circles. To expose more of the gradient, add another circle.
3228         (SimpleCanvasStage.call.animate): For each frame, create a gradient with
3229         undulating stop points and colors. Fill the circles twice; once with
3230         the solid color, and once with the gradient.
3231
3232         * Animometer/tests/master/resources/dom-particles.js: Refactor the
3233         emission variables into a separate stage for this test. Add a colorOffset
3234         variable to make the colors of each particle slightly different, since
3235         the ramp controller can add large numbers of particles all at once, which
3236         would otherwise get all the same color.
3237         * Animometer/tests/master/resources/particles.js:
3238         (initialize): Remove the code specific to the SVG mask test.
3239
3240         * Animometer/tests/master/resources/image-data.js:
3241         (initialize): Remove unused local variable.
3242         * Animometer/tests/master/resources/multiply.js:
3243         (initialize): Make the test harder by adding more total particles.
3244
3245 2016-03-09  Jon Lee  <jonlee@apple.com>
3246
3247         Add text tests
3248         https://bugs.webkit.org/show_bug.cgi?id=155257
3249
3250         Reviewed by Simon Fraser.
3251
3252         * Animometer/resources/extensions.js:
3253         (UnitBezier.Utilities.createClass): Add a class that computes Bezier points
3254         assuming that two of the control points are at (0,0) and (1,1). Taken from
3255         WebCore/platform/graphics/UnitBezier.h
3256         * Animometer/resources/runner/tests.js: Add a test for English text and one
3257         for international text.
3258         * Animometer/tests/master/international.html: Added.
3259         * Animometer/tests/master/resources/text.js: Added. The test assumes there is
3260         #template div which it will copy. The copies are placed behind the template, and
3261         are set with different colors each frame. They are moved around with CSS transform.
3262         * Animometer/tests/master/text.html: Added.
3263
3264         Remove the other text tests, since these ones cover the same techniques.
3265         * Animometer/tests/text/layering-text.html: Removed.
3266         * Animometer/tests/text/resources/layering-text.js: Removed.
3267         * Animometer/tests/text/resources/text-boxes.js: Removed.
3268         * Animometer/tests/text/text-boxes.html: Removed.
3269         * Animometer/resources/debug-runner/tests.js:
3270
3271 2016-03-09  Jon Lee  <jonlee@apple.com>
3272
3273         Add a new image test
3274         https://bugs.webkit.org/show_bug.cgi?id=155232
3275
3276         Reviewed by Dean Jackson.
3277         Provisionally reviewed by Said Abou-Hallawa.
3278
3279         The image test renders PNGs and moves them with translate and rotate
3280         transforms. Each particle has a lifetime, and when the lifetime ends or
3281         the particle goes offscreen, it resets itself somewhere on the stage.
3282
3283         * Animometer/resources/debug-runner/tests.js: Remove the CSS bouncing PNG
3284         images test, because this one tests the same technique.
3285         * Animometer/resources/runner/tests.js: Added here as "Leaves".
3286         * Animometer/tests/master/leaves.html: Added.
3287         * Animometer/tests/master/resources/particles.js: Refactor out the parts
3288         specific to the DOM particles test. Consequently make velocity a public
3289         member.
3290         (initialize): The options parameter is never used, so remove it.
3291         (animate): Remove unused local variable.
3292         * Animometer/tests/master/resources/leaves.js: Maintains a focal point that
3293         moves back and forth across the canvas. That point affects the velocity
3294         of the particles. When the focal point is on the leftmost side, it is
3295         between [-6, -2], and set in reset(). When the focal point is on the rightmost
3296         side, it will be from [2, 6].
3297         * Animometer/tests/master/resources/dom-particles.js: Move JS specific to
3298         this test here from particles.js.
3299
3300         New images.
3301         * Animometer/tests/master/resources/compass100.png: Added.
3302         * Animometer/tests/master/resources/console100.png: Added.
3303         * Animometer/tests/master/resources/contribute100.png: Added.
3304         * Animometer/tests/master/resources/debugger100.png: Added.
3305         * Animometer/tests/master/resources/inspector100.png: Added.
3306         * Animometer/tests/master/resources/layout100.png: Added.
3307         * Animometer/tests/master/resources/performance100.png: Added.
3308         * Animometer/tests/master/resources/script100.png: Added.
3309         * Animometer/tests/master/resources/shortcuts100.png: Added.
3310         * Animometer/tests/master/resources/standards100.png: Added.
3311         * Animometer/tests/master/resources/storage100.png: Added.
3312         * Animometer/tests/master/resources/styles100.png: Added.
3313         * Animometer/tests/master/resources/timeline100.png: Added.
3314
3315 2016-03-03  Jon Lee  <jonlee@apple.com>
3316
3317         Add ability to retrieve raw data from release harness
3318         https://bugs.webkit.org/show_bug.cgi?id=155026
3319
3320         Reviewed by Simon Fraser.
3321
3322         * Animometer/developer.html: Remove the special UI in the debug
3323         harness.
3324         * Animometer/resources/runner/animometer.css: Add styles for the
3325         overlay.
3326         * Animometer/resources/runner/animometer.js: Let 'j' show the JSON
3327         results, but only if the overlay doesn't exist. Add 'esc' key to dismiss
3328         the overlay.
3329         (window.benchmarkController.selectResults): Cycle the cases around
3330         so that the first 's' press selects both the benchmark score and
3331         the individual test scores.
3332         * Animometer/resources/debug-runner/animometer.css: Remove
3333         unneeded rules.
3334         * Animometer/resources/debug-runner/animometer.js: Make the same
3335         call to handleKeyPress.
3336
3337 2016-03-03  Jon Lee  <jonlee@apple.com>
3338
3339         Make sure multiply test particles have at least some opacity
3340         https://bugs.webkit.org/show_bug.cgi?id=155027
3341
3342         Reviewed by Simon Fraser.
3343
3344         * Animometer/tests/master/resources/multiply.js:
3345         (initialize): Have the elements spin a little faster to make it
3346         more obvious when the system is being stressed.
3347         (_addTile):
3348         (animate): Make sure each element being animated has at least 1%
3349         opacity.
3350
3351 2016-03-03  Jon Lee  <jonlee@apple.com>
3352
3353         Update image test
3354         https://bugs.webkit.org/show_bug.cgi?id=154962
3355
3356         Rubber-stamped by Darin Adler.
3357
3358         * Animometer/tests/master/image-data.html: Make each canvas have a compositing layer.
3359         * Animometer/tests/master/resources/image-data.js:
3360         (initialize): Update to load multiple images serially.
3361         (_loadImage):
3362         (tune): Use display instead of visibility. When showing an element anew, move it somewhere else.
3363         (_createTestElement): Set up the element, refactor out placement of element to _refreshElement.
3364         (_refreshElement): Place element in a tile grid.
3365         (animate):
3366         (_getRandomNeighboringPixelIndex): Use a more conservative distribution to make the effect last a little longer.
3367         * Animometer/tests/master/resources/compass.svg: Added.
3368         * Animometer/tests/master/resources/console.svg: Added.
3369         * Animometer/tests/master/resources/contribute.svg: Added.
3370         * Animometer/tests/master/resources/debugger.svg: Added.
3371         * Animometer/tests/master/resources/inspector.svg: Added.
3372         * Animometer/tests/master/resources/layout.svg: Added.
3373         * Animometer/tests/master/resources/performance.svg: Added.
3374         * Animometer/tests/master/resources/script.svg: Added.
3375         * Animometer/tests/master/resources/shortcuts.svg: Added.
3376         * Animometer/tests/master/resources/standards.svg: Added.
3377         * Animometer/tests/master/resources/storage.svg: Added.
3378         * Animometer/tests/master/resources/styles.svg: Added.
3379         * Animometer/tests/master/resources/timeline.svg: Added.
3380
3381 2016-03-02  Jon Lee  <jonlee@apple.com>
3382
3383         Add some new controllers, and refine tests
3384         https://bugs.webkit.org/show_bug.cgi?id=154914
3385
3386         Reviewed by Simon Fraser.
3387
3388         Improve tests.
3389
3390         * Animometer/tests/master/focus.html: Move each particle into a layer. Put the particle
3391         in a container element. Expand the container element by the max blur radius, and clip
3392         overflow. This way, when the blur is applied, it avoids causing layer resizes.
3393         * Animometer/tests/master/resources/focus.js:
3394         (FocusElement.Utilities.createClass): Create a container element, and put the particle
3395         inside.
3396         (hide): Set display:none.
3397         (show): Set display:block.
3398         (animate): Apply filters to the container element.
3399         (FocusStage.call.initialize): Instead of inserting and removing elements from the DOM,
3400         keep them in the stage, but set the display style instead. Use this._offsetIndex to
3401         keep track of which elements are displayed.
3402         (FocusStage.call.animate): Move some calculations around to avoid doing unneeded math.
3403         (FocusStage.call.getBlurValue): Make sure elements are always blurred.
3404         (FocusStage.call.getOpacityValue): Make sure elements have some opacity.
3405         * Animometer/tests/master/resources/multiply.js: Have the particles on the edge of the
3406         stage appear less black when the complexity gets large enough.
3407         (tune): Have this._distanceFactor calculate the factor. Avoid calculating square root each
3408         frame.
3409
3410 2016-03-02  Jon Lee  <jonlee@apple.com>
3411
3412         Add some new controllers, and refine tests
3413         https://bugs.webkit.org/show_bug.cgi?id=154914
3414
3415         Reviewed by Simon Fraser.
3416
3417         Add a controller that centers around 30 fps instead of 60 fps.
3418
3419         * Animometer/developer.html: Add a new option.
3420         * Animometer/resources/debug-runner/animometer.js:
3421         * Animometer/resources/runner/animometer.js:
3422         (this._processData.findRegression): When calculating the complexity-frameLength regression,
3423         check the controller, and use a 30 fps baseline if needed.
3424         * Animometer/resources/statistics.js:
3425         (Regression.Utilities.createClass): Update to allow clients to specify the baseline
3426         frame length.
3427         * Animometer/tests/resources/main.js:
3428         (tune): Override some of the constants in RampController. Move those constants out for
3429         easier reading.
3430
3431         Add a fixed controller, with no step.
3432
3433         * Animometer/developer.html: Add a controller that takes no step.
3434         * Animometer/resources/debug-runner/animometer.js:
3435         * Animometer/tests/resources/main.js:
3436         (Rotater.Utilities.createClass):
3437
3438         Switch to ramp controller as default.
3439
3440         * Animometer/developer.html: Increase the test length to 20 seconds.
3441         * Animometer/resources/debug-runner/animometer.js: Rename the "adjustment" field to "controller"
3442         since that is a more accurate description.
3443         * Animometer/resources/debug-runner/graph.js:
3444         * Animometer/resources/runner/animometer.js: Update preferences for release suite.
3445
3446 2016-02-26  Jon Lee  <jonlee@apple.com>
3447
3448         Address Dean's comments in 154673.
3449
3450         * Animometer/developer.html:
3451         * Animometer/resources/debug-runner/animometer.js:
3452         * Animometer/resources/debug-runner/graph.js:
3453
3454 2016-02-25  Jon Lee  <jonlee@apple.com>
3455
3456         Update animation benchmark and tests
3457         https://bugs.webkit.org/show_bug.cgi?id=154673
3458
3459         Reviewed by Dean Jackson.
3460
3461         Update test visuals.
3462
3463         * Animometer/tests/master/resources/canvas-tests.js:
3464         (CanvasLineSegment.Utilities.createClass): Line segments near the edge of the stage get clipped.
3465         Update circle position and radius to minimize impact.
3466         * Animometer/tests/master/resources/particles.js: Get rid of rotating gradient background, and
3467         have 3 locations for emitting particles.
3468         * Animometer/tests/master/resources/multiply.js: Update distance metric so that fringe tiles get
3469         more color.
3470         (initialize): Fix some of the math for laying out the tiles.
3471         (animate): When a tile isn't used, set visibility: hidden.
3472
3473 2016-02-24  Jon Lee  <jonlee@apple.com>
3474
3475         Update animation benchmark and tests
3476         https://bugs.webkit.org/show_bug.cgi?id=154673
3477
3478         Reviewed by Dean Jackson.
3479
3480         Update the ramp controller.
3481
3482         The controller refines the complexity interval to test across.
3483
3484         * Animometer/resources/statistics.js: Add functions that estimate cumulative distribution function.
3485         (Regression): For the flat regression, force the first segment to be at 60 fps.
3486         (valueAt): Add convenience function to return interpolated value based on the regression used.
3487         (_calculateRegression): Include the number of points included for both segments, and the piecewise
3488         errors.
3489         * Animometer/tests/resources/math.js: Make the Kalman estimator subclass Experiment, and allow it
3490         to be reset.
3491
3492         * Animometer/tests/resources/main.js: Initialize the tier such that it starts at 10^0 = 1.
3493         Increase the number of ramps. Maintain three FPS thresholds-- the frame rate of interest, a limit
3494         on the lowest FPS we care to go for later interpolation, and a minimum FPS threshold we want to
3495         aim for each ramp. Also keep three estimators: a running average of the change point, a minimum
3496         boundary for each ramp, and an estimator for all the frames within an interval. The first two
3497         are used to determine the parameters of the next ramp, and the latter allows us to refine the
3498         parameters.
3499         (update): During the tier phase, it is possible that the highest complexity possible for a test
3500         won't stress the system enough to trigger stopping the tier phase and transitioning to the ramps.
3501         If the complexity doesn't change when going to the next tier, we've maxed the test out, and move
3502         on. When the tier phase completed, turn off Controller.frameLengthEstimator, which estimates the
3503         FPS at each tier.
3504         (tune): At each interval, look at the confidence distribution of being on the 60 FPS side or the
3505         slow side. If the slowest FPS we achieve at the ramp's maximum complexity is not at least
3506         _fpsRampSlowThreshold, then increase the maximum complexity. If we ever achieve 60 FPS, increase
3507         the ramp's minimum complexity to that level. If, at an even lower complexity, a glitch causes the
3508         FPS to drop, we reset the minimum complexity.
3509
3510         Have the bootstrap calculation occur between tests. Clean up harness.
3511
3512         * Animometer/resources/debug-runner/animometer.js: Run bootstrap after a test has
3513         completed to avoid doing all of it at the end before showing the results. Clean up
3514         parameters being passed around.
3515         * Animometer/resources/debug-runner/tests.js:
3516         (text):
3517         * Animometer/resources/runner/animometer.js:
3518         (this._processData.calculateScore): Save the results to the same object holding the data.
3519         (this._processData._processData): In the case where a file is dragged, calculate the score
3520         serially. Grab the results object and move it to the results variable and remove it from
3521         the data object. This avoids serializing the results into the JSON.
3522         (this._processData.findRegression): Include the samples used for bootstrapping. Reduce the
3523         resample size to shorten the wait.
3524         * Animometer/resources/runner/benchmark-runner.js:
3525         * Animometer/resources/statistics.js:
3526         (bootstrap): Update how bootstrapData is sorted. In some regression results the mix of
3527         floats and integers causes an alphabetical sort to occur.
3528         * Animometer/resources/strings.js:
3529
3530         Add meta charset so that encodings between harness and test match.
3531
3532         * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
3533         * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
3534         * Animometer/tests/bouncing-particles/bouncing-css-images.html:
3535         * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
3536         * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
3537         * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
3538         * Animometer/tests/master/canvas-stage.html:
3539         * Animometer/tests/master/focus.html:
3540         * Animometer/tests/master/image-data.html:
3541         * Animometer/tests/master/multiply.html:
3542         * Animometer/tests/master/particles.html:
3543         * Animometer/tests/misc/canvas-electrons.html:
3544         * Animometer/tests/misc/canvas-stars.html:
3545         * Animometer/tests/misc/compositing-transforms.html:
3546         * Animometer/tests/simple/simple-canvas-paths.html:
3547         * Animometer/tests/simple/tiled-canvas-image.html:
3548         * Animometer/tests/template/template-canvas.html:
3549         * Animometer/tests/template/template-css.html:
3550         * Animometer/tests/template/template-svg.html:
3551         * Animometer/tests/text/layering-text.html:
3552         * Animometer/tests/text/text-boxes.html:
3553
3554         Update test harness reporting.
3555
3556         * Animometer/developer.html: Add missing meta charset.
3557         * Animometer/index.html: Remove unnecessary utf-8 declaration.
3558         * Animometer/resources/debug-runner/animometer.css: Add convenience classes for
3559         formatting the results table.
3560         * Animometer/resources/debug-runner/animometer.js: Adjust which stats are shown.
3561         * Animometer/resources/debug-runner/tests.js: Display bootstrapping statistics.
3562         * Animometer/resources/strings.js: Move strings not used by the release harness.
3563
3564         Switch to a pseudo-random number generator.
3565
3566         * Animometer/resources/statistics.js: Add a Pseudo class, with a simple
3567         pseudo-random number generator.
3568         (_calculateRegression): Reset the generator before running bootstrap.
3569         (bootstrap): Deleted.
3570
3571         Replace Math.random with Pseudo.random.
3572         * Animometer/tests/master/resources/canvas-tests.js:
3573         * Animometer/tests/master/resources/focus.js:
3574         * Animometer/tests/master/resources/particles.js:
3575         * Animometer/tests/resources/main.js:
3576
3577         Use bootstrapping to get confidence interval in the breakpoint.
3578
3579         For the ramp controller, calculate the piecewise regression, and then use
3580         bootstrapping in order to find the 95% confidence interval. Use the raw data.
3581
3582         * Animometer/developer.html: Default to the complexity graph. Add a legend
3583         checkbox to toggle visibility of the bootstrap score and histogram.
3584         * Animometer/resources/debug-runner/animometer.css: Make some more space to show
3585         the old raw and average scores in the legend. Add new styles for the data.
3586         * Animometer/resources/debug-runner/graph.js:
3587         (_addRegressionLine): Allow passing an array for the variance bar tied to the
3588         regression line. Now |stdev| is |range|.
3589         (createComplexityGraph): Add bootstrap median, and overlay a histogram of
3590         the bootstrap samples. Switch raw samples from circles to X's.
3591         (onComplexityGraphOptionsChanged): Allow toggling of the bootstrap data.
3592         (onGraphTypeChanged): Move the regressions for the raw and average samples to the
3593         legend. In the subtitle use the bootstrap median, and include the 95% confidence
3594         interval.
3595         * Animometer/resources/runner/animometer.js:
3596         (this._processData.findRegression): Factor out the code that determines which
3597         samples to include when calculating the piecewise regression. For series that have
3598         many samples, or a wider range of recorded complexities, throw away the 2.5%
3599         lowest and highest samples before calculating the regression. Keep all samples
3600         if the number of samples to regress is small or the range of complexities is
3601         narrow.
3602         (this._processData._calculateScore): Factor out regression calculation to
3603         findRegression(). Bootstrap the change point of the regression. The score is the
3604         median.
3605         * Animometer/resources/statistics.js:
3606         (_calculateRegression): Correct an issue in the calculation of the regression, where
3607         the denominator can be 0.
3608         (bootstrap): Template for bootstrapping. Create a bootstrap sample array, Create
3609         re-samples by random selection with replacement. Return the 95% confidence samples,
3610         the bootstrap median, mean, and the data itself.
3611         * Animometer/resources/strings.js: Add bootstrap.
3612         * Animometer/tests/resources/main.js:
3613         (processSamples): Don't prematurely cut the sample data.
3614
3615         Fix graph drawing.
3616
3617         * Animometer/resources/debug-runner/animometer.js: Add spacing in the JSON output.
3618         Multiple tests output a lot of JSON and can hang when selecting JSON with no whitespace.
3619         * Animometer/resources/debug-runner/animometer.css:
3620         (#complexity-graph .series.raw circle): Update the color.
3621         * Animometer/resources/debug-runner/graph.js: Use the FPS axis instead of the
3622         complexity axis, which can vary in domain. For determining the complexity domain,
3623         only use samples after samplingTimeOffset.
3624
3625         Allow dropping results JSON.
3626
3627         * Animometer/developer.html: Add a button.
3628         * Animometer/resources/debug-runner/animometer.css:
3629         * Animometer/resources/debug-runner/animometer.js: Read the data and go straight
3630         to the dashboard. With JSON output, write out only the options and the raw data.
3631
3632         Teach the harness to evaluate the samples and determine the test score.
3633
3634         This will allow us to update how the score is calculated separately from the samples recorded.
3635         This also prepares the harness to be able to accept JSON of prior runs.
3636
3637         * Animometer/resources/strings.js: Clean up and remove unneeded strings and reduce some of the
3638         hierarchy.
3639         * Animometer/resources/debug-runner/tests.js: Update to use the new strings.
3640
3641         * Animometer/tests/resources/main.js: Allow all controllers to show a complexity-FPS graph.
3642         (_processComplexitySamples): Factor out some of the sample processing done in the ramp
3643         controller for the benefit of the other controllers. |complexitySamples| contains a list of
3644         samples. Sort the samples by complexity. Optionally remove the top x% of samples.
3645         Group them, and calculate distribution of samples within the same complexity, and add those as
3646         new entries into |complexityAverageSamples|.
3647         (Controller.processSamples): Move the code responsible for determining the complexity and FPS
3648         scores out to ResultsDashboard. The structure of the data returned by the controller is:
3649
3650         {
3651             controller: [time-regression, time-regression, ...], // optional, data specific to controller
3652             marks: [...],
3653             samples: {                    // all of the sample data
3654                 controller: [...],
3655                 complexity: [...],        // processed from controller samples
3656                 complexityAverage: [...], // processed from complexity samples
3657             }
3658         }
3659
3660         (AdaptiveController.processSamples): Adding the target frame length is no longer necessary; we
3661         now pass the test options to the graph.
3662         (Regression): Move to statistics.js.
3663         * Animometer/resources/statistics.js: Move Regression to here. Add a check if the sampling range
3664         only contains one sample, since we cannot calculate a regression from one sample point.
3665
3666         Teach the test harness to evaluate the data.
3667         * Animometer/resources/runner/animometer.js:
3668         (ResultsDashboard): Store the options used to run the test and the computed results/score separately
3669         from the data. The results are stored as:
3670
3671         {
3672             score: /* geomean of iteration score */,
3673             iterationsResults: [
3674                 {
3675                     score: /* geomean of tests */,
3676                     testsResults: {
3677                         suiteName: {
3678                             testName: {
3679                                 controller: {
3680                                     average:
3681                                     concern:
3682                                     stdev:
3683                                     percent:
3684                                 },
3685                                 frameLength: { ... },
3686                                 complexity: {
3687                                     complexity:
3688                                     stdev:
3689                                     segment1:
3690                                     segment2:
3691                                 },
3692                                 complexityAverage: { ... }
3693                             },
3694                             testName: { ... },
3695                         },
3696                         ... next suite ...
3697                     }
3698                 },
3699                 { ...next iteration... }
3700             ]
3701         }
3702
3703         * Animometer/resources/debug-runner/animometer.js: Pass options around instead of relying
3704         on what was selected in the form. This will later allow for dropping previous results, and
3705         using those runs' options when calculating scores.
3706         (ResultsTable._addGraphButton): Simplify button action by using attached test data.
3707         * Animometer/resources/debug-runner/graph.js: Refactor to use the data.
3708
3709         Consolidate JS files, and move statistics out to a separate JS.
3710
3711         Preparation for having the Controller only handle recording and storage of the samples,
3712         and leave the evaluation of the test score out to the harness. Move Experiment to
3713         a new statistics.js, where Regression will also eventually go. Get rid of algorithm.js
3714         and move it to utilities.js since the Heap is used only for Experiments.
3715
3716         * Animometer/tests/resources/algorithm.js: Removed. Heap is in utilities.js.
3717         * Animometer/tests/resources/sampler.js: Removed. Experiment is in statistics.js,
3718         Sampler in main.js.
3719         * Animometer/tests/resources/main.js: Move Sampler here.
3720         * Animometer/resources/statistics.js: Added. Move Statistics and Experiment here.
3721         * Animometer/resources/extensions.js: Move Heap here. Attach static method to create
3722         a max or min heap to Heap, instead of a new Algorithm object.
3723
3724         Update JS files.
3725         * Animometer/developer.html:
3726         * Animometer/index.html:
3727         * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
3728         * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
3729         * Animometer/tests/bouncing-particles/bouncing-css-images.html:
3730         * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
3731         * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
3732         * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
3733         * Animometer/tests/master/canvas-stage.html:
3734         * Animometer/tests/master/focus.html:
3735         * Animometer/tests/master/image-data.html:
3736         * Animometer/tests/master/multiply.html:
3737         * Animometer/tests/master/particles.html:
3738         * Animometer/tests/misc/canvas-electrons.html:
3739         * Animometer/tests/misc/canvas-stars.html:
3740         * Animometer/tests/misc/compositing-transforms.html:
3741         * Animometer/tests/simple/simple-canvas-paths.html:
3742         * Animometer/tests/simple/tiled-canvas-image.html:
3743         * Animometer/tests/template/template-canvas.html:
3744         * Animometer/tests/template/template-css.html:
3745         * Animometer/tests/template/template-svg.html:
3746         * Animometer/tests/text/layering-text.html:
3747         * Animometer/tests/text/text-boxes.html:
3748
3749         Fix the cursor in the graph analysis when the min
3750         complexity is not 0.
3751
3752         * Animometer/resources/debug-runner/graph.js:
3753         (_addRegression):
3754         (createComplexityGraph):
3755
3756 2016-02-23  Geoffrey Garen  <ggaren@apple.com>
3757
3758         Fix some issues in MallocBench
3759         https://bugs.webkit.org/show_bug.cgi?id=154600
3760
3761         Reviewed by Oliver Hunt.
3762
3763         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Make nimlang.ops
3764         a part of the build so that it copies to the right place for execution.
3765
3766         * MallocBench/MallocBench/Interpreter.cpp:
3767         (Interpreter::Interpreter): Don't try to open .ops files for writing
3768         because we're only going to read and we might need extra permissions to
3769         write.
3770
3771         (Interpreter::~Interpreter): Give more context when opening a file fails
3772         to help with debugging.
3773
3774         * MallocBench/MallocBench/stress.cpp:
3775         (benchmark_stress): Reduce iterations to complete in less than 10 seconds.
3776
3777 2016-02-23  Michael Saboff  <msaboff@apple.com>
3778
3779         Unreviewed change to revert extraneous changes made part of change set 196955.
3780
3781         * MallocBench/MallocBench/Interpreter.cpp:
3782         (Interpreter::doMallocOp):
3783         (Interpreter::Thread::switchTo):
3784         (writeData): Deleted.
3785
3786 2016-02-19  Michael Saboff  <msaboff@apple.com>
3787
3788         MallocBench: Added recording for nimlang website, new recording details and added new options
3789         https://bugs.webkit.org/show_bug.cgi?id=154485
3790
3791         Reviewed by Geoff Garen.
3792
3793         Added new capabilities to MallocBench.  These include:
3794             Added a recording of http://nim-lang.org/docs/lib.html.
3795             Added thread id to the recording and the ability to playback switching threads in MallocBench
3796             Added aligned allocations to recordings and the ability to playback
3797             Added --use-thread-id option to honor recorded thread ids
3798             Added --detailed-report to output remaining allocations by size after playback
3799             Added --no-warmup to not run the warm up iteration
3800
3801         Changed the way that options are passed down to the benchmarks.  Instead of passing individual
3802         boolean or numeric option values, just pass a reference the CommandLine itself.  Each benchmark
3803         can access the options that are appropriate.  The Benchmark class also uses the options for
3804         is parallel, run counts and warm up.
3805
3806         Added thread id and aligned malloc to the Op by noticing that structure padding and Opcode allowed
3807         for another 32 bits of data.  Breaking that unused 32 bits into a 16 bit thread id value and a
3808         16 bit log base 2 of the alignment for aligned malloc allowed for existing recordings to playback
3809         without any incompatibilities.
3810
3811         Threaded operation is simulated by creating threads as needed.  As long as the next Op's thread id
3812         is the same as the last, operation continues as normal.  When the next Op has a different thread id,
3813         we switch to that thread using the shared Op stream to continue playing back.  There is a mutex to
3814         assure that only one thread is really running at a time and a condition variable used to wait
3815         that the current thread id matches each block thread's thread id.  This doesn't simulate true
3816         concurrent threading, but is instead plays back Ops recorded for multiple thread faithfully.
3817
3818         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
3819         * MallocBench/MallocBench/Benchmark.cpp:
3820         (deallocateHeap):
3821         (Benchmark::Benchmark):
3822         (Benchmark::runOnce):
3823         (Benchmark::run):
3824         * MallocBench/MallocBench/Benchmark.h:
3825         (Benchmark::isValid):
3826         * MallocBench/MallocBench/CommandLine.cpp:
3827         (CommandLine::printUsage):
3828         * MallocBench/MallocBench/CommandLine.h:
3829         (CommandLine::isValid):
3830         (CommandLine::benchmarkName):
3831         (CommandLine::isParallel):
3832         (CommandLine::useThreadID):
3833         (CommandLine::detailedReport):
3834         (CommandLine::warmUp):
3835         (CommandLine::heapSize):
3836         (CommandLine::runs):
3837         * MallocBench/MallocBench/Interpreter.cpp:
3838         (Interpreter::Interpreter):
3839         (Interpreter::run):
3840         (Interpreter::readOps):
3841         (Interpreter::doOnSameThread):
3842         (Interpreter::switchToThread):
3843         (Interpreter::detailedReport):
3844         (compute2toPower):
3845         (writeData):
3846         (Interpreter::doMallocOp):
3847         (Interpreter::Thread::Thread):
3848         (Interpreter::Thread::stop):
3849         (Interpreter::Thread::~Thread):
3850         (Interpreter::Thread::runThread):
3851         (Interpreter::Thread::waitToRun):
3852         (Interpreter::Thread::switchTo):
3853         * MallocBench/MallocBench/Interpreter.h:
3854   &nb