Fix up ChangeLog entries for r192126 (https://bugs.webkit.org/show_bug.cgi?id=144938...
[WebKit-https.git] / PerformanceTests / ChangeLog
1 2015-11-06  Said Abou-Hallawa  <sabouhallawa@apple.com>
2
3         Initialize the graphics benchmark's Kalman filter with estimated 60 FPS
4         https://bugs.webkit.org/show_bug.cgi?id=150965
5
6         Reviewed by Darin Adler.
7
8         This should give the benchmark more accurate reading at warmup time. And
9         hence we can safely reduce the test running time to be 10 seconds.
10
11         * Animometer/runner/animometer.html:
12         Add "defer" back when loading resources/animometer.js since this script
13         depends on many other scripts and we need to wait till the page is parsed.
14         Also change the default test interval to be 10 seconds.
15         
16         * Animometer/runner/resources/graph.js:
17         (graph): Make the test results curves smoother.
18         
19         * Animometer/tests/resources/main.js:
20         (Animator): Initialize the Kalman filter with 60 FPS which should be true
21         if the test page is empty.
22         
23         (Animator.prototype.animate):
24         * Animometer/tests/resources/math.js:
25         (KalmanEstimator): Fix the initial value of _vecX_est.
26             _vecX_est[0] = current FPS (= 60FPS when the test page is empty)
27             _vecX_est[1] = first time derivative of FPS (=0; FPS has been constant).
28             _vecX_est[2] = second time derivative of FPS (=0; since _vecX_est[1]=0).
29         (KalmanEstimator.prototype.estimate): Add some comments.
30
31 2015-11-04  Said Abou-Hallawa  <sabouhallawa@apple.com>
32
33         Remove "defer" from the scripts' references in the graphics benchmark home page 
34         https://bugs.webkit.org/show_bug.cgi?id=150915
35
36         Reviewed by Simon Fraser.
37
38         It causes the benchmark to be very flakey.
39
40         * Animometer/runner/animometer.html:
41
42 2015-11-01  Said Abou-Hallawa  <sabouhallawa@apple,com>
43
44         Add an option to make the graphics benchmark runs a specific test with fixed complexity
45         https://bugs.webkit.org/show_bug.cgi?id=150529
46
47         Reviewed by Darin Adler.
48
49         Beside each test in the suites tree, we are going to show the complexity
50         arithmetic mean of the of the last run in an edit control. Based on a
51         new option these edit controls will all be visible or hidden. If they are
52         visible their values can be changed. The benchmark runner if it run in
53         the non-adaptive mode will set the complexity of the test to the passed
54         value and will not change it ever. The animator will animate the test and
55         frame rate will also be measured.
56
57         * Animometer/runner/animometer.html: Add a new option for the non-adaptive mode.
58         
59         * Animometer/runner/resources/animometer.css:
60         (section#home input[type="number"]): Define the width of all the edit control in the <home> section.
61         (section#home > suites input[type="number"]): The edit controls in the <suites> box will be right aligned and hidden by default.
62         (section#home > suites input[type="number"].selected): When the class "selected" is added, the edit controls will be visible.
63         (section#home > options > label > input[type="number"]): Deleted.
64         
65         * Animometer/runner/resources/animometer.js:
66         (window.benchmarkRunnerClient.didFinishLastIteration): Update the local storage with the results of each test.
67         (window.optionsManager._adaptiveTestElement): Returns the checkbox for setting the adaptive test option.
68         (window.suitesManager._editElement):  Returns the edit element associated with each test element in the suites tree.
69         (window.suitesManager._editsElements): Returns a list of all the elements in the <suites> box.
70         (window.suitesManager._localStorageNameForTest): Change this function to take strings.
71         (window.suitesManager._createTestElement): Adds an edit control beside each test.
72         (window.suitesManager.updateEditsElementsState): Adds/Removes the 'selected' class to/from all the tests edit elements.
73         (window.suitesManager.updateUIFromLocalStorage): Reads the edit control value from the local storage.
74         (window.suitesManager.updateLocalStorageFromUI): Saves the edit control value to the local storage.
75         (window.suitesManager.updateLocalStorageFromJSON): Saves the last run results to the local storage.
76         (window.benchmarkController.initialize): Shows/Hides the test edit controls based on the adaptive test option.
77         (window.benchmarkController.onChangeAdaptiveTestCheckbox): An onchange event handler for the adaptive test checkbox.
78         
79         * Animometer/tests/resources/main.js: 
80         (Benchmark.prototype.update): Fix the complexity of the test if the running mode is non-adaptive test and desired complexity is not zero.
81         (window.runBenchmark): Add the test complexity as a new benchmark option.
82
83 2015-11-01  Said Abou-Hallawa  <sabouhallawa@apple,com>
84
85         Make the size of the benchmark canvas adaptive to the screen size and screen resolution
86         https://bugs.webkit.org/show_bug.cgi?id=150530
87
88         Reviewed by Darin Adler.
89         
90         We want to set the size of the benchmark stage dynamically such that it
91         depends on the screen resolution and the device scale factor. This patch 
92         does more than that because the home page css was not done properly. To
93         use the flex box layout, the animometer.css has to be rewritten almost from
94         scratch. The suites tree has to be rewritten also because it was not collapsing
95         and with the flex box layout it was going outside of the window area. The 
96         options handling and the local storage handling had to be rewritten to
97         allow more flexibility with this patch and the future patches. The code
98         in animometer.js was reorganized into objects to allow distributing the code
99         nicely among separate entities.
100
101         * Animometer/resources/extensions.js:
102         (Point.elementClientSize): Returns the client size of an HTMLElement as a Point object.
103         (Insets.prototype.get width): Follow the function opening brace style guidelines.
104         (Insets.prototype.get height):
105         (Insets.prototype.get size): Returns the size of an Insets as a Point object.
106         
107         (window.DocumentExtension): Provides document helper functions. It should be assailable from the runner and the tests.
108         (window.DocumentExtension.createElement): Creates an HTMLElement given its name, attributes and parentElement. 
109         (window.DocumentExtension.createSvgElement): Creates an SVGElement given its name, attributes and parentElement (moved from utilities.js). 
110         (window.DocumentExtension.insertCssRuleAfter): Inserts a CSS rule after an exiting rule given its text.
111         
112         (ResultsTable.prototype._showHeader): Use DocumentExtension functions.
113         (ResultsTable.prototype._showGraph): Use DocumentExtension functions and create a real button for "Graph..." option.
114         (ResultsTable.prototype._showJSON): Use DocumentExtension functions and create a real button for "JSON..." option.
115         (Options): Deleted.
116         
117         * Animometer/runner/animometer.html: Restructure the page to use the flex box layout.
118         
119         * Animometer/runner/resources/animometer.css:
120         (html,body):
121         (button):
122         
123         (button.large-button):The large button appears in the animometer.html.
124         (button.large-button:active):
125         (button.large-button:disabled):
126         
127         (button.small-button): The small button appears in the results table.
128         (button.small-button:active):
129         
130         (.tree): The tree class is used to list the suites and their tests.
131         (.tree .expand-button): This button expands a tree element.
132         (.tree .expand-button ~ ul): Hide the children (<ul>...</ul>) of a parent node by default.
133         (.tree .expand-button:checked ~ ul): Show the children of a parent node only when checked.
134         (.tree ul): Hide the list bullets.
135         (.tree li): Indent every node in the tree relative to its parent.
136         (.tree ul li): Indent all the non top level nodes only (the tests nodes in our case).
137         (.tree > li:last-child): Do not indent the bottom of the last child node.
138         (.tree-label): Style for all the labels in the tree.
139         (label.tree-label): Style for the labels in the top level only (the suites nodes in our case).
140         (label.tree-label:before): Style the unchecked case of the expand-button.
141         (:checked ~ label.tree-label:before): Style the checked case of the expand-button.
142         
143         (table.results-table): The results table appears while running the test and at the end.
144         (.results-table td):
145         (.results-table th):
146         
147         (div.results-json): The JSON div appears per test or for the whole run.
148         
149         (main): This is the flex box container.
150         
151         (section): A section is displayed exclusively inside the <main>. It is hidden by default.
152         (section.selected): When it is selected, its layout is flex layout.
153         (section > footer): The header or the footer of a section should not take more than 15% of the container.
154         
155         (section#home): The home section has <suites> and <options> parts to be laid out in the middle.
156         (section#home > options): 
157         (section#home > suites): The <suites> should not take more than 40% of the width.
158         (section#home > options > label): The benchmark title.
159         (section#home > header > h2): The benchmark title.
160         (section#home > options > label > input[type="number"]): Sets the width of the option edit control.
161         
162         (section#running): The running section contain the runner <iframe> which takes the whole area of the <main>.
163         (section#running > #running-test): This is the <iframe> container.
164         (section#running > #running-test > iframe): The <iframe> is created by the runner for each test.
165         (section#running > #progress): This is the progress bar.
166         (section#running > #progress > #progress-completed): This is another element which grows while the runner is progressing.
167         (section#running > #record): This the container of the record results table which is shown while running a test.
168         
169         (section#results):
170         (section#json):
171         (section#test-json):
172         (section#test-graph): All these sections have the same layout. A <data> element is laid out between <header> and <footer>.
173
174         (section#results > data):
175         (section#json > data):
176         (section#test-json > data):
177         (section#test-graph > data): The <data> element should take 70% of the <section>.
178         
179         (section#test-graph > data > svg):
180         (.axis line):
181         (.left-samples): These styles are for the d3 graph.
182         
183         (section#test-json > data): This is the style of the JSON <data> element.
184         
185         (iframe): Deleted.
186         (label, p): Deleted.
187         (section > p): Deleted.
188         (section#home > p): Deleted.
189         (section#home > p:first-child): Deleted.
190         (#testContainer): Deleted.
191         (section#running #progress-completed): Deleted.
192         (section#results > table): Deleted.
193         (section#results > table td, th): Deleted.
194         (section#results > table tr.alt, td): Deleted.
195         (section#results > table th): Deleted.
196         (section#json > textarea): Deleted.
197         (.options): Deleted.
198         (.options p): Deleted.
199         (#suites ul): Deleted.
200         (#suites ul ul): Deleted.
201         (#suites ul ul input, #suites ul ul label): Deleted.
202         (#suites.showTests ul ul): Deleted.
203         (.column): Deleted.
204         (input[type="number"]): Deleted.
205         (.buttons): Deleted.
206         (.small-button): Deleted.
207         (#graphContainer): Deleted.
208         (.right-samples): Deleted.
209         (.sample-time): Deleted.
210         (.left-mean): Deleted.
211         (.right-mean): Deleted.
212         
213         * Animometer/runner/resources/animometer.js:
214         (window.benchmarkRunnerClient.initialize): Initialize the client object with the options and the suites.
215         (window.benchmarkRunnerClient.willStartFirstIteration): Use new css selectors for results and the record table.
216         (window.benchmarkRunnerClient.didFinishLastIteration): Move the code which sets the JSON text to sectionsManager.showJSON().
217         
218         (window.sectionsManager): Responsible of managing the <section>s elements inside animometer.html.
219         (window.sectionsManager._sectionHeaderH1Element): Return the <h1> inside the <header> of a given section.
220         (window.sectionsManager._sectionDataDivElement): Return the <div> inside the <data> of a given section.
221         (window.sectionsManager.showScore): Show the score of the last benchmark run.
222         (window.sectionsManager.showTestName): Show the test name for detailed results <section>.
223         (window.sectionsManager.showJSON): Shows the JSON text of the last benchmark or for a specific test.
224         (window.sectionsManager.showSection): Shows a specific <section> in the <main> container.
225         (window.sectionsManager.setupSectionStyle): Sets css attributes for all the <section>s.
226         (window.sectionsManager.setupRunningSectionStyle): Sets the css attributes for the running <section> only.
227         
228         (window.optionsManager): Responsible of managing the user options and streaming them to/form the localStorage.
229         (window.optionsManager._optionsElements): Returns the children <input> elements of the <options>.
230         (window.optionsManager.updateUIFromLocalStorage): Restore the values of the <options> UI elements from the local storage.
231         (window.optionsManager.updateLocalStorageFromUI): Saves the values of the <options> UI elements to the local storage.
232         
233         (window.suitesManager): Responsible of managing the user suites and streaming them to/form the localStorage.
234         (window.suitesManager._treeElement): Returns the suites tree container element.
235         (window.suitesManager._suitesElements): Returns a list of the suites elements.
236         (window.suitesManager._checkboxElement): Returns the checkbox element of a given suite.
237         (window.suitesManager._localStorageNameForTest): Generates a string for the tuple <suite, test> to be saved in the localStorage.
238         (window.suitesManager._updateSuiteCheckboxState): Updates the state of a suite checkbox from the state of its tests' checkboxes.
239         (window.suitesManager._updateStartButtonState): Updates the state of the start button from the state of the suites' checkboxes.
240         (window.suitesManager._onChangeSuiteCheckbox): Called when a suite checkbox is clicked.
241         (window.suitesManager._onChangeTestCheckbox): Called when a test checkbox is clicked.
242         (window.suitesManager._createSuiteElement): Creates suite node in the suites tree.
243         (window.suitesManager._createTestElement): Creates test node in the suites tree.
244         (window.suitesManager.createElements): Creates the suites tree dynamically from the array Suites.
245         (window.suitesManager.updateUIFromLocalStorage): Restore the values of the <suites> UI elements from the local storage.
246         (window.suitesManager.updateLocalStorageFromUI): aves the values of the <suites> UI elements to the local storage.
247         
248         (window.benchmarkController): This is the UI controller of the animometer.html page.
249         (window.benchmarkController.initialize): Called when the animometer.html page is loaded.
250         (window.benchmarkController._runBenchmark): Starts a benchmark run.
251         (window.benchmarkController.startTest): Called when the "Start Test" button is clicked.
252         (window.benchmarkController.showResults): Called at the end of the test to show the final results.
253         (window.benchmarkController.showJson): Called from the results page to show the JSON of the last benchmark run.
254         (window.benchmarkController.showTestGraph): Called from the results the table to show a graph for the samples of a specific test.
255         (window.benchmarkController.showTestJSON): Called from the results the table to show a JSON for the samples of a specific test.
256         
257         (showSection): Deleted.
258         (startTest): Deleted.
259         (showResults): Deleted.
260         (showJson): Deleted.
261         (showTestGraph): Deleted.
262         (showTestJSON): Deleted.
263         (initialize.toggleTestsCheckbox.onchange): Deleted.
264         (initialize): Deleted.
265         (updateSuiteSelection): Deleted.
266         (updateTestSelection): Deleted.
267         (updateSuiteCheckbox): Deleted.
268         (localStorageNameForTest): Deleted.
269         (populateSettings.): Deleted.
270         (populateSettings): Deleted.
271         
272         * Animometer/runner/resources/benchmark-runner.js:
273         (BenchmarkRunner): Pass the frameContainer element to the BenchmarkRunner.
274         (BenchmarkRunner.prototype._appendFrame): Remove unused parameter unwanted styling code.
275         (BenchmarkRunner.prototype.runMultipleIterations):  Use the this._client.iterationCount instead of passing it as a parameter also.
276
277         * Animometer/runner/resources/graph.js:
278         (graph): Calculate the size of the chart from the container element.
279         
280         * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
281         (BouncingSvgImage):
282         * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
283         (BouncingSvgParticlesStage.prototype._createDefs):
284         (BouncingSvgParticlesStage.prototype._createClipStar):        
285         * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
286         (BouncingSvgShape.prototype._createShape):
287         (BouncingSvgShapesStage.prototype.createGradient):
288         Call DocumentExtension.createSvgElement() instead of calling Utilities.createSvgElement().
289         
290         * Animometer/tests/resources/main.js:
291         (Animator.prototype.animate):
292         (Benchmark):
293         (Benchmark.prototype.update):
294         * Animometer/tests/resources/stage.js:
295         (StageBenchmark.prototype.showResults):
296         Rename the options to match the <input> ids in animometer.html.
297         
298         * Animometer/tests/resources/utilities.js:
299         (window.Utilities.createSvgElement): Deleted.
300         
301         * Animometer/tests/text/layering-text.html:
302         * Animometer/tests/text/resources/layering-text.js:
303         (LayeringTextStage):
304         (LayeringTextStage.prototype._setFontSize): Sets the size of the text dynamically such that they all fit in one stage.
305
306 2015-10-29  Simon Fraser  <simon.fraser@apple.com>
307
308         Animometer computes frame rate incorrectly
309         https://bugs.webkit.org/show_bug.cgi?id=150698
310
311         Reviewed by Tim Horton.
312         
313         The existing code incremented this._frameCount after checking against this._dropFrameCount.
314         This has the effect of setting this._measureTimeOffset one frame too late, so
315         we were measuring only two frames, not three, and thus computing an incorrect fps.
316
317         * Animometer/tests/resources/main.js:
318         (Animator.prototype.animate):
319
320 2015-10-27  Jon Lee  <jonlee@apple.com>
321
322         Add an option to make the graphics benchmark runs a specific test
323         https://bugs.webkit.org/show_bug.cgi?id=150528
324         rdar://problem/23246614
325
326         Reviewed by Zalan Bujtas.
327
328         Add a checkbox that lets the user list all of the available tests, and select
329         the ones to run repeatedly. The test checkboxes will update the state of the suite
330         checkbox. The selected tests are stored in localStorage to make it easy to do
331         repeated runs.
332
333         * Animometer/runner/animometer.html: Add a checkbox to show individual tests.
334         Update other markup.
335         * Animometer/runner/resources/animometer.css: Make the settings area a little wider
336         to accommodate the longer names of the tests
337         * Animometer/runner/resources/animometer.js:
338         (startBenchmark): Change the way that the suites are fed into the benchmark
339         runner. Go through each of the suites and their tests, and create a new Suite
340         with just the enabled tests. While enumerating store the enabled tests into
341         localStorage.
342         (initialize): Initialization routine (taking over populateSettings). When the
343         checkbox for showing tests is toggled, add or remove a class on #suites to show
344         the individual tests.
345         (updateSuiteSelection): Called whenever the user toggles the checkbox for a suite.
346         Either select all or none of the tests.
347         (updateTestSelection): Called whenever the user toggles the checkbox for a test.
348         (updateSuiteCheckbox): Update the state of the test's suite's checkbox to
349         indeterminate if there is at least one enabled test, unchecked if none are selected,
350         and checked if all are selected.
351         (localStorageNameForTest): Helper function to get the name of the test to use as
352         a key to localStorage.
353         (populateSettings): Add the tests for each suite into an inner list.
354
355 2015-10-26  Said Abou-Hallawa  <sabouhallawa@apple.com>
356
357         Add an option to output the results of the graphics benchmark in JSON format
358         https://bugs.webkit.org/show_bug.cgi?id=150484
359         <rdar://problem/23243721>
360
361         Reviewed by Darin Adler.
362
363         * Animometer/resources/extensions.js:
364         (ResultsDashboard): A new class to hold the iterations results.
365         (ResultsDashboard.prototype.push): Appends an iteration results;
366         (ResultsDashboard.prototype.toJSON): Converts the iterations results to JSON format.
367
368         (RecordTable.prototype.clear): Clears the results table.
369         (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
370         (RecordTable.prototype._showHeader): Shows the table header titles.
371         (RecordTable.prototype._showEmpty): Shows an empty table cell.
372         (RecordTable.prototype._showValue): Shows a number value in the results table.
373         (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
374         (RecordTable.prototype._showTest): Shows the results of a single test.
375         (RecordTable.prototype._showSuite): Shows the results of a single suite.
376         (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
377         (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations. 
378         
379         (ResultsTable): RecordTable was renamed to ResultsTable.
380         (ResultsTable.prototype.clear): Clears the table element.
381         (ResultsTable.prototype._showHeaderRow): Shows a row in the results table header.
382         (ResultsTable.prototype._showHeader): Shows the results table header.
383         (ResultsTable.prototype._showEmpty): Shows an empty table cell.
384         (ResultsTable.prototype._showText): Shows a string in a new table cell.
385         (ResultsTable.prototype._showFixedNumber): Shows a number in a new table cell.
386         (ResultsTable.prototype._showGraph): Shows a button for the sampled data graph.
387         (ResultsTable.prototype._showJSON): Shows a button for the sampled data JSON.
388         (ResultsTable.prototype._showTest): Shows the results of a single test.
389         (ResultsTable.prototype._showSuite): Shows the results of a single suite.
390         (ResultsTable.prototype._showIteration): Shows the results of a single iteration.
391         (ResultsTable.prototype.showRecord): Shows a single iteration for a single test.
392         (ResultsTable.prototype.showIterations): Shows all the results.
393         (RecordTable): Deleted.
394         (RecordTable.prototype.clear): Deleted.
395         (RecordTable.prototype._showTitles): Deleted.
396         (RecordTable.prototype._showHeader): Deleted.
397         (RecordTable.prototype._showEmpty): Deleted.
398         (RecordTable.prototype._showValue): Deleted.
399         (RecordTable.prototype._showSamples): Deleted.
400         (RecordTable.prototype._showTest): Deleted.
401         (RecordTable.prototype._showSuite): Deleted.
402         (RecordTable.prototype.showRecord): Deleted.
403         (RecordTable.prototype.showIterations): Deleted.
404         
405         * Animometer/resources/sampler.js:
406         (Sampler.prototype.startSampling): Use forEach.
407         (Sampler.prototype.sample): Use forEach.
408         (Sampler.prototype.toJSON): Converts the sampler data to JSON format.
409         
410         * Animometer/resources/strings.js: Added.
411         This new file will be used to associate the strings used by the benchmark
412         with IDs. A string can be changed in one place without having to change
413         all the instances of this string in multiple files. There two groups of
414         strings in this file. The first one is used by the UI elements and the second
415         group is used when constructing the results JSON.
416         
417         * Animometer/runner/animometer.html:
418         * Animometer/runner/resources/animometer.css:
419         
420         * Animometer/runner/resources/animometer.js:
421         (window.benchmarkRunnerClient.willAddTestFrame):
422         (window.benchmarkRunnerClient.willStartFirstIteration):
423         (window.benchmarkRunnerClient.didRunSuites):
424         (window.benchmarkRunnerClient.didFinishLastIteration):
425         Make benchmarkRunnerClient uses ResultsDashboard instead of _iterationsSamplers
426         Get the JSON from ResultsDashboard.toJSON() and pass it to ResultsTable.showIterations().
427         Also set the textContent of the "#json" textarea with the results JSON.
428         
429         (showResults): Delete unneeded code.
430         (showJson): Shows the "json" section.
431         (showTestGraph): Rename showGraph() to be showTestGraph().
432         (showTestJSON): Shows the JSON of a single testResults.
433         (showGraph): Deleted.
434         
435         * Animometer/runner/resources/tests.js:
436         Use the string table instead of putting literal strings.
437
438         * Animometer/tests/resources/stage.js:
439         (StageBenchmark.prototype.showResults):
440         Fix the parameters which are passed to RecordTable.showRecord().
441         
442         * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
443         * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
444         * Animometer/tests/bouncing-particles/bouncing-css-images.html:
445         * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
446         * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
447         * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
448         * Animometer/tests/examples/canvas-electrons.html:
449         * Animometer/tests/examples/canvas-stars.html:
450         * Animometer/tests/simple/simple-canvas-paths.html:
451         * Animometer/tests/template/template-canvas.html:
452         * Animometer/tests/template/template-css.html:
453         * Animometer/tests/template/template-svg.html:
454         * Animometer/tests/text/layering-text.html:
455         Include the new strings.js file in all the test files.
456
457 2015-10-12  Jon Lee  <jonlee@apple.com>
458
459         Add canvas line dash test
460         https://bugs.webkit.org/show_bug.cgi?id=150078
461         <rdar://problem/23082347>
462
463         Reviewed by Dean Jackson.
464
465         * Animometer/runner/resources/tests.js: Add line dash test.
466         * Animometer/tests/simple/resources/simple-canvas-paths.js:
467         (CanvasLineDashStage): Create a new stage with a default dash pattern and stroke style.
468         Maintain a step which will animate the dash.
469         (CanvasLineDashStage.prototype.animate): Render the line path with the dash. Increment
470         the dash offset to animate.
471         (CanvasPathBenchmark.prototype.createStage): Add the test.
472
473 2015-10-12  Jon Lee  <jonlee@apple.com>
474
475         Add canvas line path tests
476         https://bugs.webkit.org/show_bug.cgi?id=150076
477         <rdar://problem/23082285>
478
479         Reviewed by Dean Jackson.
480
481         * Animometer/runner/resources/tests.js: Add new line path tests, with different
482         line joins.
483         * Animometer/tests/simple/resources/simple-canvas-paths.js:
484         (CanvasLinePathStage): The stage is the same as the SimpleCanvasPathStrokeStage
485         but sets the lineJoin on the context.
486         (CanvasPathBenchmark.prototype.createStage): Add the tests.
487
488 2015-10-12  Jon Lee  <jonlee@apple.com>
489
490         Add missing paint objects for arc and arcTo fills
491         https://bugs.webkit.org/show_bug.cgi?id=150075
492         <rdar://problem/23082233>
493
494         Reviewed by Dean Jackson.
495
496         * Animometer/tests/simple/resources/simple-canvas-paths.js: Add missing paint objects
497         for arcTo and arc segment fills.
498         (CanvasArcToSegmentFill):
499         (CanvasArcToSegmentFill.prototype.draw):
500         (CanvasArcSegmentFill):
501         (CanvasArcSegmentFill.prototype.draw):
502
503 2015-10-12  Jon Lee  <jonlee@apple.com>
504
505         Add canvas line segment tests
506         https://bugs.webkit.org/show_bug.cgi?id=150073
507         <rdar://problem/23082138>
508
509         Reviewed by Dean Jackson.
510
511         * Animometer/runner/resources/tests.js: Add new line segment tests, with different
512         line caps.
513         * Animometer/tests/simple/resources/simple-canvas-paths.js:
514         (CanvasLineSegment): Add new line segment paint object.
515         (CanvasLineSegmentStage): Create a new stage that sets the lineCap.
516
517 2015-10-12  Jon Lee  <jonlee@apple.com>
518
519         Add canvas path fill tests
520         https://bugs.webkit.org/show_bug.cgi?id=150071
521         <rdar://problem/23082001>
522
523         Reviewed by Dean Jackson.
524
525         * Animometer/runner/resources/tests.js: Add new pathTypes for path fills.
526         * Animometer/tests/simple/resources/simple-canvas-paths.js:
527         (CanvasLinePoint): Add basic point for a line, and call lineTo.
528         (SimpleCanvasPathFillStage): Add a new stage similar to SimpleCanvasPathStrokeStage.
529         (CanvasPathBenchmark.prototype.createStage): Add the tests.
530
531 2015-10-12  Jon Lee  <jonlee@apple.com>
532
533         Add canvas path tests
534         https://bugs.webkit.org/show_bug.cgi?id=150067
535         rdar://problem/23081463
536
537         Reviewed by Dean Jackson.
538
539         * Animometer/runner/resources/tests.js: Add a quadratic and bezier path test.
540
541         * Animometer/tests/simple/resources/simple-canvas.js:
542         (SimpleCanvasStage.prototype.tune): This kind of test joins all of the segments
543         into one long path, and tries to render that one path. Random points make it
544         difficult to tell what is going on, so add a parameter to the constructor to
545         confine the area where the random coordinates can land. The more complicated the
546         case is, the larger an area the path will cover. Add an artificial minimum so
547         that the first 200 points aren't confined to a space that is too small.
548
549         * Animometer/tests/simple/resources/simple-canvas-paths.js:
550         (SimpleCanvasPathStrokeStage): Add a new kind of stage that inherits from
551         SimpleCanvasStage. Each time the frame animates a random line width and stroke
552         color are chosen. The path setup is done outside of each paint object.
553         (CanvasQuadraticPoint): This point just calls quadraticCurveTo.
554         (CanvasPathBenchmark.prototype.createStage): Add the tests.
555
556 2015-10-12  Jon Lee  <jonlee@apple.com>
557
558         Add basic canvas tests
559         https://bugs.webkit.org/show_bug.cgi?id=150066
560         rdar://problem/23081143
561
562         Reviewed by Dean Jackson.
563
564         This adds a new test suite that will cover all of the path-based canvas calls.
565         The patch will be divided up to cover tests with similar techniques.
566
567         The simplest version uses a SimpleCanvasStage.
568
569         * Animometer/runner/resources/tests.js: Add tests for quadratic, bezier, arcTo,
570         arc, and rect segments. Also include arcTo, arc, and rect fills.
571         * Animometer/tests/resources/stage.js:
572         (Stage.prototype.randomBool): Added for counterclockwise property for arc segments.
573         (Stage.prototype.randomInt): Fix how values are rounded, used by randomBool. It should
574         round instead of flooring everything.
575         * Animometer/tests/simple/resources/simple-canvas.js: Added. Defines common classes
576         used by all simple canvas tests. The page reads best bottom to top.
577         (SimpleCanvasStage): Basic stage. Pass a canvasObject which will be used to create new
578         objects as needed in tune().
579         (SimpleCanvasStage.prototype.tune): Modeled on other tests. Adds and removed objects
580         as specified by the provided |count|.
581         (SimpleCanvasStage.prototype.animate): Iterate over all the objects and ask them to draw.
582         There is no "animating" of the objects; they will just paint statically on the canvas.
583         (SimpleCanvasAnimator): Basic animator clears the canvas prior to painting.
584         (SimpleCanvasBenchmark): Hard-code the feedback loop parameters instead of including
585         them in the query parameters to the test URLs.
586         (SimpleCanvasBenchmark.prototype.createAnimator):
587         * Animometer/tests/simple/simple-canvas-paths.html: Added.
588
589         * Animometer/tests/simple/resources/simple-canvas-paths.js: Added. There is no "animating"
590         of these objects--they just paint statically on the canvas.
591         (CanvasQuadraticSegment): Paint a quadratic segment stroke.
592         (CanvasBezierSegment): Paint a bezier segment stroke.
593         (CanvasArcToSegment): Paint an arcTo stroke.
594         (CanvasArcSegment): Paint an arc stroke.
595         (CanvasRect): Paint a rect.
596         (CanvasRectFill): Paint a filled rect.
597
598         (CanvasPathBenchmark):
599         (CanvasPathBenchmark.prototype.createStage): Look for the pathType and create the
600         stage using the right paint object.
601         (window.benchmarkClient.create):
602
603 2015-10-12  Jon Lee  <jonlee@apple.com>
604
605         Refactor tune() to pass in an integer-based count
606         https://bugs.webkit.org/show_bug.cgi?id=150060
607         <rdar://problem/23079425>
608
609         Reviewed by Dean Jackson.
610
611         All of the tune functions do an initial step of flooring the
612         # of painting objects to add or remove. Factor that out since
613         the complexity of all of these tests is always expressed in terms
614         of countable items.
615
616         * Animometer/tests/resources/main.js:
617         (Benchmark.prototype.update): Update the tuneValue.
618
619         * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
620         (BouncingParticlesStage.prototype.tune): Remove the count adjustment.
621         * Animometer/tests/examples/resources/canvas-electrons.js:
622         (CanvasElectronsStage.prototype.tune): Ditto.
623         * Animometer/tests/examples/resources/canvas-stars.js:
624         (CanvasStarsStage.prototype.tune): Ditto.
625         * Animometer/tests/text/resources/layering-text.js:
626         (LayeringTextStage.prototype.tune): Ditto.
627
628 2015-10-12  Jon Lee  <jonlee@apple.com>
629
630         Store test-interval in localStorage
631         https://bugs.webkit.org/show_bug.cgi?id=150055
632         <rdar://problem/23078879>
633
634         Reviewed by Dean Jackson.
635
636         * Animometer/runner/resources/animometer.js:
637         (populateSettings): Keep track of the specified test interval in localStorage
638         to make it easy to repeat a test suite.
639
640 2015-10-12  Jon Lee  <jonlee@apple.com>
641
642         Remove "../tests/" from the URLs of all tests
643         https://bugs.webkit.org/show_bug.cgi?id=150054
644         <rdar://problem/23078784>
645
646         Reviewed by Dean Jackson.
647
648         Presumably all tests will be running from the tests/ directory,
649         so we don't have to specify it in all of the test URLs.
650
651         * Animometer/runner/resources/benchmark-runner.js:
652         (BenchmarkRunnerState.prototype.prepareCurrentTest): Prepend
653         "../tests/" to all tests.
654         * Animometer/runner/resources/tests.js: Remove "../tests/" from
655         all URLs.
656
657 2015-10-12  Jon Lee  <jonlee@apple.com>
658
659         Refactor test suites to a separate class.
660         https://bugs.webkit.org/show_bug.cgi?id=150053
661         <rdar://problem/23078645>
662
663         Reviewed by Dean Jackson.
664
665         Create a Suite class to refactor out prepare() and run().
666         Generate the checkboxes representing the suites using Suites
667         instead of maintaining a separate list. Also, save the
668         selections out to localStorage.
669
670         * Animometer/runner/animometer.html: Remove the explicitly listed
671         suites. These will be generated from Suites instead.
672         * Animometer/runner/resources/animometer.js:
673         (populateSettings): Iterate through Suites, and create the
674         label and checkbox. Attach the Suite object to the checkbox so
675         when the benchmark is started, we get direct access. Initialize
676         the checkmark based on its value in localStorage. Set this to
677         run when DOMContentLoaded is dispatched.
678         (startBenchmark): Grab all of the checkboxes, inspect their
679         values, add it to enabledSuites if selected. Remember whether
680         the suite was enabled in localStorage, so that it's easy to do
681         repeated runs.
682         * Animometer/runner/resources/tests.js:
683         (Suite): Create a new Suite class. Refactor out prepare() and
684         run(), since all of them have the same implementation. Populate
685         Suites with Suite instances instead of generic objects.
686
687 2015-10-12  Jon Lee  <jonlee@apple.com>
688
689         Update graph styles for legibility.
690         https://bugs.webkit.org/show_bug.cgi?id=150052
691         <rdar://problem/23078503>
692
693         Reviewed by Dean Jackson.
694
695         * Animometer/runner/resources/animometer.css: Update colors and
696         stroke thicknesses to make the graphs easier to read.
697         (.smaple-time): Correct to .sample-time
698         * Animometer/runner/resources/graph.js:
699         (graph): Ditto.
700
701 2015-10-12  Jon Lee  <jonlee@apple.com>
702
703         Update graph styles for legibility.
704         https://bugs.webkit.org/show_bug.cgi?id=150052
705         <rdar://problem/23078503>
706
707         Reviewed by Dean Jackson.
708
709         * Animometer/runner/resources/animometer.css: Update colors and
710         stroke thicknesses to make the graphs easier to read.
711         (.smaple-time): Correct to .sample-time
712         * Animometer/runner/resources/graph.js:
713         (graph): Ditto.
714
715 2015-10-12  Filip Pizlo  <fpizlo@apple.com>
716
717         Unreviewed, revert an unintended commit.
718
719         * JetStream/Octane2/crypto.js:
720         (montRevert):
721         (montReduce):
722
723 2015-10-05  Said Abou-Hallawa  <sabouhallawa@apple.com>
724
725         Add a graphics benchmark
726         https://bugs.webkit.org/show_bug.cgi?id=149053
727         <rdar://problem/18984169>
728
729         Reviewed by Dean Jackson.
730
731         Instead of measuring the FPS of the animation, this benchmark measures the
732         test complexity when rendering at a set-point FPS which should be lower
733         than 60 FPS. This benchmark tries to stay at the set-point FPS by using
734         a closed loop control system PID function. The gain of the system is passed
735         as a parameter when running the test. Measuring the FPS faithfully results
736         very fluctuating values. A Kalman filter is used to give a better estimate
737         for the current FPS.
738
739         The animation of the tests is done manually. requestAnimationFrame() is
740         called with a callback. Inside this callback, the test is animating by
741         changing the positions of the elements inside the page. The test complexity
742         may change also if the current FPS is not equal to the desired FPS.
743
744         In this patch, the benchmark and the tests are included. The shared code
745         and the tests runner are included in separate patches.
746
747         * Animometer/runner/animometer.html:
748         * Animometer/runner/resources/animometer.js:
749         Add two new examples for more complex animation techniques.
750         Add an option to show/hide the test running results which is off by default.
751
752         * Animometer/runner/resources/tests.js: Added.
753         (suiteFromName): Returns a suite given its name.
754         (testFromName): Returns a test given its suite and name.
755
756         * Animometer/tests: Added.
757         This directory includes all the test suites to be run by the benchmark.
758         runner. All the tests should try to run on three stages: CSS, canvas and
759         SVG.
760         
761         * Animometer/tests/bouncing-particles: Added.
762         * Animometer/tests/bouncing-particles/resources: Added.
763         The bouncing particles test is an example of a simple animation technique.
764         
765         * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Added.
766         * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Added.
767         * Animometer/tests/bouncing-particles/bouncing-css-images.html: Added.
768         * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Added.
769         * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Added.
770         * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Added.
771         Bouncing particles test pages.
772
773         * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Added.
774         (BouncingParticle): Base class for a bouncing particle.
775         (BouncingParticle.prototype.center): Returns the center point or the particle.
776         (BouncingParticle.prototype.animate): Moves the particle based on its current position, angle and velocity.
777         
778         (BouncingParticlesAnimator): A sub class of Animator.
779         
780         (BouncingParticlesStage): Represents the container of all the bouncing particles.
781         (BouncingParticlesStage.prototype.parseShapeParamters): Gets the shape parameters for shape animating tests.
782         (BouncingParticlesStage.prototype.randomRotater): Creates a rotater for the particles.
783         (BouncingParticlesStage.prototype.animate): Animates all the particles.
784         (BouncingParticlesStage.prototype.tune): Changes the test by adding or removing particles.
785         
786         (BouncingParticlesBenchmark): Runs the benchmark for bouncing particles test.
787         (BouncingParticlesBenchmark.prototype.createAnimator): Creates an animator of type BouncingParticlesAnimator.
788
789         * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: Added.
790         (BouncingCssShape): A sub class of BouncingParticle for animating CSS shapes.
791         (BouncingCssShape.prototype._createSpan): Creates a <span> element and takes the shape and clipping classes into consideration.
792         (BouncingCssShape.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
793         (BouncingCssShape.prototype.animate): Rotates and moves the shape to a new location.
794         
795         (BouncingCssShapesStage): A sub class of BouncingParticlesStage for animating CSS shapes.
796         (BouncingCssShapesStage.prototype.createParticle): Creates a particle of type BouncingCssShape.
797         (BouncingCssShapesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
798         
799         (BouncingCssShapesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS shapes.
800         (BouncingCssShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCssShapesStage.
801         (window.benchmarkClient.create): Creates a benchmark of type BouncingCssShapesBenchmark.
802         
803         * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: Added.
804         (BouncingCssImage): A sub class of BouncingParticle for animating CSS images.
805         (BouncingCssImage.prototype._move): Move the particle to a new location. Apply transform since it does not require layout.
806         (BouncingCssImage.prototype.animate): Rotates and moves the shape to a new location.
807         
808         (BouncingCssImagesStage): A sub class of BouncingParticlesStage for animating CSS images.
809         (BouncingCssImagesStage.prototype.createParticle): Creates a particle of type BouncingCssImage.
810         (BouncingCssImagesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.
811         
812         (BouncingCssImagesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS images.
813         (BouncingCssImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCssImagesStage.
814         (window.benchmarkClient.create): Creates a benchmark of type BouncingCssImagesBenchmark.
815         
816         * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Added.
817         (BouncingCanvasParticle): A base sub-class of BouncingParticle for animating canvas particles.
818         (BouncingCanvasParticle.prototype._applyRotation): Apply the particle rotation-around-center transform to the canvas context.
819         (BouncingCanvasParticle.prototype._applyClipping): Apply the particle clipping to the canvas context.
820         (BouncingCanvasParticle.prototype._draw): A non-implemented version of the drawing function.
821         (BouncingCanvasParticle.prototype.animate): Carries out all the steps to redraw the canvas particle.
822         
823         (BouncingCanvasParticlesStage): A base sub-class of BouncingParticlesStage for animating canvas particles.
824         
825         (BouncingCanvasParticlesAnimator): A concrete sub-class of BouncingParticlesAnimator for animating canvas particles.
826         (BouncingCanvasParticlesAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
827         
828         (BouncingCanvasParticlesBenchmark): A base sub-class of StageBenchmark for animating canvas particles.
829         (BouncingCanvasParticlesBenchmark.prototype.createAnimator): Creates the canvas particles animator.
830         
831         * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Added.
832         (BouncingCanvasShape): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
833         (BouncingCanvasShape.prototype._applyFill): Sets the fillStyle in the canvas context.
834         (BouncingCanvasShape.prototype._drawShape): Carries out the actual drawing.
835         (BouncingCanvasShape.prototype._draw): Carries out all the steps to draw the shape.
836         
837         (BouncingCanvasShapesStage): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
838         (BouncingCanvasShapesStage.prototype.createParticle): Creates a particle of type BouncingCanvasShape.
839         
840         (BouncingCanvasShapesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas shapes.
841         (BouncingCanvasShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasShapesStage.
842         (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasShapesBenchmark.
843
844         * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Added.
845         (BouncingCanvasImage): A concrete sub-class of BouncingCanvasParticle for animating canvas images.
846         (BouncingCanvasImage.prototype._draw): Draws an image on the context of a canvas.
847         
848         (BouncingCanvasImagesStage): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
849         (BouncingCanvasImagesStage.prototype.createParticle): Creates a particle of type BouncingCanvasImage.
850         
851         (BouncingCanvasImagesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
852         (BouncingCanvasImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasImagesStage.
853         (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasImagesBenchmark.
854
855         * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Added.
856         (BouncingSvgParticle): A base sub-class of BouncingParticle for animating SVG particles.
857         (BouncingSvgParticle.prototype._applyClipping): Apply the particle clipping by setting the 'clip-path' attribute of the SVGElement.
858         (BouncingSvgParticle.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
859         (BouncingSvgParticle.prototype.animate): Rotates and moves the shape to a new location.
860         (BouncingSvgParticlesStage): A sub class of BouncingParticlesStage for animating SVGElements.
861         (BouncingSvgParticlesStage.prototype._createDefs): Creates an SVGDefsElement.
862         (BouncingSvgParticlesStage.prototype._ensureDefsIsCreated): Ensures there is only one SVGDefsElement is created.
863         (BouncingSvgParticlesStage.prototype._createClipStar): Creates an SVGClipPathElement and sets its 'd' attribute to a star like shape.
864         (BouncingSvgParticlesStage.prototype.ensureClipStarIsCreated): Ensure there is only one star SVGClipPathElement is created.
865         (BouncingSvgParticlesStage.prototype.particleWillBeRemoved): Remove the corresponding element form the parent children list.
866
867         * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Added.
868         (BouncingSvgShape): A concrete sub-class of BouncingSVGParticle for animating SVG shapes.
869         (BouncingSvgShape.prototype._createShape): Creates an SVG shape.
870         (BouncingSvgShape.prototype._applyFill): Applies the selected fill style to the SVG shape.
871         
872         (BouncingSvgShapesStage): A concrete sub-class of BouncingSvgParticlesStage for animating SVG shapes.
873         (BouncingSvgShapesStage.prototype.createGradient): Creates an SVGLinearGradientElement.
874         (BouncingSvgShapesStage.prototype.createParticle): Creates a particle of type BouncingSvgShape.
875         (BouncingSvgShapesStage.prototype.particleWillBeRemoved): Ensures the attached SVGLinearGradientElement is removed from the SVGDefsElement.
876         
877         (BouncingSvgShapesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
878         (BouncingSvgShapesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgShapesStage.
879         (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgShapesBenchmark.
880         
881         * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Added.
882         (BouncingSvgImage): A concrete sub-class of BouncingSVGParticle for animating SVG images.
883         
884         (BouncingSvgImagesStage): A concrete sub-class of BouncingSVGParticlesBenchmark for animating SVG images.
885         (BouncingSvgImagesStage.prototype.createParticle): Creates a particle of type BouncingSvgImage.
886         
887         (BouncingSvgImagesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
888         (BouncingSvgImagesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgImagesStage.
889         (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgImagesBenchmark.
890
891         * Animometer/tests/examples: Added.
892         * Animometer/tests/examples/canvas-electrons.html: Added.
893         * Animometer/tests/examples/canvas-stars.html: Added.
894         Examples test pages. 
895         
896         * Animometer/tests/examples/resources: Added.
897         * Animometer/tests/examples/resources/canvas-electrons.js: Added.
898         (CanvasElectron): An object which draws and animate a electron object on a canvas stage.
899         (CanvasElectron.prototype._draw): Draws the electron object.
900         (CanvasElectron.prototype.animate): Animates the electron object.
901         
902         (CanvasElectronsStage): A concrete sub-class of Stage for animating electrons.
903         (CanvasElectronsStage.prototype.tune): Changes the test by adding or removing elements.
904         (CanvasElectronsStage.prototype.animate): Animates the test elements.
905         
906         (CanvasElectronsAnimator): A concrete sub-class of StageAnimator for animating canvas electrons.
907         (CanvasElectronsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
908         
909         (CanvasElectronsBenchmark): A concrete sub-class of StageBenchmark for animating electrons.
910         (CanvasElectronsBenchmark.prototype.createStage): Creates a stage of CanvasElectronsStage.
911         (CanvasElectronsBenchmark.prototype.createAnimator): Creates an animator of type CanvasElectronsAnimator.
912         (window.benchmarkClient.create): Creates a benchmark of type CanvasElectronsBenchmark.
913         
914         * Animometer/tests/examples/resources/canvas-stars.js: Added.
915         (CanvasStar): An object which draws and animate a star object on a canvas stage.
916         (CanvasStar.prototype._draw): Draws the star object.
917         (CanvasStar.prototype.animate): Animates the star object.
918         
919         (CanvasStarsStage): A concrete sub-class of Stage for animating stars.
920         (CanvasStarsStage.prototype.tune): Changes the test by adding or removing elements.
921         (CanvasStarsStage.prototype.animate): Animates the test elements.
922         
923         (CanvasStarsAnimator): A concrete sub-class of StageAnimator for animating canvas stars.
924         (CanvasStarsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.
925         
926         (CanvasStarsBenchmark): A concrete sub-class of Benchmark for animating stars.
927         (CanvasStarsBenchmark.prototype.createStage): Creates a stage of CanvasStarsStage.
928         (CanvasStarsBenchmark.prototype.createAnimator): Creates an animator of type CanvasStarsAnimator.
929         (window.benchmarkClient.create): Creates a benchmark of type CanvasStarsBenchmark.
930
931         * Animometer/tests/resources: Added.
932         This directory includes the script which is required to run an adaptive 
933         graphics benchmark. From an empty test page, the set of classes in this
934         directory are responsible for measuring the current frame rate and
935         changing the test to reach a desired FPS. It keeps asking the test page
936         to tune itself by a certain value to increase or decrease the frame rate.
937         It's also responsible for sampling the test state and the corresponding
938         frame rate.
939         
940         * Animometer/tests/resources/main.js: Added.
941         (BenchmarkState): Tracks the state of the benchmark test.
942         (BenchmarkState.prototype._timeOffset): Returns the timeOffset of a stage.
943         (BenchmarkState.prototype._message): Returns the message of a stage.
944         (BenchmarkState.prototype.update): Sets the currentTimeOffset to a new value.
945         (BenchmarkState.prototype.samplingTimeOffset): Returns the timeOffset of the sampling stage.
946         (BenchmarkState.prototype.currentStage): Returns the current stage of the benchmark.
947         (BenchmarkState.prototype.currentMessage): Returns the message of the current stage and timeOffset.
948         (BenchmarkState.prototype.currentProgress): Returns a percentage of how much the benchmark is running.
949         
950         (Animator): Manages animating the test.
951         (Animator.prototype.start): Called if animating using setInterval is requested.
952         (Animator.prototype.timeDelta): Returns the current timeDelta 
953         (Animator.prototype.animate): Manages the test animation.
954         (Animator.prototype.animateLoop): Called if animating using requestAnimationFrame is requested. 
955
956         (Benchmark): Manages running the test benchmark and recording the sampled data.
957         (Benchmark.prototype.start): Starts the benchmark.
958         (Benchmark.prototype.update): Called from the animator.animate() to change the complexity of the test.
959         (Benchmark.prototype.record): Shows the current (not final) results of the benchmark.
960         (Benchmark.prototype.resolveWhenFinished): Spins until the benchmark is finished and returns its results.
961         (Benchmark.prototype.run): Starts the test, runs it, waits until it is finished and return its results.
962         (window.runBenchmark): Called from the benchmark runner through the suite controller run-callback.
963
964         * Animometer/tests/resources/math.js: Added.
965         (Matrix): A matrix object.
966         (Vector3): A vector of size 3 object.
967         (Matrix3): A matrix of size 3x3 object.
968         
969         (PIDController): Closed-loop controller for a set-point y.
970         (PIDController.prototype._sat): Limits the output to a certain range.
971         (PIDController.prototype.tune): Given the current output of a system, it produces a new pid value for tuning it.
972         
973         (KalmanEstimator): Implement Kalman filter to get an estimate for a sampled data point.
974         (KalmanEstimator.prototype.estimate): Returns an estimate for for a sampled data point.
975
976         * Animometer/tests/resources/utilities.js: Added.
977         (window.Utilities._parse): Given a separator character, it pareses a string to a set of <key, value> pairs.
978         (window.Utilities.parseParameters): Parses a test parameters.
979         (window.Utilities.parseArguments): Parses a tag arguments.
980         (window.Utilities.extendObject): Adds the attributes and their values of an object to another object.
981         (window.Utilities.copyObject): Copies the attributes and their values of an object to a new object.
982         (window.Utilities.mergeObjects): Copies the attributes and their values of two objects to a new object.
983         (window.Utilities.createSvgElement): Creates an SVGElement given its name and its attributes.
984         
985         * Animometer/tests/resources/stage.css: Added.
986         * Animometer/tests/resources/stage.js: Added.
987         (Rotater): Manages rotating an angle within a fixed time interval.
988         (Rotater.prototype.get interval): Returns the time interval which is required to rotate 360 degrees.
989         (Rotater.prototype.next): Moves the current time by a delta.
990         (Rotater.prototype.degree): Returns the current rotating degree.
991         (Rotater.prototype.rotateZ): Returns CSS formatted transform rotateZ() string for the current degree.
992         (Rotater.prototype.rotate): Returns SVG formatted transform rotate() string for the current degree.
993         
994         (Stage): A base class for managing the test complexity and test animation.
995         (Stage.prototype.get size): Returns the size of the stage excluding the CSS padding.
996         (Stage.prototype.random): Returns a random float.
997         (Stage.prototype.randomInt): Returns a random integer.
998         (Stage.prototype.randomPosition): Returns a random position.
999         (Stage.prototype.randomSquareSize): Returns a square size.
1000         (Stage.prototype.randomVelocity): Returns a random velocity.
1001         (Stage.prototype.randomAngle): Returns a random angle.
1002         (Stage.prototype.randomColor): Returns a random color not too dark and not too light.
1003         (Stage.prototype.randomRotater): Creates a random rotater. Its velocity depends on choosing a random rotation time interval.
1004         (Stage.prototype.tune): A not-implemented version of this function.
1005         (Stage.prototype.animate): A not-implemented version of this function.
1006         (Stage.prototype.clear): Clears the stage from all its animation elements.
1007         
1008         (StageAnimator): A base class for the stage-based animators.
1009         (StageAnimator.prototype.animate): Calls Animator.animate() which updates the test page and then calls Stage.animate() to force redraw.
1010         
1011         (StageBenchmark): A base class for the stage-based benchmarks.
1012         (StageBenchmark.prototype.createStage): Creates the default stage.
1013         (StageBenchmark.prototype.createAnimator): Creates the default animator.
1014         (StageBenchmark.prototype.tune): Delegates the call to stage.
1015         (StageBenchmark.prototype.clear): Delegates the call to stage.
1016         (StageBenchmark.prototype.showResults): Shows the results/progress through its recordTable and progressBar.
1017         
1018         * Animometer/tests/resources/yin-yang.png: Added.
1019         * Animometer/tests/resources/yin-yang.svg: Added.
1020         These images are shared among all the tests.
1021         
1022         * Animometer/tests/template: Added.
1023         * Animometer/tests/template/resources: Added.
1024         This directory includes template tests which do nothing. They can be used
1025         to author new tests. Animated items can be created, moved and redrawn by
1026         removing the TODO comments in the script files and writing actual code.
1027
1028         * Animometer/tests/template/template-css.html: Added.
1029         * Animometer/tests/template/template-canvas.html: Added.
1030         * Animometer/tests/template/template-svg.html: Added.
1031         Template test pages. They can be used as they are. CSS attributes or hidden
1032         elements can be added to these derived test pages if needed.
1033         
1034         * Animometer/tests/template/resources/template-css.js: Added.
1035         
1036         (TemplateCssStage): A stage to create and animate HTMLElements.
1037         (TemplateCssStage.prototype.tune): Changes the test by adding or removing elements.
1038         (TemplateCssStage.prototype.animate): Animates the test elements.
1039         (TemplateCssBenchmark): 
1040         (TemplateCssBenchmark.prototype.createStage): Creates the test stage.
1041         (window.benchmarkClient.create): Creates a benchmark of type TemplateCssBenchmark.
1042         
1043         * Animometer/tests/template/resources/template-canvas.js: Added.
1044         (TemplateCanvasObject):
1045         (TemplateCanvasObject.prototype._draw): Draws the objects on the canvas context.
1046         (TemplateCanvasObject.prototype.animate): Moves and redraws the object.
1047         (TemplateCanvasStage): A stage to create and animate drawing elements.
1048         (TemplateCanvasStage.prototype.tune): hanges the test by adding or removing elements.
1049         (TemplateCanvasStage.prototype.animate):  Animates the test elements.
1050         (TemplateCanvasAnimator.prototype.animate): Starts the animation every frame.
1051         (TemplateCanvasBenchmark): 
1052         (TemplateCanvasBenchmark.prototype.createStage): Creates a stage of type TemplateCanvasStage.
1053         (TemplateCanvasBenchmark.prototype.createAnimator): Creates a animator of type TemplateCanvasAnimator.
1054         (window.benchmarkClient.create): Creates a benchmark of type TemplateCanvasBenchmark.
1055         
1056         * Animometer/tests/template/resources/template-svg.js: Added.
1057         (TemplateSvgStage): A stage to create and animate SVGElements.
1058         (TemplateSvgStage.prototype.tune): Changes the test by adding or removing elements.
1059         (TemplateSvgStage.prototype.animate): Animates the test elements.
1060         (TemplateSvgBenchmark.prototype.createStage): Creates a stage of type TemplateSvgStage.
1061         (window.benchmarkClient.create): Creates a benchmark of type TemplateSvgBenchmark.
1062         
1063         * Animometer/tests/text: Added.
1064         * Animometer/tests/text/resources: Added.
1065         This directory includes the text animating tests which currently runs
1066         on CSS stage only.
1067         
1068         * Animometer/tests/text/layering-text.html: Added.
1069         Text test page.
1070         
1071         * Animometer/tests/text/resources/layering-text.js: Added.
1072         (LayeringTextStage): Represents the container of all the stacked text layers.
1073         (LayeringTextStage.parseTextItem): Parses a textItem which may be an opening tag, a closing tag or a self-closing tag.
1074         (LayeringTextStage.isOpeningTextItem): Returns true if the textItem is an opening tag e.g. '<ol>'.
1075         (LayeringTextStage.isClosingTextItem): Returns true if  the textItem is an closing tag e.g. '</ol>.
1076         (LayeringTextStage.textItemsFlags.LayeringTextStage.textItems.map): Calculates and stores isOpening and isClosing flags for each textItem.
1077         (LayeringTextStage.isColorableTextItem): Returns true if the textItem is self-closing tag e.g. '<p>...</p>'.
1078         (LayeringTextStage.isInsertableTextItem): Returns true if the textItems causes a new element to be added to the text layers.
1079         (LayeringTextStage.colorableTextItems.LayeringTextStage.textItemsFlags.filter): Number of colorable textItems.
1080         (LayeringTextStage.insertableTextItems.LayeringTextStage.textItemsFlags.filter): Number of insertable textItems.
1081         (LayeringTextStage.colorIndexToTextElementIndex): Maps from colorIndex [0..colorableTextItems-1] to textElementIndex [0..insertableTextItems-1].
1082         (LayeringTextStage.prototype._nextTextItem): Moves the _textItemIndex one step forward in a loop [0..LayeringTextStage.textItems.length-1].
1083         (LayeringTextStage.prototype._previousTextItem): Moves the _textItemIndex one step backward in a loop.
1084         (LayeringTextStage.prototype._pushTextElement): Creates a new textItemElement and adds it to the topmost container <div>.
1085         (LayeringTextStage.prototype._popTextElement): Removes the last textItemElement from the topmost container <div>.
1086         (LayeringTextStage.prototype._colorTextItem): Changes the background color of a single colorable textElement. The index advances in a circle [0..colorableTextItems-1].
1087         (LayeringTextStage.prototype.animate): Changes the background color and the text color of the textElements such that a redraw is enforced.
1088         (LayeringTextStage.prototype.tune): Adds or removes textElements to the stage.
1089
1090         (LayeringTextBenchmark): Runs the benchmark for the layering text test.
1091         (LayeringTextBenchmark.prototype.createStage): Creates a stage of type LayeringTextStage.
1092         (window.benchmarkClient.create): Creates a benchmark of type LayeringTextBenchmark.
1093
1094 2015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>
1095
1096         Add shared code for a new a graphics benchmark
1097         https://bugs.webkit.org/show_bug.cgi?id=149691
1098
1099         Reviewed by Ryosuke Niwa.
1100
1101         This set of classes will be shared and used by the tests and the runner
1102         of a new graphics benchmark.
1103
1104         * Animometer/resources: Added.
1105         * Animometer/resources/algorithm.js: Added.
1106         (Array.prototype.swap): Swaps two elements in an array.
1107         (Heap): Binary Min/Max Heap object
1108         (Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
1109         (Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
1110         (Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
1111         (Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
1112         (Heap.prototype.init): Initializes the heap state.
1113         (Heap.prototype.top): Returns the value stored at the top of the heap.
1114         (Heap.prototype.push): Pushes a new node at the top of the heap.
1115         (Heap.prototype.pop): Extracts the top node of the heap.
1116         (Heap.prototype._bubble): Fixes the heap property by moving upward.
1117         (Heap.prototype._sink): Fixes the heap property by moving downward.
1118         (Heap.prototype.str): Prints the nodes of the heap to a string.
1119         (Heap.prototype.values): Returns the last "size" heap elements values.
1120
1121         (Algorithm.createMinHeap): Creates a size-bounded min-heap object.
1122         (Algorithm.createMaxHeap): Creates a size-bounded max-heap object.
1123         
1124         * Animometer/resources/extensions.js: Added.
1125         (Point): Point object but can be used as size also.
1126         (Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
1127         (Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
1128         (Point.prototype.get width): Should be called when the point is used as size.
1129         (Point.prototype.get height): Should be called when the point is used as size.
1130         (Point.prototype.get center): Should be called when the point is used as size.
1131         (Point.prototype.add): Returns a new point = this + other.
1132         (Point.prototype.subtract): Returns a new point = this - other.
1133         (Point.prototype.multiply): Returns a new point = this * other.
1134         (Point.prototype.move): Moves the point in a given direction, velocity, time period.
1135
1136         (Insets): Represents borders of a container.
1137         (Insets.prototype.get width): Returns left + right.
1138         (Insets.prototype.get height): Returns top + bottom.
1139
1140         (SimplePromise):
1141         (SimplePromise.prototype.then):
1142         (SimplePromise.prototype.resolve):
1143         Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.
1144
1145         (Options): Benchmark running options as they are set by the user.
1146
1147         (ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
1148         (ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
1149         (ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
1150         (ProgressBar.prototype.setPos): Draws the current progress in the current range.
1151
1152         (RecordTable): Shows the results of running a benchmark in a tabular form.
1153         (RecordTable.prototype.clear): Clears the results table.
1154         (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
1155         (RecordTable.prototype._showHeader): Shows the table header titles.
1156         (RecordTable.prototype._showEmpty): Shows an empty table cell.
1157         (RecordTable.prototype._showValue): Shows a number value in the results table.
1158         (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
1159         (RecordTable.prototype._showTest): Shows the results of a single test.
1160         (RecordTable.prototype._showSuite): Shows the results of a single suite.
1161         (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
1162         (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations. 
1163
1164         * Animometer/resources/sampler.js: Added.
1165         (Statistics.sampleMean): Returns the sample mean.
1166         (Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
1167         (Statistics.geometricMean): Returns the geometric mean.
1168
1169         (Experiment): Represents a sampling experiment. 
1170         (Experiment.prototype._init): Called when the object is created and when startSampling() is called.
1171         (Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
1172         (Experiment.prototype.sample): Add a new data point.
1173         (Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
1174         (Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
1175         (Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
1176         (Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
1177         (Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
1178         (Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.
1179
1180         (Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
1181         (Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
1182         (Sampler.prototype.sample): Add a new data vector at a given time offset.
1183         
1184 2015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>
1185
1186         Add the test runner for a new a graphics benchmark
1187         https://bugs.webkit.org/show_bug.cgi?id=149683
1188
1189         Reviewed by Ryosuke Niwa.
1190
1191         The test runner collects the selected test suites and the running options
1192         from its home page. It loops through all the tests, runs them and collects
1193         their running results. At the end, it shows summary results and a final
1194         score. It can also show a chart for a test sampled data.
1195
1196         * Animometer: Added.
1197         * Animometer/runner: Added.
1198         * Animometer/runner/resources: Added.
1199         
1200         * Animometer/runner/animometer.html: Added.
1201         * Animometer/runner/resources/animometer.css: Added.
1202         The benchmark runner page and css.
1203
1204         * Animometer/runner/resources/animometer.js: Added.
1205         (window.benchmarkRunnerClient.willAddTestFrame): Called after the test <iframe> is created.
1206         (window.benchmarkRunnerClient.didRunTest): Called after running a test is finished.
1207         (window.benchmarkRunnerClient.willStartFirstIteration): Called at the beginning before running any test.
1208         (window.benchmarkRunnerClient.didRunSuites): Called after running all tests of a suite.
1209         (window.benchmarkRunnerClient.didFinishLastIteration): Called after running the last test.
1210         
1211         (showSection): Shows a section in the animometer.html page.
1212         (startTest): Called when the "Start Test" button is clicked.
1213         (showResults): Called after finishing all the tests.
1214         (showGraph): Called when "Click..." button in the "Samples" column of the results table is clicked
1215         
1216         * Animometer/runner/resources/benchmark-runner.js: Copied from PerformanceTests/Speedometer/resources/benchmark-runner.js.
1217         (BenchmarkRunnerState): Tracks the current running <suite, test>
1218         (BenchmarkRunnerState.prototype.currentSuite): Returns the current running suite.
1219         (BenchmarkRunnerState.prototype.currentTest): Returns the current running test.
1220         (BenchmarkRunnerState.prototype.isFirstTest): Returns true if we are running the first test in the current suite.
1221         (BenchmarkRunnerState.prototype.next): Advances to the next test.
1222         (BenchmarkRunnerState.prototype.prepareCurrentTest): Creates a new <iframe> and waits for it to load a test.
1223         
1224         (BenchmarkRunner): Manages running the tests and communicating with the benchmarkRunnerClient.
1225         (BenchmarkRunner.prototype.waitForElement): Waits for an element to be created.
1226         (BenchmarkRunner.prototype._appendFrame): Creates a new <iframe> element.
1227         (BenchmarkRunner.prototype._removeFrame): Removed the current <iframe> element.
1228         (BenchmarkRunner.prototype._runTestAndRecordResults): Runs the current test and saves its results.
1229         (BenchmarkRunner.prototype.step): Either runs the current test if there is or start a new iteration.
1230         (BenchmarkRunner.prototype.runAllSteps): Loops to run all the tests and move to the next iteration.
1231         (this._runNextIteration): Starts a new iteration or show the results.
1232         (BenchmarkRunner.prototype.runMultipleIterations): Loops to run all the iterations and show the results
1233         (BenchmarkRunner.prototype._finalize): Finalizes the current iteration and starts a new one.
1234
1235         (SimplePromise): Deleted.
1236         (SimplePromise.prototype.then): Deleted.
1237         (SimplePromise.prototype.resolve): Deleted.
1238         (BenchmarkTestStep): Deleted.
1239         (Fibonacci): Deleted.
1240         SimplePromise was moved t Animometer/resources/extensions.js because it is used by the runner and the tests.
1241         
1242         (BenchmarkRunner.prototype._waitAndWarmUp): Deleted.
1243         (BenchmarkRunner.prototype._runTest): Deleted.
1244         (BenchmarkState.prototype.currentSuite): Deleted.
1245         (BenchmarkState.prototype.currentTest): Deleted.
1246         (BenchmarkState.prototype.next): Deleted.
1247         (BenchmarkState.prototype.isFirstTest): Deleted.
1248         (BenchmarkState.prototype.prepareCurrentSuite): Deleted.
1249         BenchmarkState was renamed to BenchmarkRunnerState to not be confused with the tests BenchmarkState.
1250         
1251         * Animometer/runner/resources/d3.min.js: Copied from Websites/perf.webkit.org/public/v2/js/d3/d3.min.js.
1252         Needed for drawing charts for the sampled scores and frame rates.
1253         
1254         * Animometer/runner/resources/graph.js: Added.
1255         (graph): Draws a chart for a test sampled data. It shows two y-axes: one for the animated items and the second for FPS.
1256                 
1257         * Skipped: Skip the Animometer benchmark for now.
1258
1259 2015-08-27  Csaba Osztrogonác  <ossy@webkit.org>
1260
1261         [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
1262         https://bugs.webkit.org/show_bug.cgi?id=148470
1263
1264         Unreviewed gardening, skip the hanging test to make the performance bot work.
1265
1266         * Skipped:
1267
1268 2015-08-17  Chris Dumez  <cdumez@apple.com>
1269
1270         Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
1271         https://bugs.webkit.org/show_bug.cgi?id=148080
1272
1273         Reviewed by Antti Koivisto.
1274
1275         Add performance tests for traversal of *uncached* collections returned
1276         by getElementsByClassName() / getElementsByTagName(). These methods
1277         will soon be updated to return an HTMLCollection instead of a
1278         NodeList and we need to make sure we don't regress performance in the
1279         process.
1280
1281         * DOM/get-elements-by-class-name-traversal-uncached.html: Added.
1282         * DOM/get-elements-by-tag-name-traversal-uncached.html: Added.
1283
1284 2015-08-14  Chris Dumez  <cdumez@apple.com>
1285
1286         Add performance tests for NodeList and HTMLCollection traversal
1287         https://bugs.webkit.org/show_bug.cgi?id=148043
1288
1289         Reviewed by Gavin Barraclough.
1290
1291         Add performance tests for NodeList and HTMLCollection traversal.
1292         Ideally, those 2 tests should be as fast. However, due to inefficiencies
1293         in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
1294         slower. This will be addressed in the near future.
1295
1296         * Bindings/childNodes-traversal.html: Added.
1297         * Bindings/children-traversal.html: Added.
1298
1299 2015-08-05  Myles C. Maxfield  <mmaxfield@apple.com>
1300
1301         Add a second font-fallback performance test
1302         https://bugs.webkit.org/show_bug.cgi?id=147692
1303
1304         Reviewed by Ryosuke Niwa.
1305
1306         This test is smaller, but has more realistic content. Also, it uses the "lang" attribute.
1307
1308         * Layout/font-fallback-2.html: Added.
1309         * Layout/resources/font-fallback-2.html: Added.
1310
1311 2015-07-13  Filip Pizlo  <fpizlo@apple.com>
1312
1313         Update JetStream version number to 1.1.
1314
1315         Rubber stamped by Ryosuke Niwa.
1316
1317         * JetStream/create.rb:
1318
1319 2015-06-30  Filip Pizlo  <fpizlo@apple.com>
1320
1321         Update the JetStream documentation to reflect the recent changes
1322         https://bugs.webkit.org/show_bug.cgi?id=146474
1323
1324         Reviewed by Geoffrey Garen.
1325
1326         * JetStream/create.rb: Bump the version.
1327         * JetStream/in-depth-TEMPLATE.html: Add cdjs documentation. Remove cordic documentation. Change documentation for splay and mandreel.
1328
1329 2015-06-26  Filip Pizlo  <fpizlo@apple.com>
1330
1331         [JetStream] Raise the percentile of mandreel-latency and splay-latency
1332         https://bugs.webkit.org/show_bug.cgi?id=146378
1333
1334         Reviewed by Mark Lam.
1335         
1336         The current percentile is 95%.  When I looked at the sample lists in our GC, it was
1337         clear that the worst 5% samples completely amortize our GC pauses.  Our GC pauses can
1338         be quite bad.  Clearly, splay-latency is meant to test whether we have an incremental
1339         GC that ensures that you don't have bad worst-case pauses.  But 95% is too small,
1340         because it doesn't really capture those pauses.  Raising the percentile to above 99%
1341         appears to do the trick.  99.5% or more seems like a good bet.  The trade-off there is
1342         just that if we set it too high, then we won't have enough statistics.  Doing this very
1343         clearly rewards GCs that are incremental, and punishes GCs that aren't (like ours).
1344         That's what we want, since in the future we want to use this test to guide any
1345         improvements to the worst-case performance of our GC.
1346
1347         The way that the percentile is selected will also affect mandreel-latency.  That's a
1348         good thing, because 95% is probably too low for that test as well.  That test ends up
1349         with >10k samples.  The goal of using 95% in the first place was to get enough samples
1350         to have a stable average.  But if we have >10k samples, we can push that percentile up
1351         much higher and still get good statistics while achieving the effect we want - i.e.
1352         getting the worst case.
1353
1354         I don't think that we need to do the same thing for cdjs.  That test only takes 200
1355         samples, so 95% means we report the average of the worst 10 samples.  That's probably
1356         good enough.
1357
1358         * JetStream/Octane2/base.js: Raise the percentile as described above.
1359         (BenchmarkSuite.prototype.RunSingleBenchmark):
1360         * JetStream/Reference.js: Tweak the reference times to bring the latency tests closer to 100ish on my machine.
1361         * JetStream/create.rb: Bump the version.
1362
1363 2015-06-19  Filip Pizlo  <fpizlo@apple.com>
1364
1365         Run CDjs as part of JSC stress testing
1366         https://bugs.webkit.org/show_bug.cgi?id=146174
1367
1368         Reviewed by Geoffrey Garen.
1369
1370         * JetStream/cdjs/cdjs-tests.yaml: Added. This tells JSC stress tests what tests to run. It uses new syntax ("tests" being a list) that I add in this change.
1371         * JetStream/cdjs/main.js: Mark this as a slow test.
1372         * JetStream/create.rb: Don't copy the JSC stress tests artifacts into the JetStream bundle.
1373
1374 2015-06-19  Filip Pizlo  <fpizlo@apple.com>
1375
1376         Unreviewed, fix a small indentation goof.
1377
1378         * JetStream/cdjs/motion.js:
1379         (Motion.prototype.findIntersection):
1380
1381 2015-06-19  Filip Pizlo  <fpizlo@apple.com>
1382
1383         JetStream should include a JavaScript version of the CDx real-time benchmark
1384         https://bugs.webkit.org/show_bug.cgi?id=146156
1385
1386         Reviewed by Geoffrey Garen.
1387         
1388         This adds a JavaScript port of the CDx real-time benchmark to JetStream, and retires
1389         the cordic test because it was previously the smallest and probably least interesting.
1390         
1391         The new test, "cdjs", is mostly a faithful rewrite of the Java code into JavaScript.
1392         I got the Java code from https://www.cs.purdue.edu/sss/projects/cdx/.
1393         
1394         There are some differences:
1395         
1396         - It uses RedBlackTree's for all sets and maps rather than hashtables. This is clearly
1397           more in the spirit of real-time than the CDx benchmark. FWIW, CDx used to use trees
1398           and I don't know why that changed in the latest version.
1399         
1400         - CDjs doesn't attempt to avoid memory allocations, unlike the real-time Java version.
1401           I wrote the code that I wanted to write for aesthetics, rather than the code that I
1402           would have written if I tried to write the fastest code possible. Again, I believe
1403           that this is in the spirit of CDj - it's meant to test what would happen if you wrote
1404           real-timey stuff in a high level language and actually took advantage of that
1405           language to be more productive.
1406         
1407         The test score reflects the average latency of the worst 10 samples out of 200 samples.
1408         The simulation uses 1000 aircraft, flying along paths that result in some detected
1409         collisions every once in a while. The benchmark validates its results by checking the
1410         total number of collisions detected.
1411         
1412         Apart from the integration into the JetStream harness, the CDjs directory contains a
1413         fully self-contained benchmark that could be run either in the jsc shell or in browser.
1414         
1415         This new code uses the same 3-clause BSD license as the Purdue code, and gives
1416         attribution to Purdue in almost all files. I believe that is appropriate since I wrote
1417         most of the JS files by looking at the Purdue Java code and trascribing to JavaScript.
1418         In some cases, I even copy-pasted the Java code, like the complicated math for
1419         four-dimensional intersections and voxel hashing.
1420
1421         * JetStream/CDjsSetup.js: Added.
1422         * JetStream/Octane2Setup.js:
1423         * JetStream/Reference.js:
1424         * JetStream/cdjs: Added.
1425         * JetStream/cdjs/benchmark.js: Added.
1426         (benchmark):
1427         * JetStream/cdjs/call_sign.js: Added.
1428         (CallSign):
1429         (CallSign.prototype.compareTo):
1430         (CallSign.prototype.toString):
1431         * JetStream/cdjs/collision.js: Added.
1432         (Collision):
1433         (Collision.prototype.toString):
1434         * JetStream/cdjs/collision_detector.js: Added.
1435         (CollisionDetector):
1436         (CollisionDetector.prototype.handleNewFrame.get for):
1437         (CollisionDetector.prototype.handleNewFrame):
1438         * JetStream/cdjs/constants.js: Added.
1439         * JetStream/cdjs/main.html: Added.
1440         * JetStream/cdjs/main.js: Added.
1441         * JetStream/cdjs/motion.js: Added.
1442         (Motion):
1443         (Motion.prototype.toString):
1444         (Motion.prototype.delta):
1445         (Motion.prototype.findIntersection):
1446         * JetStream/cdjs/motion_test.js: Added.
1447         (checkDoesIntersect):
1448         (checkDoesNotIntersect):
1449         (makeMotion):
1450         * JetStream/cdjs/red_black_tree.js: Added.
1451         (RedBlackTree):
1452         (RedBlackTree.):
1453         * JetStream/cdjs/red_black_tree_test.js: Added.
1454         (test):
1455         (test.):
1456         * JetStream/cdjs/reduce_collision_set.js: Added.
1457         (drawMotionOnVoxelMap):
1458         (drawMotionOnVoxelMap.):
1459         (.get reduceCollisionSet):
1460         * JetStream/cdjs/reduce_collision_set_test.js: Added.
1461         (makeMotion):
1462         (keys):
1463         (test):
1464         * JetStream/cdjs/simulator.js: Added.
1465         (Simulator):
1466         (Simulator.prototype.simulate):
1467         * JetStream/cdjs/util.js: Added.
1468         (compareNumbers):
1469         (averageAbovePercentile):
1470         (currentTime):
1471         (else.currentTime):
1472         * JetStream/cdjs/vector_2d.js: Added.
1473         (Vector2D):
1474         (Vector2D.prototype.plus):
1475         (Vector2D.prototype.minus):
1476         (Vector2D.prototype.toString):
1477         (Vector2D.prototype.compareTo):
1478         * JetStream/cdjs/vector_3d.js: Added.
1479         (Vector3D):
1480         (Vector3D.prototype.plus):
1481         (Vector3D.prototype.minus):
1482         (Vector3D.prototype.dot):
1483         (Vector3D.prototype.squaredMagnitude):
1484         (Vector3D.prototype.magnitude):
1485         (Vector3D.prototype.times):
1486         (Vector3D.prototype.as2D):
1487         (Vector3D.prototype.toString):
1488         * JetStream/create.rb:
1489         * JetStream/index-TEMPLATE.html:
1490         * JetStream/sunspider/cordic.js: Removed.
1491
1492 2015-06-17  Javier Fernandez  <jfernandez@igalia.com>
1493
1494         [CSS Grid Layout] We should add performance tests for stretching logic
1495         https://bugs.webkit.org/show_bug.cgi?id=146063
1496
1497         Reviewed by Sergio Villar Senin.
1498
1499         Added a new performance test for Grid Layout to ensure there are no
1500         regressions in the stretching alignment logic.
1501
1502         * Layout/fixed-grid-lots-of-stretched-data.html: Added.
1503
1504 2015-06-17  Javier Fernandez  <jfernandez@igalia.com>
1505
1506         [CSS Grid Layout] Performance tests are using the old syntax
1507         https://bugs.webkit.org/show_bug.cgi?id=146061
1508
1509         Reviewed by Sergio Villar Senin.
1510
1511         Adapted tests to the new grid tracks definition syntax.
1512
1513         * Layout/auto-grid-lots-of-data.html:
1514         * Layout/fixed-grid-lots-of-data.html:
1515
1516 2015-06-08  Filip Pizlo  <fpizlo@apple.com>
1517
1518         JetStream should have a more rational story for jitter-oriented latency tests
1519         https://bugs.webkit.org/show_bug.cgi?id=145762
1520
1521         Reviewed by Geoffrey Garen.
1522         
1523         JetStream has some latency tests that are meant to measure jitter.  Prior to this change, they
1524         did this by computing the RMS.  But the RMS is a pretty bad metric.  The thing that it rewards
1525         isn't really the thing that you'd want your browser to do.  These RMS-based tests involve taking
1526         the geomean of the RMS of some samples and the sample average.  The lower the geomean, the better
1527         (in the JetStream harness we then invert the scores so that higher is better, but let's ignore
1528         that for this discussion and assume that lower is better).  Here's an example of how this can go
1529         bad.  A browser that always computes a task in some horribly long time (say, 1000ms) but never
1530         varies that time will perform better than a browser that usually computes the task super quickly
1531         (say, 10ms) and sometimes just a little bit less quickly (say, 15ms).  The former browser will
1532         have an RMS of 0 and an average of 1000.  The latter will have a RMS somewhere around 3.5 and an
1533         average of 12.5 (assuming equal probability of 10ms and 15ms).  The geomean of (0, 1000) is 0.
1534         The geomean of (3.5, 12.5) is 6.6.  Lower is better, so the former browser scores higher - even
1535         though it's obviously never better to have a browser always complete a task in 1000ms when a
1536         different browser can do it in 15ms in the worst case.
1537
1538         JetStream should not have this pathology.  The right way of avoiding it is to replace RMS with
1539         some other metric of how bad things get.  A good metric is the average of the worst percentile.
1540         The worst 1% or the worst 5% would be good things to average.  This will catch cases where the VM
1541         jittered due to JIT or GC, but it never have the pathology that we end up giving the better score
1542         to a VM whose best case is worst than another VM's worst case.
1543         
1544         For now, this change uses the highest samples above the 95% percentile. I'm not yet sure if that
1545         is the best thing - it might include too many scores that are around the best-case performance -
1546         but it's certainly better than RMS and it might be good enough to keep. But because of that
1547         uncertainty, I'm setting the version to be "1.1-alpha1" to indicate that we aren't ready to
1548         release this yet.
1549
1550         * JetStream/Octane2/base.js:
1551         (.this.Setup.setup.setup):
1552         (.this.TearDown.tearDown.tearDown):
1553         (BenchmarkSuite.GeometricMeanTime):
1554         (BenchmarkSuite.AverageAbovePercentile):
1555         (BenchmarkSuite.GeometricMeanLatency):
1556         (BenchmarkSuite.prototype.NotifyStep):
1557         (BenchmarkSuite.prototype.RunSingleBenchmark):
1558         * JetStream/Octane2/mandreel.js:
1559         (setupMandreel):
1560         (updateMandreelStats):
1561         (startMandreelTimer):
1562         (latencyMandreel):
1563         (tearDownMandreel):
1564         (RMSMandreel): Deleted.
1565         * JetStream/Octane2/splay.js:
1566         (GenerateKey):
1567         (SplayUpdateStats):
1568         (InsertNewNode):
1569         (SplayTearDown):
1570         (SplayRMS): Deleted.
1571         * JetStream/create.rb:
1572
1573 2015-06-03  Zalan Bujtas  <zalan@apple.com>
1574
1575         Skip Dromaeo/jslib-modify-prototype.html for now.
1576
1577         Unreviewed gardening.
1578
1579         * Skipped:
1580
1581 2015-05-04  Filip Pizlo  <fpizlo@apple.com>
1582
1583         Large array shouldn't be slow
1584         https://bugs.webkit.org/show_bug.cgi?id=144617
1585
1586         Reviewed by Geoffrey Garen.
1587         
1588         Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
1589         SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
1590         long-running. So, hash-map sort of belongs here.
1591
1592         * LongSpider/hash-map.js: Added.
1593         (HashMap):
1594         (HashMap.):
1595         (.get var):
1596
1597 2015-05-01  Dewei Zhu  <dewei_zhu@apple.com>
1598
1599         Fix typo bug in Speedometer/resources/main.js
1600         https://bugs.webkit.org/show_bug.cgi?id=144504
1601
1602         Reviewed by Ryosuke Niwa. 
1603
1604         * Speedometer/resources/main.js: Fix typo.
1605         (window.benchmarkClient.totalTimeInDisplayUnit):
1606
1607 2015-04-21  Ryosuke Niwa  <rniwa@webkit.org>
1608
1609         Add JetStream to PerformanceTests
1610         https://bugs.webkit.org/show_bug.cgi?id=144024
1611
1612         Rubber-stamped by Filip Pizlo.
1613
1614         * JetStream: Added.
1615         * JetStream/JetStream-Logo.png: Added.
1616         * JetStream/JetStream-Logo@2x.png: Added.
1617         * JetStream/JetStream.css: Added.
1618         * JetStream/JetStreamDriver.js: Added.
1619         * JetStream/LICENSE.txt: Added.
1620         * JetStream/LLVM-test-suite-LICENSE.txt: Added.
1621         * JetStream/Octane: Added.
1622         * JetStream/Octane/base.js: Added.
1623         * JetStream/Octane/code-load.js: Added.
1624         * JetStream/Octane2: Added.
1625         * JetStream/Octane2/base.js: Added.
1626         * JetStream/Octane2/box2d.js: Added.
1627         * JetStream/Octane2/code-load.js: Added.
1628         * JetStream/Octane2/crypto.js: Added.
1629         * JetStream/Octane2/deltablue.js: Added.
1630         * JetStream/Octane2/earley-boyer.js: Added.
1631         * JetStream/Octane2/gbemu-part1.js: Added.
1632         * JetStream/Octane2/gbemu-part2.js: Added.
1633         * JetStream/Octane2/mandreel.js: Added.
1634         * JetStream/Octane2/navier-stokes.js: Added.
1635         * JetStream/Octane2/pdfjs.js: Added.
1636         * JetStream/Octane2/raytrace.js: Added.
1637         * JetStream/Octane2/regexp.js: Added.
1638         * JetStream/Octane2/richards.js: Added.
1639         * JetStream/Octane2/run.js: Added.
1640         * JetStream/Octane2/splay.js: Added.
1641         * JetStream/Octane2/typescript-compiler.js: Added.
1642         * JetStream/Octane2/typescript-input.js: Added.
1643         * JetStream/Octane2/typescript.js: Added.
1644         * JetStream/Octane2/zlib-data.js: Added.
1645         * JetStream/Octane2/zlib.js: Added.
1646         * JetStream/Octane2Setup.js: Added.
1647         * JetStream/OctaneSetup.js: Added.
1648         * JetStream/README: Added.
1649         * JetStream/Reference.js: Added.
1650         * JetStream/SimpleSetup.js: Added.
1651         * JetStream/SunSpiderSetup.js: Added.
1652         * JetStream/Swoosh.png: Added.
1653         * JetStream/Swoosh@2x.png: Added.
1654         * JetStream/TestingSetup.js: Added.
1655         * JetStream/create.rb: Added.
1656         * JetStream/docs: Added.
1657         * JetStream/docs/JetStreamBlogPost.html: Added.
1658         * JetStream/in-depth-TEMPLATE.html: Added.
1659         * JetStream/index-TEMPLATE.html: Added.
1660         * JetStream/simple: Added.
1661         * JetStream/simple/bigfib.cpp: Added.
1662         * JetStream/simple/bigfib.cpp.js: Added.
1663         * JetStream/simple/container.cpp: Added.
1664         * JetStream/simple/container.cpp.js: Added.
1665         * JetStream/simple/dry.c: Added.
1666         * JetStream/simple/dry.c.js: Added.
1667         * JetStream/simple/float-mm.c: Added.
1668         * JetStream/simple/float-mm.c.js: Added.
1669         * JetStream/simple/gcc-loops.cpp: Added.
1670         * JetStream/simple/gcc-loops.cpp.js: Added.
1671         * JetStream/simple/hash-map.js: Added.
1672         * JetStream/simple/n-body.c: Added.
1673         * JetStream/simple/n-body.c.js: Added.
1674         * JetStream/simple/quicksort.c: Added.
1675         * JetStream/simple/quicksort.c.js: Added.
1676         * JetStream/simple/towers.c: Added.
1677         * JetStream/simple/towers.c.js: Added.
1678         * JetStream/sunspider: Added.
1679         * JetStream/sunspider/3d-cube.js: Added.
1680         * JetStream/sunspider/3d-raytrace.js: Added.
1681         * JetStream/sunspider/base64.js: Added.
1682         * JetStream/sunspider/cordic.js: Added.
1683         * JetStream/sunspider/crypto-aes.js: Added.
1684         * JetStream/sunspider/crypto-md5.js: Added.
1685         * JetStream/sunspider/crypto-sha1.js: Added.
1686         * JetStream/sunspider/date-format-tofte.js: Added.
1687         * JetStream/sunspider/date-format-xparb.js: Added.
1688         * JetStream/sunspider/n-body.js: Added.
1689         * JetStream/sunspider/regex-dna.js: Added.
1690         * JetStream/sunspider/tagcloud.js: Added.
1691
1692 2015-04-14  Said Abou-Hallawa  <sabouhallawa@apple.com>
1693
1694         textPath layout performance improvement.
1695         https://bugs.webkit.org/show_bug.cgi?id=141570.
1696
1697         Reviewed by Darin Adler.
1698
1699         Cut down the time spent in traversing the path for text by 50%. Instead
1700         of traversing the path twice at a certain length: one time for the position
1701         and the second time for the angle, we can merge these two passes into one.
1702
1703         * SVG/TextOnPathSimple.html: Added.
1704         * SVG/resources/TextOnPathSimple.svg: Added.
1705
1706 2015-04-13  Zalan Bujtas  <zalan@apple.com>
1707
1708         Clear up the test content when test is done.
1709
1710         Unreviewed fix.
1711
1712         * Layout/simple-line-layout-innertext.html:
1713
1714 2015-04-09  Zalan Bujtas  <zalan@apple.com>
1715
1716         Simple line layout(regression): Calling innerText on RenderFlow with multiple children is slow.
1717         https://bugs.webkit.org/show_bug.cgi?id=143554
1718
1719         Reviewed by Antti Koivisto.
1720
1721         Initialize render flow's segments only when the render flow changes in TextIterator.
1722         The included performance test shows 6x speedup. (from ~10 runs/sec to ~60 runs/sec)
1723
1724         * Layout/simple-line-layout-innertext.html: Added.
1725
1726 2015-03-09  Chris Dumez  <cdumez@apple.com>
1727
1728         [CG] Have Canvas use the IOSurfacePool
1729         https://bugs.webkit.org/show_bug.cgi?id=142417
1730         <rdar://problem/20044440>
1731
1732         Reviewed by Darin Adler.
1733
1734         Lower the number of different canvas sizes from 1000 to 100 so that
1735         the test does not require such a huge cache size. With 100, we now
1736         get over 90% cache hit rate with the default IOSurfacePool size.
1737
1738         * Canvas/reuse.html:
1739
1740 2015-01-28  Said Abou-Hallawa  <sabouhallawa@apple.com>
1741
1742         Poor performance on IE's Chalkboard benchmark.
1743         https://bugs.webkit.org/show_bug.cgi?id=140753.
1744
1745         Reviewed by Zalan Bujtas.
1746
1747         * SVG/UnderTheSeeBenchmark.html: Added
1748         * SVG/WorldcupBenchmark.html: Added.
1749         * SVG/resources/RenderAnimator.css: Added.
1750         * SVG/resources/RenderAnimator.js: Added.
1751         These are benchmarks for the SVG rendering. Mainly we want to measure how fast
1752         the SVG rendering will be when only a small part of it is drawn.
1753         
1754 2015-01-21  Geoffrey Garen  <ggaren@apple.com>
1755
1756         bmalloc: support aligned allocation
1757         https://bugs.webkit.org/show_bug.cgi?id=140732
1758
1759         Reviewed by Andreas Kling.
1760
1761         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
1762         * MallocBench/MallocBench/Benchmark.cpp:
1763         * MallocBench/MallocBench/memalign.cpp:
1764         (test):
1765         (benchmark_memalign): Added a test for specific interesting memalign values.
1766
1767         * MallocBench/MallocBench/stress_aligned.cpp: Added.
1768         (benchmark_stress_aligned):
1769         * MallocBench/MallocBench/stress_aligned.h: Added. Added a stress test
1770         for arbitrary memalign values.
1771
1772 2015-01-16  Geoffrey Garen  <ggaren@apple.com>
1773
1774         bmalloc: added the tiniest bit of testing for aligned allocation
1775         https://bugs.webkit.org/show_bug.cgi?id=140573
1776
1777         Reviewed by Andreas Kling.
1778
1779         Just good enoug to catch two bugs in a preliminary implementation.
1780
1781         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
1782         * MallocBench/MallocBench/Benchmark.cpp:
1783         * MallocBench/MallocBench/mbmalloc.cpp:
1784         * MallocBench/MallocBench/mbmalloc.h:
1785         * MallocBench/MallocBench/memalign.cpp: Added.
1786         (benchmark_memalign):
1787         * MallocBench/MallocBench/memalign.h: Added.
1788
1789 2014-12-09  Myles C. Maxfield  <mmaxfield@apple.com>
1790
1791         Add performance test related to font fallback
1792         https://bugs.webkit.org/show_bug.cgi?id=139332
1793
1794         Reviewed by Simon Fraser.
1795
1796         * Layout/font-fallback.html: Added.
1797         * Layout/resources/font-fallback.html: Added.
1798
1799 2014-12-08  Dean Jackson  <dino@apple.com>
1800
1801         [Apple] Use Accelerate framework to speed-up FEGaussianBlur
1802         https://bugs.webkit.org/show_bug.cgi?id=139310
1803
1804         Reviewed by Simon Fraser.
1805
1806         Add an interactive performance test that measures the speed of a set
1807         of blur operations on a generated images.
1808
1809         * Interactive/blur-filter-timing.html: Added.
1810
1811 2014-11-13  Zalan Bujtas  <zalan@apple.com>
1812
1813         Simple line layout: Add performance test case to measure line layout speed of monolithic text content.
1814         https://bugs.webkit.org/show_bug.cgi?id=138699
1815
1816         Reviewed by Antti Koivisto.
1817
1818         * Layout/line-layout-long-long-text.html: Added.
1819
1820 2014-10-22  Zalan Bujtas  <zalan@apple.com>
1821
1822         Speed up line parsing for simple line layout (part I)
1823         https://bugs.webkit.org/show_bug.cgi?id=137275
1824
1825         Reviewed by Antti Koivisto.
1826
1827         Extend simple line layout performance test with a few more cases.
1828         Now we've got:
1829         <div center
1830         <div right
1831         <div justify
1832         <div white-space: pre (new)
1833         <div overflow-wrap: break-word (new)
1834         <pre
1835         <pre white-space: pre-wrap
1836         <pre white-space: pre-line (new)
1837         <pre white-space: nowrap (new)
1838         <pre white-space: pre-wrap overflow-wrap: break-word
1839         <div + embedded <span etc.
1840         <div + br
1841
1842         * Layout/line-layout-simple.html:
1843
1844 2014-10-15  Andrei Bucur  <abucur@adobe.com>
1845
1846         [Multicol] Start adding performance tests for the multi-column implementation
1847         https://bugs.webkit.org/show_bug.cgi?id=137687
1848
1849         Reviewed by Mihnea Ovidenie.
1850
1851         This patch creates a Multicol folder inside the Layout performance tests suite. It adds only two tests
1852         as described below.
1853
1854         The tests are skipped until the implementation stabilizes.
1855
1856         * Layout/Multicol/MulticolManyColumns.html: Added.
1857         This test verifies the performance of the multi-column implementation with two nested multi-column
1858         containers, the first having 20 columns and the second 10 columns.
1859
1860         * Layout/Multicol/MulticolNested.html: Added.
1861         This test verifies the performance of nesting multi-column containers in the presence
1862         of floats.
1863
1864         * Layout/Multicol/resources/multicol-content-many-columns.html: Added.
1865         * Layout/Multicol/resources/multicol-content-nested.html: Added.
1866         * Skipped: Skip the Multicol folder for now.
1867
1868 2014-09-29  Filip Pizlo  <fpizlo@apple.com>
1869
1870         It should be fun and easy to run every possible JavaScript benchmark from the command line
1871         https://bugs.webkit.org/show_bug.cgi?id=137245
1872
1873         Reviewed by Oliver Hunt.
1874         
1875         This adds the scaffolding for running Octane version 2 inside run-jsc-benchmarks.
1876         In the future we should just land Octane2 in this directory, and run-jsc-benchmarks
1877         should be changed to point directly at this directory instead of requiring the
1878         Octane path to be configured as part of the configuration file.
1879
1880         * Octane: Added.
1881         * Octane/wrappers: Added.
1882         * Octane/wrappers/jsc-box2d.js: Added.
1883         (jscSetUp):
1884         (jscTearDown):
1885         (jscRun):
1886         * Octane/wrappers/jsc-boyer.js: Added.
1887         (jscSetUp):
1888         (jscTearDown):
1889         (jscRun):
1890         * Octane/wrappers/jsc-closure.js: Added.
1891         (jscSetUp):
1892         (jscTearDown):
1893         (jscRun):
1894         * Octane/wrappers/jsc-decrypt.js: Added.
1895         (jscSetUp):
1896         (jscTearDown):
1897         (jscRun):
1898         * Octane/wrappers/jsc-deltablue.js: Added.
1899         (jscSetUp):
1900         (jscTearDown):
1901         (jscRun):
1902         * Octane/wrappers/jsc-earley.js: Added.
1903         (jscSetUp):
1904         (jscTearDown):
1905         (jscRun):
1906         * Octane/wrappers/jsc-encrypt.js: Added.
1907         (jscSetUp):
1908         (jscTearDown):
1909         (jscRun):
1910         * Octane/wrappers/jsc-gbemu.js: Added.
1911         (jscSetUp):
1912         (jscTearDown):
1913         (jscRun):
1914         * Octane/wrappers/jsc-jquery.js: Added.
1915         (jscSetUp):
1916         (jscTearDown):
1917         (jscRun):
1918         * Octane/wrappers/jsc-mandreel.js: Added.
1919         (jscSetUp):
1920         (jscTearDown):
1921         (jscRun):
1922         * Octane/wrappers/jsc-navier-stokes.js: Added.
1923         (jscSetUp):
1924         (jscTearDown):
1925         (jscRun):
1926         * Octane/wrappers/jsc-pdfjs.js: Added.
1927         (jscSetUp.PdfJS_window.console.log):
1928         (jscSetUp):
1929         (jscTearDown):
1930         (jscRun):
1931         * Octane/wrappers/jsc-raytrace.js: Added.
1932         (jscSetUp):
1933         (jscTearDown):
1934         (jscRun):
1935         * Octane/wrappers/jsc-regexp.js: Added.
1936         (jscSetUp):
1937         (jscTearDown):
1938         (jscRun):
1939         * Octane/wrappers/jsc-richards.js: Added.
1940         (jscSetUp):
1941         (jscTearDown):
1942         (jscRun):
1943         * Octane/wrappers/jsc-splay.js: Added.
1944         (jscSetUp):
1945         (jscTearDown):
1946         (jscRun):
1947         * Octane/wrappers/jsc-typescript.js: Added.
1948         (jscSetUp):
1949         (jscTearDown):
1950         (jscRun):
1951         * Octane/wrappers/jsc-zlib.js: Added.
1952         (jscSetUp):
1953         (jscTearDown):
1954         (jscRun):
1955
1956 2014-09-28  Sungmann Cho  <sungmann.cho@navercorp.com>
1957
1958         Fix some minor typos: psuedo -> pseudo
1959         https://bugs.webkit.org/show_bug.cgi?id=137192
1960
1961         Reviewed by Alexey Proskuryakov.
1962
1963         * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
1964
1965 2014-09-11  Geoffrey Garen  <ggaren@apple.com>
1966
1967         Some MallocBench refinements
1968         https://bugs.webkit.org/show_bug.cgi?id=136750
1969
1970         Reviewed by Sam Weinig.
1971
1972         * MallocBench/MallocBench/Interpreter.cpp:
1973         (Interpreter::run): Allow for null entries in the object list so that
1974         we can test in modes that exclude large or small allocations.
1975
1976         * MallocBench/MallocBench/churn.cpp:
1977         (benchmark_churn):
1978         * MallocBench/MallocBench/flickr.cpp:
1979         (benchmark_flickr):
1980         * MallocBench/MallocBench/fragment.cpp:
1981         (benchmark_fragment_iterate):
1982         * MallocBench/MallocBench/list.cpp:
1983         (benchmark_list_allocate):
1984         * MallocBench/MallocBench/reddit.cpp:
1985         (benchmark_reddit): Updated test runtimes to weight them more equally,
1986         for the sake of arithmetic mean.
1987
1988         * MallocBench/MallocBench/stress.cpp:
1989         (Object::Object):
1990         (allocate):
1991         (deallocate):
1992         (benchmark_stress): Verify the contents of memory as we go. Also,
1993         force scavenging each time through the loop to test the scavenging path.
1994
1995         * MallocBench/MallocBench/theverge.cpp:
1996         (benchmark_theverge):
1997         * MallocBench/MallocBench/tree.cpp:
1998         (benchmark_tree_churn): Re-weighted, as above.
1999
2000 2014-09-08  Myles C. Maxfield  <mmaxfield@apple.com>
2001
2002         PerformanceTests/SVG/SVG-Text.html has unparsable output
2003         https://bugs.webkit.org/show_bug.cgi?id=136648
2004
2005         Reviewed by Gavin Barraclough.
2006
2007         I need to clean up the arbitrary text on the page before telling
2008         the test runner infrastructure that the test is complete.
2009
2010         * SVG/SVG-Text.html:
2011
2012 2014-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
2013
2014         Laying out a TextRun using an SVG font is O(n^2)
2015         https://bugs.webkit.org/show_bug.cgi?id=136584
2016
2017         Reviewed by Andreas Kling.
2018
2019         Time how long it takes to lay out and render some text using an SVG font.
2020
2021         * SVG/SVG-Text.html: Added.
2022         * SVG/resources/graffiti.svg: Added.
2023
2024 2014-09-02  Geoffrey Garen  <ggaren@apple.com>
2025
2026         MallocBench should have a stress test for correctness
2027         https://bugs.webkit.org/show_bug.cgi?id=136468
2028
2029         Reviewed by Andreas Kling.
2030
2031         Added a stress test that allocates randomized sizes of randomized
2032         lifetimes in randomized order.
2033
2034         This version of the test reproduces the EWS crash seen in bmalloc
2035         (<https://bugs.webkit.org/show_bug.cgi?id=132629>).
2036
2037         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
2038         * MallocBench/MallocBench/Benchmark.cpp: Sort!
2039         * MallocBench/MallocBench/stress.cpp: Added.
2040         (Object::Object):
2041         (SizeStream::SizeStream):
2042         (SizeStream::next):
2043         (benchmark_stress): Usually, we random(0). Surprisingly, though, only
2044         random(1) reproduces the bug I was looking for.
2045         * MallocBench/MallocBench/stress.h: Added.
2046
2047 2014-06-02  Ryosuke Niwa  <rniwa@webkit.org>
2048
2049         Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
2050         https://bugs.webkit.org/show_bug.cgi?id=133455
2051
2052         Reviewed by Timothy Hatcher.
2053
2054         * Speedometer/: Renamed from DoYouEvenBench.
2055         * Skipped: Updated the path for InteractiveRunner.html
2056
2057 2014-06-02  Ryosuke Niwa  <rniwa@webkit.org>
2058
2059         Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
2060         https://bugs.webkit.org/show_bug.cgi?id=133455
2061
2062         Reviewed by Timothy Hatcher.
2063
2064         Renamed the benchmark to Speedometer and added the new look designed by Timothy Hatcher.
2065
2066         Also changed the unit of measurements from milliseconds to runs-per-minute averaged over the number
2067         of the benchmark suites (7 for 1.0). You can divide 420000 by the old benchmark score (in milliseconds)
2068         to get the new value for the set of tests that are enabled by default in 1.0. You can continue to see
2069         results in milliseconds on Full.html#ms.
2070
2071         * DoYouEvenBench/Full.html: Added a bunch of sections and the description of the benchmark.
2072
2073         * DoYouEvenBench/resources/benchmark-report.js: Remove the newly added content when ran inside a DRT or
2074         WTR so that run-perf-tests wouldn't error.
2075         * DoYouEvenBench/resources/benchmark-runner.js:
2076         (BenchmarkRunner.prototype._appendFrame): Call a newly added willAddTestFrame callback when it exists.
2077
2078         * DoYouEvenBench/resources/gauge.png: Added.
2079         * DoYouEvenBench/resources/gauge@2x.png: Added.
2080         * DoYouEvenBench/resources/logo.png: Added.
2081         * DoYouEvenBench/resources/logo@2x.png: Added.
2082         * DoYouEvenBench/resources/main.css: Replaced the style.
2083
2084         * DoYouEvenBench/resources/main.js:
2085         (window.benchmarkClient.willAddTestFrame): Place the iframe right where #testContainer is shown.
2086         (window.benchmarkClient.willRunTest): Show the name of the suite (e.g. EmberJS-TodoMVC) to run next.
2087         (window.benchmarkClient.didRunSuites):
2088         (window.benchmarkClient.willStartFirstIteration): Initialize _timeValues and _finishedTestCount now that
2089         we have an UI to run the benchmark multiple times without reloading the page.
2090         (window.benchmarkClient.didFinishLastIteration): Split into smaller pieces.
2091         (window.benchmarkClient._computeResults): Computes the mean and the statistics for the given time values,
2092         and also format them in a human readable form.
2093         (window.benchmarkClient._computeResults.totalTimeInDisplayUnit): Converts ms to runs/min.
2094         (window.benchmarkClient._computeResults.sigFigFromPercentDelta): Given a percentage error (e.g. 1%),
2095         returns the number of significant digits required for the mean.
2096         (window.benchmarkClient._computeResults.toSigFigPrecision): Calls toPrecision with the specified precision
2097         constrained to be at least the number of non-decimal digits and at most 6.
2098         (window.benchmarkClient._addDetailedResultsRow): Renamed from _addResult. It now takes the table to which
2099         to add a row and the iteration number.
2100         (window.benchmarkClient._updateGaugeNeedle): Added. Controls the angle of the speed indicator.
2101         (window.benchmarkClient._populateDetailedResults): Added.
2102         (window.benchmarkClient.prepareUI): Added. It adds an event listener to show a specified section when
2103         the push state of the document changes, and shows a warning sign when the view port size is too small.
2104         We do this inside a callback to avoid running it inside DRT / WTR.
2105         (startBenchmark):
2106         (showSection): Added.
2107         (startTest): Added.
2108         (showResultsSummary): Added.
2109         (showResultDetails): Added.
2110         (showAbout): Added.
2111
2112 2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>
2113
2114         DYEBench: Move test states into benchmarkClient and remove the closure
2115         https://bugs.webkit.org/show_bug.cgi?id=133438
2116
2117         Reviewed by Benjamin Poulain.
2118
2119         Moved all local variables in the closure wrapping benchmarkClient onto the object itself
2120         and removed the closure to improve the readability of the code.
2121
2122         * DoYouEvenBench/Full.html:
2123         * DoYouEvenBench/resources/main.js:
2124         (window.benchmarkClient.willRunTest):
2125         (window.benchmarkClient.didRunTest):
2126         (window.benchmarkClient.didRunSuites):
2127         (window.benchmarkClient.willStartFirstIteration):
2128         (window.benchmarkClient.didFinishLastIteration):
2129         (window.benchmarkClient._addResult): Moved.
2130         (.): Deleted.
2131
2132 2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>
2133
2134         DYEBench: Split stylesheets and scripts in Full.html into separate files
2135         https://bugs.webkit.org/show_bug.cgi?id=133437
2136
2137         Reviewed by Benjamin Poulain.
2138
2139         Extracted main.js and main.css.
2140
2141         Also fixed a bug in startBenchmark that disabled suites were counted towards the total number of tests.
2142
2143         * DoYouEvenBench/Full.html:
2144         * DoYouEvenBench/resources/main.css: Added.
2145         * DoYouEvenBench/resources/main.js: Added.
2146         (.addResult):
2147         (window.benchmarkClient):
2148         (startBenchmark): Renamed from startTest.
2149
2150 2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>
2151
2152         DYEBench: CSS parser warning at line 106 of base.css
2153         https://bugs.webkit.org/show_bug.cgi?id=133433
2154
2155         Reviewed by Maciej Stachowiak.
2156
2157         Removed the old filter CSS property for Internet Explorer. The latest Internet Explorer supports -ms-linear-gradient
2158         on background CSS property anyways.
2159
2160         It's interesting that some of the tests only have -webkit- prefixes. Perhaps we should update those subtests.
2161
2162         * DoYouEvenBench/Full.html:
2163         * DoYouEvenBench/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css:
2164         (#header:before):
2165         * DoYouEvenBench/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css:
2166         (#header:before):
2167         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
2168         (#header:before):
2169         * DoYouEvenBench/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css:
2170         (#header:before):
2171         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css:
2172         (#header:before):
2173         * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css:
2174         (#header:before):
2175         * DoYouEvenBench/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css:
2176         (#header:before):
2177
2178 2014-05-31  Ryosuke Niwa  <rniwa@webkit.org>
2179
2180         DYEBench: Ember.js assertion hit at line 20593
2181         https://bugs.webkit.org/show_bug.cgi?id=133431
2182
2183         Reviewed by Darin Adler.
2184
2185         The assertion was hit because ToDoMVC includes jQuery 2.1 and Ember.js 1.3.1 only recognizes jQuery 2.0.
2186         Port the assertion from Ember.js 1.5.1 to suppress the assertion.
2187
2188         We should update the entire Ember.js at some point but this would do the job for now.
2189
2190         * DoYouEvenBench/Full.html:
2191         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
2192
2193 2014-05-31  Ryosuke Niwa  <rniwa@webkit.org>
2194
2195         DYEBench: Prevent frame flattening on iOS
2196         https://bugs.webkit.org/show_bug.cgi?id=133428
2197
2198         Reviewed by Andreas Kling.
2199
2200         Prevent frame flattening on iOS by setting scrolling=no.
2201
2202         * DoYouEvenBench/Full.html:
2203         * DoYouEvenBench/resources/benchmark-runner.js:
2204         (BenchmarkRunner.prototype._appendFrame):
2205
2206 2014-05-30  Ryosuke Niwa  <rniwa@webkit.org>
2207
2208         DYEBench spits out 404 errors for learn.json
2209         https://bugs.webkit.org/show_bug.cgi?id=133416
2210
2211         Reviewed by Oliver Hunt.
2212
2213         Add an empty learn.json file so that it won't cause a 404 error when hosted on a http server.
2214
2215         Bumped the version number to 0.12.
2216
2217         * DoYouEvenBench/Full.html:
2218         * DoYouEvenBench/resources/todomvc/learn.json:
2219
2220 2014-05-23  Geoffrey Garen  <ggaren@apple.com>
2221
2222         Performance testing, diamond-square terrain generation + canvas
2223         https://bugs.webkit.org/show_bug.cgi?id=133054
2224
2225         Reviewed by Ryosuke Niwa.
2226
2227         This test was written by Hunter Loftis. It originally appeared on his
2228         blog @ <http://www.playfuljs.com/realistic-terrain-in-130-lines/>.
2229
2230         I did a bit of editing for format and benchmark suitability.
2231
2232         * Canvas/terrain.html: Added.
2233
2234 2014-05-13  Ryosuke Niwa  <rniwa@webkit.org>
2235
2236         DYEBench should run 20 iterations in browser
2237         https://bugs.webkit.org/show_bug.cgi?id=132795
2238
2239         Reviewed by Gavin Barraclough.
2240
2241         Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
2242         a more stable time and account for differences in the runtime environment, particularly,
2243         ASLR (Address Space Layout Randomization).
2244
2245         While we can't account for the latter effect when the benchmark is ran inside a browser,
2246         we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.
2247
2248         While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
2249         it's MUCH better than the current sample size of 5.
2250
2251         * DoYouEvenBench/Full.html:
2252         (benchmarkClient.iterationCount): Set the default iteration count to 20.
2253         (startTest): Use benchmarkClient.iterationCount as the iteration count.
2254         * DoYouEvenBench/resources/benchmark-report.js:
2255         (benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
2256         inside run-perf-tests.
2257
2258 2014-05-09  Ryosuke Niwa  <rniwa@webkit.org>
2259
2260         DYEBench should show 95th percentile right next to the mean with ±
2261         https://bugs.webkit.org/show_bug.cgi?id=132729
2262
2263         Reviewed by Darin Adler.
2264
2265         Before this patch, Full.html showed the 95th percentile delta for the arthemtic mean in a separate row
2266         but this was confusing for some people. Show it right next to mean in the same row separated by ±.
2267
2268         * DoYouEvenBench/Full.html:
2269
2270 2014-05-08  Ryosuke Niwa  <rniwa@webkit.org>
2271
2272         DYEBench should use TodoMVC to test FlightJS for consistency
2273         https://bugs.webkit.org/show_bug.cgi?id=132727
2274
2275         Reviewed by Andreas Kling.
2276
2277         Add a test suite for the FlightJS version of TodoMVC, and disable FlightJS-MailClient by default.
2278
2279         I initially intended to include a wider variety of demo apps in DYEBench
2280         but that's not happening any time soon so let us use TodoMVC for all frameworks for now.
2281
2282         We can add more demo apps in v2.
2283
2284         * DoYouEvenBench/Full.html: Increment the version to 0.10.
2285         * DoYouEvenBench/InteractiveRunner.html: Don't check disabled suites by default.
2286         * DoYouEvenBench/resources/tests.js:
2287         * DoYouEvenBench/resources/todomvc/dependency-examples: Added.
2288         * DoYouEvenBench/resources/todomvc/dependency-examples/flight: Added.
2289         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.gitignore: Added.
2290         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.jshintrc: Added.
2291         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app: Added.
2292         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js: Added.
2293         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/app.js: Added.
2294         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data: Added.
2295         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/stats.js: Added.
2296         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/todos.js: Added.
2297         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/main.js: Added.
2298         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/store.js: Added.
2299         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui: Added.
2300         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js: Added.
2301         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js: Added.
2302         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js: Added.
2303         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js: Added.
2304         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js: Added.
2305         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js: Added.
2306         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/utils.js: Added.
2307         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates: Added.
2308         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/stats.html: Added.
2309         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/todo.html: Added.
2310         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower.json: Added.
2311         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components: Added.
2312         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot: Added.
2313         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js: Added.
2314         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim: Added.
2315         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js: Added.
2316         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Added.
2317         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight: Added.
2318         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib: Added.
2319         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js: Added.
2320         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js: Added.
2321         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js: Added.
2322         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Added.
2323         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js: Added.
2324         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Added.
2325         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Added.
2326         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js: Added.
2327         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js: Added.
2328         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery: Added.
2329         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Added.
2330         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs: Added.
2331         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text: Added.
2332         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js: Added.
2333         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js: Added.
2334         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common: Added.
2335         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Added.
2336         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js: Added.
2337         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Added.
2338         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/index.html: Added.
2339         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/karma.conf.js: Added.
2340         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/package.json: Added.
2341         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/readme.md: Added.
2342         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test: Added.
2343         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/.jshintrc: Added.
2344         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture: Added.
2345         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Added.
2346         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Added.
2347         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Added.
2348         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock: Added.
2349         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Added.
2350         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec: Added.
2351         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data: Added.
2352         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Added.
2353         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Added.
2354         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui: Added.
2355         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Added.
2356         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Added.
2357         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Added.
2358         * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/test-main.js: Added.
2359
2360 2014-05-07  Manuel Rego Casasnovas  <rego@igalia.com>
2361
2362         [CSS Grid Layout] Remove runtime feature
2363         https://bugs.webkit.org/show_bug.cgi?id=132382
2364
2365         Reviewed by Benjamin Poulain.
2366
2367         Remove set of WebKitCSSGridLayoutEnabled preference.
2368
2369         * Layout/auto-grid-lots-of-data.html:
2370         * Layout/fixed-grid-lots-of-data.html:
2371
2372 2014-05-06  Radu Stavila  <stavila@adobe.com>
2373
2374         [CSSRegions] Enabled regions performance tests by default
2375         https://bugs.webkit.org/show_bug.cgi?id=128244
2376
2377         Reviewed by Andreas Kling.
2378
2379         Enabled regions performance tests.
2380
2381         * Skipped:
2382
2383 2014-04-25  Andreas Kling  <akling@apple.com>
2384
2385         Bump jQuery to same version that dromaeo.com uses.
2386
2387         Rubber-stamped by Ryosuke Niwa.
2388
2389         * Dromaeo/resources/dromaeo/web/lib/jquery-1.10.2.min.js: Added.
2390         * Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
2391         * Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
2392         * Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
2393         * Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
2394         * Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
2395         * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:
2396
2397 2014-04-18  Geoffrey Garen  <ggaren@apple.com>
2398
2399         Added some more Membuster recordings to MallocBench
2400         https://bugs.webkit.org/show_bug.cgi?id=131862
2401
2402         Reviewed by Sam Weinig.
2403
2404         * MallocBench/MallocBench/Benchmark.cpp:
2405         (Benchmark::Benchmark):
2406         (Benchmark::run):
2407         * MallocBench/MallocBench/Benchmark.h:
2408         * MallocBench/MallocBench/CommandLine.cpp:
2409         * MallocBench/MallocBench/CommandLine.h:
2410         (CommandLine::runs): Added a --runs option, so we can specify zero runs
2411         for memory warning benchmarks. Those benchmarks want zero runs so that
2412         they can perform a single warmup, which does not free all allocated
2413         objects, and then see how far back to 0MB they can get. Running multiple
2414         times would accumulate leaks, which is not representative of the
2415         simulated scenario.
2416
2417         * MallocBench/MallocBench/Interpreter.cpp:
2418         (Interpreter::Interpreter):
2419         (Interpreter::run):
2420         * MallocBench/MallocBench/Interpreter.h: Support not deallocating all
2421         objects allocated during the recording, so we can do low memory warning
2422         memory use measurements, as above.
2423
2424         * MallocBench/MallocBench/flickr.cpp:
2425         (benchmark_flickr_memory_warning):
2426         * MallocBench/MallocBench/main.cpp:
2427         (main):
2428         * MallocBench/MallocBench/reddit.cpp:
2429         (benchmark_reddit_memory_warning):
2430         * MallocBench/MallocBench/theverge.cpp:
2431         (benchmark_theverge_memory_warning): Adopt the API above.
2432
2433         * MallocBench/run-malloc-benchmarks: I took a first pass at listing all
2434         available benchmarks here. Then I commented out the benchmarks that
2435         probably aren't reasonable to run by default.
2436
2437 2014-04-18  Geoffrey Garen  <ggaren@apple.com>
2438
2439         MallocBench: removed the --measure-heap option
2440         https://bugs.webkit.org/show_bug.cgi?id=131854
2441
2442         Reviewed by Sam Weinig.
2443
2444         As of <https://bugs.webkit.org/show_bug.cgi?id=131661>, measuring the
2445         heap is fast, so there's no reason to disable it.
2446
2447         * MallocBench/MallocBench/Benchmark.cpp:
2448         (Benchmark::Benchmark):
2449         (Benchmark::run):
2450         (Benchmark::printReport):
2451         * MallocBench/MallocBench/Benchmark.h:
2452         * MallocBench/MallocBench/CommandLine.cpp:
2453         (CommandLine::printUsage):
2454         * MallocBench/MallocBench/CommandLine.h:
2455         (CommandLine::heapSize):
2456         (CommandLine::measureHeap): Deleted.
2457         * MallocBench/MallocBench/main.cpp:
2458         (main):
2459
2460 2014-04-16  Alexandru Chiculita  <achicu@adobe.com>
2461
2462         Improve performance of the RenderLayerCompositor::OverlapMap
2463         https://bugs.webkit.org/show_bug.cgi?id=115063
2464
2465         Reviewed by Simon Fraser.
2466
2467         Testing the performance of computing the overlap of 5000 layers.
2468
2469         * Layout/layers_overlap_2d.html: Added. Using non-composited layers, to check
2470         that the performance on the non-composited path is not changing with this patch.
2471         * Layout/layers_overlap_3d.html: Added. Records the time to do the layout of 5000
2472         non-overlapping 3D layers.
2473
2474 2014-04-15  Zoltan Horvath  <zoltan@webkit.org>
2475
2476         [CSS Shapes] Linking stylesheet instead of inline style definition has ruined ShapesRegions test
2477         https://bugs.webkit.org/show_bug.cgi?id=131572
2478
2479         Reviewed by Rob Buis.
2480
2481         In r167022 I moved the common CSS selectors into RegionsShapes.css, then I linked it into the perf test
2482         files, but the measurement results dropped down from about 400ms to 10ms. I realized it's caused by the
2483         linked css rule, so I've put the selectors back into every test case, which fixes the test measurements.
2484
2485         * Layout/Shapes/resources/RegionsShapes.css: Removed.
2486         * Layout/Shapes/resources/RegionsShapesContent.html:
2487         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html:
2488         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html:
2489         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html:
2490         * Layout/Shapes/resources/RegionsShapesContentNoShapes.html:
2491
2492 2014-04-14  Geoffrey Garen  <ggaren@apple.com>
2493
2494         MallocBench should scavenge explicitly instead of waiting
2495         https://bugs.webkit.org/show_bug.cgi?id=131661
2496
2497         Reviewed by Andreas Kling.
2498
2499         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Don't build mbmalloc
2500         by default because it will overwrite any other mbmalloc you're working
2501         with in the WebKitBuild directory.
2502
2503         * MallocBench/MallocBench/Benchmark.cpp:
2504         (Benchmark::run): Scavenge explicitly instead of waiting. This is faster,
2505         and it's the only way to get FastMalloc to scavenge. (That's a bug in
2506         FastMalloc, but we don't want it to interfere with broader testing.)
2507
2508         * MallocBench/MallocBench/mbmalloc.cpp:
2509         * MallocBench/MallocBench/mbmalloc.h: Added a scavenge implementation
2510         for system malloc.
2511
2512 2014-04-14  Geoffrey Garen  <ggaren@apple.com>
2513
2514         A few MallocBench record/replay fixes
2515         https://bugs.webkit.org/show_bug.cgi?id=131627
2516
2517         Reviewed by Andreas Kling.
2518
2519         * MallocBench/MallocBench/Interpreter.cpp:
2520         (Interpreter::run): Accept 0-sized allocations without asserting because
2521         WebKit does that sometimes.
2522
2523         * MallocBench/MallocBench/flickr.ops:
2524         * MallocBench/MallocBench/flickr_memory_warning.ops:
2525         * MallocBench/MallocBench/reddit.ops:
2526         * MallocBench/MallocBench/reddit_memory_warning.ops:
2527         * MallocBench/MallocBench/theverge.ops:
2528         * MallocBench/MallocBench/theverge_memory_warning.ops: Updated these
2529         recordings because a bug in the recording mechanism caused one out of
2530         every few thousand slot values to be bogus.
2531
2532 2014-04-13  Geoffrey Garen  <ggaren@apple.com>
2533
2534         Added some website recordings to MallocBench -- taken from Membuster
2535         https://bugs.webkit.org/show_bug.cgi?id=131601
2536
2537         Reviewed by Ryosuke Niwa.
2538
2539         Added flickr, reddit, and theverge -- each recorded from Membuster's
2540         cache, with and without sending Safari a low memory warning.
2541
2542         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
2543         * MallocBench/MallocBench/Benchmark.cpp:
2544         * MallocBench/MallocBench/flickr.cpp: Added.
2545         (benchmark_flickr):
2546         (benchmark_flickr_memory_warning):
2547         * MallocBench/MallocBench/flickr.h: Added.
2548         * MallocBench/MallocBench/flickr.ops: Added.
2549         * MallocBench/MallocBench/flickr_memory_warning.ops: Added.
2550         * MallocBench/MallocBench/reddit.cpp: Added.
2551         (benchmark_reddit):
2552         (benchmark_reddit_memory_warning):
2553         * MallocBench/MallocBench/reddit.h: Added.
2554         * MallocBench/MallocBench/reddit.ops: Added.
2555         * MallocBench/MallocBench/reddit_memory_warning.ops: Added.
2556         * MallocBench/MallocBench/theverge.cpp: Added.
2557         (benchmark_theverge):
2558         (benchmark_theverge_memory_warning):
2559         * MallocBench/MallocBench/theverge.h: Added.
2560         * MallocBench/MallocBench/theverge.ops: Added.
2561         * MallocBench/MallocBench/theverge_memory_warning.ops: Added.
2562
2563 2014-04-13  Geoffrey Garen  <ggaren@apple.com>
2564
2565         MallocBench record/replay should support realloc
2566         https://bugs.webkit.org/show_bug.cgi?id=131598
2567
2568         Reviewed by Ryosuke Niwa.
2569
2570         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Fixed some linkage
2571         issues that caused us not to fully link to system malloc in the default
2572         case. Also marked mbmalloc.dylib as required so the error message will
2573         be clearer if we mess up.
2574
2575         * MallocBench/MallocBench/Interpreter.cpp:
2576         (Interpreter::run):
2577         * MallocBench/MallocBench/Interpreter.h: Added the realloc case, and
2578         upgraded one-letter names to full words.
2579
2580 2014-04-11  Dirk Schulze  <krit@webkit.org>
2581
2582         Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
2583         https://bugs.webkit.org/show_bug.cgi?id=79659
2584
2585         Reviewed by Andreas Kling.
2586
2587         Add performance tests for real this time.
2588
2589         * Canvas/compositing-drawimage.html: Added.
2590         * Canvas/compositing-fillRect.html: Added.
2591
2592
2593 2014-04-11  Dirk Schulze  <krit@webkit.org>
2594
2595         Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
2596         https://bugs.webkit.org/show_bug.cgi?id=79659
2597
2598         Reviewed by Andreas Kling.
2599
2600         Add performance tests for fillRect() and drawImage() on composited contexts.
2601
2602         * Canvas/compositing-drawimage.html: Added.
2603         * Canvas/compositing-fillRect.html: Added.
2604
2605 2014-04-09  Zoltan Horvath  <zoltan@webkit.org>
2606
2607         [CSS Shapes] Add no shapes version of RegionsShapes performance test
2608         https://bugs.webkit.org/show_bug.cgi?id=131455
2609         
2610         Reviewed by Ryosuke Niwa.
2611
2612         This is a no shapes version of the RegionsShapes performance test. All the content
2613         will wrap around the floating containers. This way we can compare the runtime/memory
2614         usage of the RegionsShapes test with/without shapes. The test is skipped by default.
2615
2616         * Layout/Shapes/RegionsShapesNoShapes.html: Added.
2617         * Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Added.
2618
2619 2014-04-09  Zoltan Horvath  <zoltan@webkit.org>
2620
2621         [CSS Shapes] Add no regions version of RegionsShapes performance test
2622         https://bugs.webkit.org/show_bug.cgi?id=131442
2623
2624         Reviewed by Ryosuke Niwa.
2625
2626         We would like have a no regions version for RegionsShapes performance test. The new
2627         test produces similar layout to RegionsShapes.html without using regions. It is helpful
2628         for us to do further comparisons when necessary. This test is skipped by default.
2629
2630         * Layout/Shapes/RegionsShapesNoRegions.html: Added.
2631         * Layout/Shapes/resources/RegionsShapes.css: Added.
2632         (html, body):
2633         (.shape):
2634         (#circleShape):
2635         (#imageShape):
2636         (#insetShape):
2637         (#roundedInsetShape):
2638         (#triangleLeft):
2639         (#triangleRight):
2640         (#selfIntersectingStar):
2641         (#region1):
2642         (#region2):
2643         (#region3):
2644         * Layout/Shapes/resources/RegionsShapesContent.html:
2645         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html: Added.
2646         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html: Added.
2647         * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html: Added.
2648
2649 2014-04-02  Geoffrey Garen  <ggaren@apple.com>
2650
2651         Unreviewed.
2652
2653         Try to ignore some Xcode shmutz in MallocBench.
2654
2655         * MallocBench/MallocBench.xcodeproj: Added property svn:ignore.
2656
2657 2014-04-02  Geoffrey Garen  <ggaren@apple.com>
2658
2659         Let's benchmark malloc
2660         https://bugs.webkit.org/show_bug.cgi?id=131118
2661
2662         Reviewed by Mark Hahnenberg.
2663
2664         I want to replace fastMalloc with something faster (fasterMalloc?).
2665         I wrote these benchmarks to test / drive development.
2666
2667         * MallocBench: Added.
2668         * MallocBench/MallocBench: Added.
2669         * MallocBench/MallocBench.xcodeproj: Added.
2670         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Added.
2671         * MallocBench/MallocBench/Benchmark.cpp: Added.
2672         (allocateHeap):
2673         (deallocateHeap):
2674         (Benchmark::Benchmark):
2675         (Benchmark::printBenchmarks):
2676         (Benchmark::runOnce):
2677         (Benchmark::run):
2678         (Benchmark::printReport):
2679         (Benchmark::currentTimeMS):
2680         (Benchmark::currentMemoryBytes):
2681         * MallocBench/MallocBench/Benchmark.h: Added.
2682         (Benchmark::Memory::Memory):
2683         (Benchmark::Memory::operator-):
2684         (Benchmark::isValid):
2685         * MallocBench/MallocBench/CPUCount.cpp: Added.
2686         (cpuCount):
2687         * MallocBench/MallocBench/CPUCount.h: Added.
2688         * MallocBench/MallocBench/CommandLine.cpp: Added.
2689         (CommandLine::printUsage):
2690         * MallocBench/MallocBench/CommandLine.h: Added.
2691         (CommandLine::isValid):
2692         (CommandLine::benchmarkName):
2693         (CommandLine::isParallel):
2694         (CommandLine::heapSize):
2695         (CommandLine::measureHeap):
2696         * MallocBench/MallocBench/Interpreter.cpp: Added.
2697         (Interpreter::Interpreter):
2698         (Interpreter::~Interpreter):
2699         (Interpreter::run):
2700         * MallocBench/MallocBench/Interpreter.h: Added.
2701         * MallocBench/MallocBench/balloon.cpp: Added.
2702         (benchmark_balloon):
2703         * MallocBench/MallocBench/balloon.h: Added.
2704         * MallocBench/MallocBench/big.cpp: Added.
2705         (benchmark_big):
2706         * MallocBench/MallocBench/big.h: Added.
2707         * MallocBench/MallocBench/churn.cpp: Added.
2708         (HeapDouble::operator new):
2709         (HeapDouble::operator delete):
2710         (HeapDouble::HeapDouble):
2711         (HeapDouble::operator+=):
2712         (benchmark_churn):
2713         * MallocBench/MallocBench/churn.h: Added.
2714         * MallocBench/MallocBench/crash.ops: Added.
2715         * MallocBench/MallocBench/facebook.cpp: Added.
2716         (benchmark_facebook):
2717         * MallocBench/MallocBench/facebook.h: Added.
2718         * MallocBench/MallocBench/facebook.ops: Added.
2719         * MallocBench/MallocBench/fragment.cpp: Added.
2720         (validate):
2721         (benchmark_fragment):
2722         (benchmark_fragment_iterate):
2723         * MallocBench/MallocBench/fragment.h: Added.
2724         * MallocBench/MallocBench/list.cpp: Added.
2725         (benchmark_list_allocate):
2726         (benchmark_list_traverse):
2727         * MallocBench/MallocBench/list.h: Added.
2728         * MallocBench/MallocBench/main.cpp: Added.
2729         (main):
2730         * MallocBench/MallocBench/mbmalloc.cpp: Added.
2731         * MallocBench/MallocBench/mbmalloc.h: Added.
2732         * MallocBench/MallocBench/medium.cpp: Added.
2733         (benchmark_medium):
2734         * MallocBench/MallocBench/medium.h: Added.
2735         * MallocBench/MallocBench/message.cpp: Added.
2736         (benchmark_message_one):
2737         (benchmark_message_many):
2738         * MallocBench/MallocBench/message.h: Added.
2739         * MallocBench/MallocBench/realloc.cpp: Added.
2740         (benchmark_realloc):
2741         * MallocBench/MallocBench/realloc.h: Added.
2742         * MallocBench/MallocBench/tree.cpp: Added.
2743         (benchmark_tree_allocate):
2744         (benchmark_tree_traverse):
2745         (benchmark_tree_churn):
2746         * MallocBench/MallocBench/tree.h: Added.
2747         * MallocBench/run-malloc-benchmarks: Added.
2748
2749 2014-03-29  Mark Lam  <mark.lam@apple.com>
2750
2751         LongSpider 3d-morph result check is inappropriate.
2752         <https://webkit.org/b/130928>
2753
2754         Reviewed by Filip Pizlo.
2755
2756         The LongSpider 3d-morph component expected result check is incorrect.
2757         The existing test checks if the leading digit of a sum starts with "-1".
2758         However, it turned out that the expected sum is in the order of
2759         -1.8735013540549517e-16 (i.e. very close to 0).  With small errors in
2760         the terms of the sum adding up, it is very easy for the resultant sum 
2761         to fluctuate.  There is no guarantee that the resultant sum's most
2762         significant digit will start with -1 either.
2763
2764         The fix is to do a tolerance check on all the terms of the sum as well
2765         as the total sum value instead.  The tolerance should be more lenient
2766         for the sum which accumulates error from the individual terms, then for
2767         individual terms.
2768
2769         * LongSpider/3d-morph.js:
2770         (expect):
2771
2772 2014-03-28  Zoltan Horvath  <zoltan@webkit.org>
2773
2774         [CSS Shapes] Add performance tests for Shapes with Regions
2775         https://bugs.webkit.org/show_bug.cgi?id=129624
2776
2777         Reviewed by Ryosuke Niwa.
2778
2779         This tests introduces a real-life like page, which contains different types of shapes within
2780         shape-outsides. The content flows through regions, which use media queries. The performance test
2781         loads the actual Shapes-Regions test case into iframes with different page sizes (thus the layout
2782         triggers the media queries as well), and measures its load time.
2783
2784         * Layout/RegionsShapes.html: Added.
2785         * Layout/Shapes/resources/RegionsShapesContent.html: Added.
2786
2787 2014-03-20  Zoltan Horvath  <zoltan@webkit.org>
2788
2789         Add option for hiding Confidence Interval Delta on the performance tests results page
2790         https://bugs.webkit.org/show_bug.cgi?id=130483
2791
2792         Reviewed by Ryosuke Niwa.
2793
2794         I've found it useful to hide the confidence interval delta from the results table
2795         sometimes, for example on copying data, or for a clearer look. This patch introduces
2796         a new button for it on the local results page.
2797
2798         * resources/results-template.html:
2799
2800 2014-03-20  Laszlo Vidacs  <lvidacs.u-szeged@partner.samsung.com>
2801
2802         Optimize RenderTable::colToEffCol() for tables without colspans
2803         https://bugs.webkit.org/show_bug.cgi?id=129298
2804
2805         Reviewed by Simon Fraser.
2806
2807         Create an alternative fast path to RenderTable colToEffCol() and effColToCol()
2808         when there is no colspan or colspan does not exceed the width of table.
2809         Blink merge https://codereview.chromium.org/154243002 by rhogan
2810
2811         * Layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html: Added.
2812         * Layout/large-table-with-collapsed-borders-and-colspans.html: Added.
2813         * Layout/large-table-with-collapsed-borders-and-no-colspans.html: Added.
2814         * Layout/resources/large-table-with-collapsed-borders.css: Added.
2815         * Layout/resources/large-table-with-collapsed-borders.js: Added.
2816
2817 2014-03-14  Maciej Stachowiak  <mjs@apple.com>
2818
2819         Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
2820         https://bugs.webkit.org/show_bug.cgi?id=130276
2821         <rdar://problem/16266927>
2822
2823         Reviewed by Simon Fraser.
2824
2825         * Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html:
2826         * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html:
2827         * Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html:
2828         * Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html:
2829         * LongSpider/3d-morph.js:
2830         * LongSpider/3d-raytrace.js:
2831         * LongSpider/math-cordic.js:
2832         * LongSpider/string-tagcloud.js:
2833         * Parser/resources/html5-8266.html:
2834         * Parser/resources/html5.html:
2835
2836 2014-03-10  Zoltan Horvath  <zoltan@webkit.org>
2837
2838         [CSS Shapes] Add performance tests for SVG shape with shape-margin
2839         https://bugs.webkit.org/show_bug.cgi?id=129930
2840
2841         Reviewed by Ryosuke Niwa.
2842
2843         The test is skipped by default.
2844
2845         * Layout/Shapes/ShapeOutsideSVGWithMargin.html: Added.
2846         * Layout/Shapes/resources/shape.svg: Added.
2847
2848 2014-02-19  Zoltan Horvath  <zoltan@webkit.org>
2849
2850         [CSS Shapes] Add performance test for stacked floats with shape-outsides
2851         https://bugs.webkit.org/show_bug.cgi?id=128821
2852
2853         Reviewed by Brent Fulgham.
2854
2855         This tests generate stacked floats content with shape-outsides.
2856         The test is skipped by default.
2857
2858         * Layout/Shapes/ShapeOutsideStackedPolygons.html: Added.
2859
2860 2014-02-15  Zoltan Horvath  <zoltan@webkit.org>
2861
2862         [CSS Shapes] Add performance test for raster shape with shape-margin
2863         https://bugs.webkit.org/show_bug.cgi?id=128770
2864
2865         Reviewed by Ryosuke Niwa.
2866
2867         This patch introduces a new performance test for image valued shapes,
2868         where shape-margin is applied on the shape.
2869         The test is skipped by default.
2870
2871         * Layout/Shapes/ShapeOutsideRasterWithMargin.html: Added.
2872
2873 2014-02-14  Ryosuke Niwa  <rniwa@webkit.org>
2874
2875         Improve the appearance of DYEBench
2876         https://bugs.webkit.org/show_bug.cgi?id=128866
2877
2878         Reviewed by Antti Koivisto.
2879
2880         Add a div that shows progress during the test. Also show 95th percentile,
2881         and use a table instead of pre to show results.
2882
2883         * DoYouEvenBench/Full.html:
2884         (.addResult): Added. Shows results in a table.
2885         (benchmarkClient.willRunTest): Added to show the progress bar.
2886         (benchmarkClient.didRunTest):
2887         (benchmarkClient.didRunSuites):
2888         (benchmarkClient.didFinishLastIteration): Compute 95th percentile using Statistics.js
2889
2890         * DoYouEvenBench/resources/benchmark-runner.js:
2891         (BenchmarkRunner.prototype._appendFrame): Fix the bug where marginLeft and marginTop
2892         weren't correctly parsed. We were treating top as left and bottom as top somehow.
2893         (BenchmarkRunner.prototype._runTestAndRecordResults): Fixed a typo.
2894
2895 2014-02-13  Zoltan Horvath  <zoltan@webkit.org>
2896
2897         [CSS Shapes] Add performance test for complex polygon with shape-margin
2898         https://bugs.webkit.org/show_bug.cgi?id=128769
2899
2900         Reviewed by Ryosuke Niwa.
2901
2902         This patch modifies the logic of createShapeOutsideTest to accept multiple
2903         CSS properties from the test. The patch adds performance test for complex
2904         polygon shape (self intersecting at multiple places) case, moreover we
2905         apply shape-margin on the polygon also.
2906
2907         * Layout/Shapes/ShapeOutsideContentBox.html:
2908         * Layout/Shapes/ShapeOutsideInset.html:
2909         * Layout/Shapes/ShapeOutsidePolygonWithMargin.html: Added.
2910         * Layout/Shapes/ShapeOutsideRaster.html:
2911         * Layout/Shapes/ShapeOutsideSimplePolygon.html:
2912         * Layout/Shapes/resources/shapes.js:
2913
2914 2014-02-13  Zoltan Horvath  <zoltan@webkit.org>
2915
2916         [CSS Shapes] Add performance test for raster shape
2917         https://bugs.webkit.org/show_bug.cgi?id=128746
2918
2919         Reviewed by Ryosuke Niwa.
2920
2921         This patch adds performance testing for image valued shape-outside.
2922         The test is skipped by default for now.
2923
2924         * Layout/Shapes/ShapeOutsideRaster.html: Added.
2925         * Layout/Shapes/resources/shape.gif: Added.
2926
2927 2014-02-10  Zoltan Horvath  <zoltan@webkit.org>
2928
2929         [CSS Shapes] Add initial performance tests for polygon shape 
2930         https://bugs.webkit.org/show_bug.cgi?id=128554
2931
2932         Reviewed by Ryosuke Niwa.
2933
2934         This patch adds performance testing for simple polygon shape-outside.
2935         The Shapes performance tests directory is skipped by default.
2936
2937         * Layout/Shapes/ShapeOutsideSimplePolygon.html: Added.
2938
2939 2014-02-07  Zoltan Horvath  <zoltan@webkit.org>
2940
2941         [CSS Shapes] Add initial performance tests for inset shape
2942         https://bugs.webkit.org/show_bug.cgi?id=128378
2943
2944         Reviewed by Ryosuke Niwa.
2945
2946         * Layout/Shapes/ShapeOutsideContentBox.html: Move js to shapes.js.
2947         * Layout/Shapes/ShapeOutsideInset.html: Added.
2948         * Layout/Shapes/resources/shapes.js: Added.
2949         (.):
2950
2951 2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>
2952
2953         Undelete the "build" directory erroneously removed in r163427.
2954
2955         * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/director/build:
2956
2957 2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>
2958
2959         Revert the change made in r162216 as it broke the benchmark on shipping Safari.
2960
2961         * DoYouEvenBench/resources/benchmark-runner.js:
2962
2963 2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>
2964
2965         DoYouEvenBench: Update Ember.js test case
2966         https://bugs.webkit.org/show_bug.cgi?id=128227
2967
2968         Reviewed by Benjamin Poulain.
2969
2970         Updated the Ember.js TodoMVC implementation.
2971
2972         * DoYouEvenBench/resources/tests.js:
2973         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower.json:
2974         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Added.
2975         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js:
2976         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
2977         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
2978         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js:
2979         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
2980         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js:
2981         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/index.html:
2982         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/app.js:
2983         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js:
2984         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js:
2985         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Added.
2986         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
2987         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
2988         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/todo.js:
2989         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/router.js:
2990         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js:
2991         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Added.
2992         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/readme.md:
2993         * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/test.html:
2994
2995 2014-02-04  Zoltan Horvath  <zoltan@webkit.org>
2996
2997         [CSS Shapes] Add initial performance test for shape-outside: content-box
2998         https://bugs.webkit.org/show_bug.cgi?id=128190
2999
3000         Reviewed by Ryosuke Niwa.
3001
3002         I've introduced Shapes subdirectory in Layout, every CSS Shapes related performance tests should
3003         go there in the future. The initial performance tests uses 'shape-outside: content-box' in order
3004         to tests the code paths of the Shapes implementation. I also introduced shapes.js, which allows us
3005         to easily add new, simple performance tests for shape-outside.
3006
3007         The entire progress is tracked under #128188 meta bug.
3008
3009         * Layout/Shapes/ShapeOutsideContentBox.html: Added.
3010         * Layout/Shapes/resources/shapes.css: Added.
3011         * Layout/Shapes/resources/shapes.js: Added.
3012         * Skipped: We skip running the tests by default for now.
3013
3014 2014-01-17  Manuel Rego Casasnovas  <rego@igalia.com>
3015
3016         [CSS Regions] Minor fixes in regions performance tests
3017         https://bugs.webkit.org/show_bug.cgi?id=127041
3018
3019         Reviewed by Ryosuke Niwa.
3020
3021         Fix minor issues in CSS Regions performance tests.
3022
3023         * Layout/RegionsAuto.html: Change type to lower case.
3024         * Layout/RegionsAutoMaxHeight.html: Ditto.
3025         * Layout/RegionsFixed.html: Ditto.
3026         * Layout/RegionsFixedShort.html: Ditto.
3027         * Layout/RegionsSelection.html: Ditto. Move test methods from regions.js.
3028         * Layout/resources/regions.js: Remove moved methods.
3029
3030 2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>
3031
3032         Host DoYouEvenBench on webkit.org
3033         https://bugs.webkit.org/show_bug.cgi?id=127185
3034
3035         Reviewed by Benjamin Poulain.
3036
3037         Compute the resources directory relative to the benchmark-runner's location
3038         so that we can load tests even if the runner HTML was located elsewhere.
3039
3040         * DoYouEvenBench/Full.html:
3041         * DoYouEvenBench/resources/benchmark-runner.js:
3042         (BenchmarkState._containingDirectory):
3043
3044 2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>
3045
3046         DoYouEvenBench: Move flightjs-example-app and todomvc into resources
3047         https://bugs.webkit.org/show_bug.cgi?id=127183
3048
3049         Rubber-stamped by Anders Carlsson.
3050
3051         * DoYouEvenBench/InteractiveRunner.html: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
3052         * DoYouEvenBench/benchmark.html: Removed.
3053         * DoYouEvenBench/flightjs-example-app: Removed.
3054         * DoYouEvenBench/flightjs-example-app/LICENSE.md: Removed.
3055         * DoYouEvenBench/flightjs-example-app/README.md: Removed.
3056         * DoYouEvenBench/flightjs-example-app/app: Removed.
3057         * DoYouEvenBench/flightjs-example-app/app/boot: Removed.
3058         * DoYouEvenBench/flightjs-example-app/app/boot/page.js: Removed.
3059         * DoYouEvenBench/flightjs-example-app/app/component_data: Removed.
3060         * DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Removed.
3061         * DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Removed.
3062         * DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Removed.
3063         * DoYouEvenBench/flightjs-example-app/app/component_ui: Removed.
3064         * DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Removed.
3065         * DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Removed.
3066         * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Removed.
3067         * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Removed.
3068         * DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Removed.
3069         * DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Removed.
3070         * DoYouEvenBench/flightjs-example-app/app/css: Removed.
3071         * DoYouEvenBench/flightjs-example-app/app/css/custom.css: Removed.
3072         * DoYouEvenBench/flightjs-example-app/app/data.js: Removed.
3073         * DoYouEvenBench/flightjs-example-app/app/templates.js: Removed.
3074         * DoYouEvenBench/flightjs-example-app/components: Removed.
3075         * DoYouEvenBench/flightjs-example-app/components/bootstrap: Removed.
3076         * DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Removed.
3077         * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Removed.
3078         * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Removed.
3079         * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Removed.
3080         * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Removed.
3081         * DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Removed.
3082         * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Removed.
3083         * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Removed.
3084         * DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Removed.
3085         * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Removed.
3086         * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Removed.
3087         * DoYouEvenBench/flightjs-example-app/components/es5-shim: Removed.
3088         * DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Removed.
3089         * DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Removed.
3090         * DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Removed.
3091         * DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Removed.
3092         * DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Removed.
3093         * DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Removed.
3094         * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Removed.
3095         * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Removed.
3096         * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Removed.
3097         * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Removed.
3098         * DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Removed.
3099         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Removed.
3100         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Removed.
3101         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Removed.
3102         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Removed.
3103         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Removed.
3104         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Removed.
3105         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Removed.
3106         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Removed.
3107         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Removed.
3108         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Removed.
3109         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Removed.
3110         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Removed.
3111         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Removed.
3112         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Removed.
3113         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Removed.
3114         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Removed.
3115         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Removed.
3116         * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Removed.
3117         * DoYouEvenBench/flightjs-example-app/components/flight: Removed.
3118         * DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Removed.
3119         * DoYouEvenBench/flightjs-example-app/components/flight/lib: Removed.
3120         * DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Removed.
3121         * DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Removed.
3122         * DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Removed.
3123         * DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Removed.
3124         * DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Removed.
3125         * DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Removed.
3126         * DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Removed.
3127         * DoYouEvenBench/flightjs-example-app/components/flight/tools: Removed.
3128         * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Removed.
3129         * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Removed.
3130         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Removed.
3131         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Removed.
3132         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Removed.
3133         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Removed.
3134         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Removed.
3135         * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Removed.
3136         * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Removed.
3137         * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Removed.
3138         * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Removed.
3139         * DoYouEvenBench/flightjs-example-app/components/jquery: Removed.
3140         * DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Removed.
3141         * DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Removed.
3142         * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Removed.
3143         * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Removed.
3144         * DoYouEvenBench/flightjs-example-app/components/mustache: Removed.
3145         * DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Removed.
3146         * DoYouEvenBench/flightjs-example-app/components/requirejs: Removed.
3147         * DoYouEvenBench/flightjs-example-app/components/requirejs/require.js: Removed.
3148         * DoYouEvenBench/flightjs-example-app/index.html: Removed.
3149         * DoYouEvenBench/flightjs-example-app/karma.conf.js: Removed.
3150         * DoYouEvenBench/flightjs-example-app/package.json: Removed.
3151         * DoYouEvenBench/flightjs-example-app/requireMain.js: Removed.
3152         * DoYouEvenBench/resources/benchmark-runner.js:
3153         * DoYouEvenBench/resources/flightjs-example-app: Copied from PerformanceTests/DoYouEvenBench/flightjs-example-app.
3154         * DoYouEvenBench/resources/todomvc: Copied from PerformanceTests/DoYouEvenBench/todomvc.
3155         * DoYouEvenBench/todomvc: Removed.
3156         * DoYouEvenBench/todomvc/architecture-examples: Removed.
3157         * DoYouEvenBench/todomvc/architecture-examples/angularjs: Removed.
3158         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower.json: Removed.
3159         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components: Removed.
3160         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular: Removed.
3161         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks: Removed.
3162         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
3163         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
3164         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common: Removed.
3165         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
3166         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
3167         * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
3168         * DoYouEvenBench/todomvc/architecture-examples/angularjs/index.html: Removed.
3169         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js: Removed.
3170         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/app.js: Removed.
3171         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers: Removed.
3172         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js: Removed.
3173         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives: Removed.
3174         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
3175         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js: Removed.
3176         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js: Removed.
3177         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services: Removed.
3178         * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services/todoStorage.js: Removed.
3179         * DoYouEvenBench/todomvc/architecture-examples/angularjs/readme.md: Removed.
3180         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test: Removed.
3181         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config: Removed.
3182         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
3183         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/package.json: Removed.
3184         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
3185         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit: Removed.
3186         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
3187         * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
3188         * DoYouEvenBench/todomvc/architecture-examples/backbone: Removed.
3189         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower.json: Removed.
3190         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components: Removed.
3191         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone: Removed.
3192         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage: Removed.
3193         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Removed.
3194         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js: Removed.
3195         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery: Removed.
3196         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Removed.
3197         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common: Removed.
3198         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Removed.
3199         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Removed.
3200         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Removed.
3201         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore: Removed.
3202         * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Removed.
3203         * DoYouEvenBench/todomvc/architecture-examples/backbone/index.html: Removed.
3204         * DoYouEvenBench/todomvc/architecture-examples/backbone/js: Removed.
3205         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/app.js: Removed.
3206         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections: Removed.
3207         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections/todos.js: Removed.
3208         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models: Removed.
3209         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models/todo.js: Removed.
3210         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers: Removed.
3211         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers/router.js: Removed.
3212         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views: Removed.
3213         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/app-view.js: Removed.
3214         * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/todo-view.js: Removed.
3215         * DoYouEvenBench/todomvc/architecture-examples/backbone/readme.md: Removed.
3216         * DoYouEvenBench/todomvc/architecture-examples/emberjs: Removed.
3217         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower.json: Removed.
3218         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components: Removed.
3219         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember: Removed.
3220         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter: Removed.
3221         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Removed.
3222         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Removed.
3223         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars: Removed.
3224         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Removed.
3225         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery: Removed.
3226         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Removed.
3227         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common: Removed.
3228         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css: Removed.
3229         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Removed.
3230         * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Removed.
3231         * DoYouEvenBench/todomvc/architecture-examples/emberjs/index.html: Removed.
3232         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js: Removed.
3233         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/app.js: Removed.
3234         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers: Removed.
3235         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Removed.
3236         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Removed.
3237         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs: Removed.
3238         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
3239         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models: Removed.
3240         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
3241         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/todo.js: Removed.
3242         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/router.js: Removed.
3243         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views: Removed.
3244         * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Removed.
3245         * DoYouEvenBench/todomvc/architecture-examples/emberjs/readme.md: Removed.
3246         * DoYouEvenBench/todomvc/architecture-examples/emberjs/test.html: Removed.
3247         * DoYouEvenBench/todomvc/architecture-examples/jquery: Removed.
3248         * DoYouEvenBench/todomvc/architecture-examples/jquery/bower.json: Removed.
3249