GC constraint solving should be parallel
[WebKit-https.git] / PerformanceTests / ChangeLog
index 6c6ac21..cd99ff4 100644 (file)
@@ -1,3 +1,825 @@
+2017-12-01  Filip Pizlo  <fpizlo@apple.com>
+
+        GC constraint solving should be parallel
+        https://bugs.webkit.org/show_bug.cgi?id=179934
+
+        Reviewed by JF Bastien.
+        
+        Added a version of splay that measures latency in a way that run-jsc-benchmarks groks.
+
+        * Octane/splay.js: Added.
+        (this.Setup.setup.setup):
+        (this.TearDown.tearDown.tearDown):
+        (Benchmark):
+        (BenchmarkResult):
+        (BenchmarkResult.prototype.valueOf):
+        (BenchmarkSuite):
+        (alert):
+        (Math.random):
+        (BenchmarkSuite.ResetRNG):
+        (RunStep):
+        (BenchmarkSuite.RunSuites):
+        (BenchmarkSuite.CountBenchmarks):
+        (BenchmarkSuite.GeometricMean):
+        (BenchmarkSuite.GeometricMeanTime):
+        (BenchmarkSuite.AverageAbovePercentile):
+        (BenchmarkSuite.GeometricMeanLatency):
+        (BenchmarkSuite.FormatScore):
+        (BenchmarkSuite.prototype.NotifyStep):
+        (BenchmarkSuite.prototype.NotifyResult):
+        (BenchmarkSuite.prototype.NotifyError):
+        (BenchmarkSuite.prototype.RunSingleBenchmark):
+        (RunNextSetup):
+        (RunNextBenchmark):
+        (RunNextTearDown):
+        (BenchmarkSuite.prototype.RunStep):
+        (GeneratePayloadTree):
+        (GenerateKey):
+        (SplayUpdateStats):
+        (InsertNewNode):
+        (SplaySetup):
+        (SplayTearDown):
+        (SplayRun):
+        (SplayTree):
+        (SplayTree.prototype.isEmpty):
+        (SplayTree.prototype.insert):
+        (SplayTree.prototype.remove):
+        (SplayTree.prototype.find):
+        (SplayTree.prototype.findMax):
+        (SplayTree.prototype.findGreatestLessThan):
+        (SplayTree.prototype.exportKeys):
+        (SplayTree.prototype.splay_):
+        (SplayTree.Node):
+        (SplayTree.Node.prototype.traverse_):
+        (report):
+        (start):
+
+2017-12-04  Antti Koivisto  <antti@apple.com>
+
+        Fix StyleBench/InteractiveRunner.html
+        https://bugs.webkit.org/show_bug.cgi?id=180355
+
+        * StyleBench/InteractiveRunner.html:
+
+2017-12-01  Antti Koivisto  <antti@apple.com>
+
+        Add StyleBench
+        https://bugs.webkit.org/show_bug.cgi?id=180140
+        <rdar://problem/35366401>
+
+        * Skipped: Skip InteractiveRunner.html
+
+2017-11-30  Antti Koivisto  <antti@apple.com>
+
+        Add StyleBench
+        https://bugs.webkit.org/show_bug.cgi?id=180140
+
+        Reviewed by Simon Fraser and Joseph Pecoraro.
+
+        StyleBench tests performance of the CSS style resolution and style invalidation. Each test run
+        creates a large document and a large stylesheet using varying settings. It then applies
+        a series of mutations to the document and measures the time to update the style and rendering.
+        The resulting layout is simple, most of the pressure is on selector matching.
+
+        StyleBench uses Speedometer framework for UI and measurements. For profiling purposes, it can also
+        be run locally by opening style-bench.html directly.
+
+        There are currently four subtests:
+
+        - child and descendant combinators only (all other tests have these too).
+        - sibling combinators: '~' and '+'
+        - positional pseudo classes: :nth-child and similar
+        - ::before and ::after pseudo elements
+
+        The measured DOM mutations are:
+
+        - add classes
+        - remove classes
+        - add leaf elements
+        - remove leaf elements
+
+        * StyleBench: Added.
+        * StyleBench/InteractiveRunner.html: Added.
+
+            Copied and customized from Speedometer.
+
+        * StyleBench/index.html: Added.
+
+            Copied and customized from Speedometer.
+
+        * StyleBench/resources: Added.
+        * StyleBench/resources/style-bench.html: Added.
+        * StyleBench/resources/style-bench.js: Added.
+
+            The test class.
+
+        (Random):
+        (Random.prototype.get next):
+        (Random.prototype.chance):
+        (Random.prototype.number):
+        (nextAnimationFrame):
+        (defaultConfiguration):
+        (descendantCombinatorConfiguration):
+        (siblingCombinatorConfiguration):
+        (pseudoClassConfiguration):
+        (beforeAndAfterConfiguration):
+        (predefinedConfigurations):
+
+            Four predefined configurations.
+
+        (prototype.randomElementName):
+        (prototype.randomCombinator):
+        (prototype.randomPseudoClass):
+        (prototype.makeSimpleSelector):
+        (prototype.makeSelector):
+        (prototype.get randomColorComponent):
+        (prototype.makeDeclaration):
+        (prototype.makeRule):
+        (prototype.makeStylesheet):
+        (prototype.makeStyle):
+        (prototype.makeElement):
+        (prototype.makeTreeWithDepth):
+        (prototype.makeTree):
+        (prototype.updateCachedTestElements):
+        (prototype.randomTreeElement):
+        (prototype.addClasses):
+        (prototype.removeClasses):
+        (prototype.addLeafElements):
+        (prototype.removeLeafElements):
+        (prototype.async.runForever):
+        * StyleBench/resources/tests.js: Added.
+        (makeSteps):
+        (makeSuite):
+
+            Generates Speedometer Suites.
+
+2017-11-29  Robin Morisset  <rmorisset@apple.com>
+
+        The recursive tail call optimisation is wrong on closures
+        https://bugs.webkit.org/show_bug.cgi?id=179835
+
+        Reviewed by Saam Barati.
+
+        This new benchmark is a very close variant of the merge-sort benchmark, that writes mergeSorted in a kinda CPS style,
+        to stress the use of closures, and of polymorphic calls.
+
+        * TailBench9000/merge-sort-cps.js: Added.
+        (createRNG):
+        (mergeSorted):
+        (checkSorted.check):
+        (add):
+        (build):
+        (compare):
+        (checkSpectrum):
+        (buildArray):
+        (test):
+
+2017-11-22  Antti Koivisto  <antti@apple.com>
+
+        Add performance test for inlines and inline-blocks without text
+        https://bugs.webkit.org/show_bug.cgi?id=179955
+
+        Reviewed by Darin Adler.
+
+        Test for https://bugs.webkit.org/show_bug.cgi?id=179950
+
+        * Layout/inline-layout-no-text.html: Added.
+
+2017-11-12  Jon Lee  <jonlee@apple.com>
+
+        Add isolated text tests for MotionMark
+        https://bugs.webkit.org/show_bug.cgi?id=179226
+
+        Reviewed by Darin Adler.
+
+        Add a private suite that simplifies the design test.
+
+        * MotionMark/resources/debug-runner/tests.js:
+        * MotionMark/resources/runner/tests.js:
+        * MotionMark/tests/master/design.html: Copied from PerformanceTests/MotionMark/tests/master/text.html.
+        Rename the html file to the title of the test.
+        * MotionMark/tests/master/resources/design.js: Renamed from PerformanceTests/MotionMark/tests/master/resources/text.js.
+        * MotionMark/tests/text/design-6.html: Copied from PerformanceTests/MotionMark/tests/master/text.html.
+        Six active cells
+        * MotionMark/tests/text/design-6.js: Added.
+        * MotionMark/tests/text/design.html: Renamed from PerformanceTests/MotionMark/tests/master/text.html.
+        Replace the text with empty table cells that are populated with desired text.
+        * MotionMark/tests/text/design.js: Added.
+
+2017-11-06  Robin Morisset  <rmorisset@apple.com>
+
+        Add a third benchmark to TailBench
+        https://bugs.webkit.org/show_bug.cgi?id=178815
+
+        Reviewed by Saam Barati.
+
+        Add a new benchmark to TailBench: a BF interpreter written in a weird kinda functional style
+
+        * TailBench9000/bf-interpreter.js: Added.
+        (lookForMatchingBracket):
+        (evalRec):
+        (infiniteTape):
+        (evalShort):
+
+2017-11-06  Robin Morisset  <rmorisset@apple.com>
+
+        PerformanceTests/TailBench9000/merge-sort.js does not actually sort any of the large arrays it allocates
+        https://bugs.webkit.org/show_bug.cgi?id=178817
+
+        Reviewed by Saam Barati.
+
+        * TailBench9000/merge-sort.js:
+        (TEST_mergeSort):
+
+2017-11-02  Jon Lee  <jonlee@apple.com>
+
+        Add license for MotionMark
+        https://bugs.webkit.org/show_bug.cgi?id=179222
+
+        Reviewed by Ryosuke Niwa.
+
+        * MotionMark/about.html:
+        * MotionMark/developer.html:
+        * MotionMark/index.html:
+        * MotionMark/resources/debug-runner/graph.js:
+        * MotionMark/resources/debug-runner/motionmark.css:
+        * MotionMark/resources/debug-runner/motionmark.js:
+        * MotionMark/resources/debug-runner/tests.js:
+        * MotionMark/resources/extensions.js:
+        * MotionMark/resources/statistics.js:
+        * MotionMark/resources/strings.js:
+        * MotionMark/tests/3d/resources/webgl.js:
+        * MotionMark/tests/3d/webgl.html:
+        * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html:
+        * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html:
+        * MotionMark/tests/bouncing-particles/bouncing-css-images.html:
+        * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html:
+        * MotionMark/tests/bouncing-particles/bouncing-svg-images.html:
+        * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html:
+        * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-particles.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
+        * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js:
+        * MotionMark/tests/dom/compositing-transforms.html:
+        * MotionMark/tests/dom/focus.html:
+        * MotionMark/tests/dom/leaves.html:
+        * MotionMark/tests/dom/particles.html:
+        * MotionMark/tests/dom/resources/compositing-transforms.js:
+        * MotionMark/tests/dom/resources/dom-particles.js:
+        * MotionMark/tests/dom/resources/focus.js:
+        * MotionMark/tests/dom/resources/leaves.js:
+        * MotionMark/tests/master/canvas-stage.html:
+        * MotionMark/tests/master/focus.html:
+        * MotionMark/tests/master/image-data.html:
+        * MotionMark/tests/master/leaves.html:
+        * MotionMark/tests/master/multiply.html:
+        * MotionMark/tests/master/resources/canvas-stage.js:
+        * MotionMark/tests/master/resources/canvas-tests.js:
+        * MotionMark/tests/master/resources/focus.js:
+        * MotionMark/tests/master/resources/image-data.js:
+        * MotionMark/tests/master/resources/leaves.js:
+        * MotionMark/tests/master/resources/multiply.js:
+        * MotionMark/tests/master/resources/particles.js:
+        * MotionMark/tests/master/resources/svg-particles.js:
+        * MotionMark/tests/master/resources/text.js:
+        * MotionMark/tests/master/svg-particles.html:
+        * MotionMark/tests/master/text.html:
+        * MotionMark/tests/resources/main.js:
+        * MotionMark/tests/resources/math.js:
+        * MotionMark/tests/resources/stage.css:
+        * MotionMark/tests/simple/resources/simple-canvas-paths.js:
+        * MotionMark/tests/simple/resources/simple-canvas.js:
+        * MotionMark/tests/simple/resources/tiled-canvas-image.js:
+        * MotionMark/tests/simple/simple-canvas-paths.html:
+        * MotionMark/tests/simple/tiled-canvas-image.html:
+        * MotionMark/tests/template/resources/template-canvas.js:
+        * MotionMark/tests/template/resources/template-css.js:
+        * MotionMark/tests/template/resources/template-svg.js:
+        * MotionMark/tests/template/template-canvas.html:
+        * MotionMark/tests/template/template-css.html:
+        * MotionMark/tests/template/template-svg.html:
+
+2017-11-01  Jon Lee  <jonlee@apple.com>
+
+        Add about page for MotionMark
+        https://bugs.webkit.org/show_bug.cgi?id=179152
+
+        Reviewed by Ryosuke Niwa.
+
+        * MotionMark/about.html: Added.
+        * MotionMark/index.html:
+        * MotionMark/resources/runner/motionmark.css:
+
+2017-10-30  Michael Saboff  <msaboff@apple.com>
+
+        Eliminate Basic compiler test from RexBench
+        https://bugs.webkit.org/show_bug.cgi?id=179025
+
+        Reviewed by Saam Barati.
+
+        * RexBench/Basic: Removed.
+        * RexBench/Basic/ast.js: Removed.
+        * RexBench/Basic/basic.js: Removed.
+        * RexBench/Basic/benchmark.js: Removed.
+        * RexBench/Basic/caseless_map.js: Removed.
+        * RexBench/Basic/lexer.js: Removed.
+        * RexBench/Basic/number.js: Removed.
+        * RexBench/Basic/parser.js: Removed.
+        * RexBench/Basic/random.js: Removed.
+        * RexBench/Basic/state.js: Removed.
+        * RexBench/Basic/stress-test.js: Removed.
+        * RexBench/Basic/util.js: Removed.
+        * RexBench/basic_benchmark.js: Removed.
+        * RexBench/about.html:
+        * RexBench/cli.js:
+        * RexBench/glue.js:
+        * RexBench/index.html:
+
+2017-10-25  Robin Morisset  <rmorisset@apple.com>
+
+        Support the TailBench9000 benchmark in run-jsc-benchmarks
+        https://bugs.webkit.org/show_bug.cgi?id=178451
+
+        Reviewed by Saam Barati.
+
+        The separation between the definition of the benchmarks (in merge-sort.js and n-body.js) and their loops (in *-run.js)
+        was causing trouble since the load of the js files only succeeded from the same directory. So I chose to merge them, following
+        the example of the other benchmarks.
+
+        * TailBench9000/merge-sort-run.js: Removed.
+        * TailBench9000/merge-sort.js:
+        * TailBench9000/n-body-run.js: Removed.
+        * TailBench9000/n-body.js:
+
+2017-10-19  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        -Wsign-compare triggered by MallocBench
+        https://bugs.webkit.org/show_bug.cgi?id=178544
+
+        Reviewed by Ryosuke Niwa.
+
+        * MallocBench/MallocBench/Interpreter.cpp:
+        (Interpreter::Interpreter):
+
+2017-10-07  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        Unreviewed, build fix for MallocBench in Linux 32bit
+        https://bugs.webkit.org/show_bug.cgi?id=177856
+
+        * MallocBench/MallocBench/Interpreter.cpp:
+        (Interpreter::Interpreter):
+        (Interpreter::readOps):
+        Suppress warnings in some GCC versions.
+
+        * MallocBench/MallocBench/big.cpp:
+        (benchmark_big):
+        * MallocBench/MallocBench/medium.cpp:
+        (benchmark_medium):
+        Build fix for Linux 32bit.
+
+        * MallocBench/MallocBench/message.cpp:
+        (benchmark_message_many):
+        Use more efficient WorkQueue allocation.
+
+2017-10-05  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        Unreviewed, use std::vector instead of variable length array
+        https://bugs.webkit.org/show_bug.cgi?id=177856
+
+        This is OK because originally this code uses dispatch queue, which
+        should have allocation inside it too.
+
+        * MallocBench/MallocBench/message.cpp:
+        (benchmark_message_many):
+
+2017-10-05  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [Linux] Port MallocBench
+        https://bugs.webkit.org/show_bug.cgi?id=177856
+
+        Reviewed by Filip Pizlo.
+
+        We would like to optimize locking in bmalloc in Linux by using futex APIs. So we should have
+        the way to ensure this actually improves / does not regress the performance.
+
+        This patch ports MallocBench to Linux to measure/ensure the effect of bmalloc patch in Linux.
+
+        While we replace the dispatch serial queue in message.cpp, we still use libdispatch in Benchmark.cpp
+        since we do not have priority mechanism in C++11 threading implementation.
+
+        We also extend run-malloc-benchmarks to accept cmake style layout of build product directory.
+        And we also support building MallocBench in CMake environment including CMake Mac ports.
+        Currently, we do not support Windows yet.
+
+        Based on the measurement, we can say the following observation. glibc's malloc performance is not
+        so bad. While bmalloc shows 3.8x (in geomean) performance improvement, bmalloc in Linux shows 2.0x
+        improvement. Since both numbers in bmalloc are similar, we can think that bmalloc's optimization is
+        actually working in Linux too. And even though glibc's malloc perofmrnace is not so bad, bmalloc
+        still offers performance improvement.
+
+        * CMakeLists.txt: Added.
+        * MallocBench/CMakeLists.txt: Added.
+        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
+        * MallocBench/MallocBench/Benchmark.cpp:
+        (Benchmark::Benchmark):
+        (Benchmark::runOnce):
+        (Benchmark::currentMemoryBytes): Deleted.
+        * MallocBench/MallocBench/Benchmark.h:
+        (Benchmark::Memory::Memory): Deleted.
+        (Benchmark::Memory::operator-): Deleted.
+        * MallocBench/MallocBench/CMakeLists.txt: Added.
+        * MallocBench/MallocBench/CPUCount.cpp:
+        (cpuCount):
+        * MallocBench/MallocBench/Interpreter.cpp:
+        (Interpreter::doMallocOp):
+        * MallocBench/MallocBench/Memory.cpp: Added.
+        (currentMemoryBytes):
+        * MallocBench/MallocBench/Memory.h: Copied from PerformanceTests/MallocBench/MallocBench/CPUCount.cpp.
+        (Memory::Memory):
+        (Memory::operator-):
+        * MallocBench/MallocBench/balloon.cpp:
+        (benchmark_balloon):
+        * MallocBench/MallocBench/mbmalloc.cpp:
+        * MallocBench/MallocBench/message.cpp:
+        (WorkQueue::WorkQueue):
+        (WorkQueue::~WorkQueue):
+        (WorkQueue::dispatchAsync):
+        (WorkQueue::dispatchSync):
+        (benchmark_message_one):
+        (benchmark_message_many):
+        * MallocBench/MallocBench/nimlang.cpp:
+        (benchmark_nimlang):
+        * MallocBench/MallocBench/stress.cpp:
+        (SizeStream::next):
+        * MallocBench/MallocBench/stress_aligned.cpp:
+        * MallocBench/run-malloc-benchmarks:
+
+2017-09-26  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: ensure all TodoMVC tests use the complete latest CSS
+        https://bugs.webkit.org/show_bug.cgi?id=177358
+
+        Reviewed by Ryosuke Niwa.
+
+        * Speedometer/resources/todomvc/architecture-examples/angular/dist/*: Updated per build instructions.
+        * Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css: Updated to latest version.
+        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/*: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/angularjs/package-lock.json: Added.
+        * Speedometer/resources/todomvc/architecture-examples/angularjs/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.css: Manually updated to latest TodoMVC CSS, except with IDs instead of classes. (Build steps unknown.)
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/application.hbs: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-list.hbs: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/dist/*: Updated per build instructions.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/vendor/index.css: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/*: Updated TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/inferno/package.json: Updated TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/jquery/index.html: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/*: Updated TodoMVC CSS.
+        * Speedometer/resources/todomvc/architecture-examples/jquery/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/index.html: Updated to match new CSS classnames.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/*: Updated to latest version.
+        * Speedometer/resources/todomvc/dependency-examples/flight/flight/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-app-css/index.css: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.js: Updated to latest version.
+        * Speedometer/resources/todomvc/functional-prog-examples/elm/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/*: Updated per build instructions.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package-lock.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/index.css: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/readme.md: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/*: Updated to latest version.
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/package.json: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-app-css/index.css: Updated to latest TodoMVC CSS.
+        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/*: Updated to latest version.
+        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/package.json: Updated to latest TodoMVC CSS.
+
+2017-09-25  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: Add missing build scripts for Vue.js example
+        https://bugs.webkit.org/show_bug.cgi?id=177359
+
+        Reviewed by Ryosuke Niwa.
+
+        This directory contains the build scripts needed to update `dist/*`. It had not been checked in because previously, all `build` directories were ignored by `.gitignore`. This directory is generated as part of `npm install -g vue-cli && vue init webpack some-project-name`.
+
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/build.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/check-versions.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/dev-client.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/dev-server.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/utils.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/vue-loader.conf.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.base.conf.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.dev.conf.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.prod.conf.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.test.conf.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/*: Updated per build instructions.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package-lock.json: Added build dependencies per vue-cli.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package.json: Added build dependencies per vue-cli.
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/todo.css: Updated CSS to the latest version for #177358.
+
+2017-09-25  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: Fix typo
+        https://bugs.webkit.org/show_bug.cgi?id=177425
+
+        Reviewed by Ryosuke Niwa.
+
+        * Speedometer/InteractiveRunner.html: Fix typo: “Arithemtic Mean” → “Arithmetic Mean”.
+
+2017-09-10  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: Reduce duplication in react-redux test
+        https://bugs.webkit.org/show_bug.cgi?id=176227
+
+        Reviewed by Ryosuke Niwa.
+
+        Updating react-scripts to a modern version avoids an issue where the generated bundle included the same `Object.assign`
+        polyfill multiple times.
+
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/*: Update dist per build instructions.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/package-lock.json: Update dependencies.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/package.json: Update dependencies.
+
+2017-09-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        Optimize the call to browserPrefix() in MotionMark
+        https://bugs.webkit.org/show_bug.cgi?id=176489
+
+        Reviewed by Jon Lee.
+
+        This function is expensive and it does not change for the browser. No need
+        to recalculate it every time it is called; just cache the returned value.
+
+        * MotionMark/resources/extensions.js:
+        (Utilities.browserPrefix):
+
+2017-08-19  Filip Pizlo  <fpizlo@apple.com>
+
+        We should have more tests of tail calls
+        https://bugs.webkit.org/show_bug.cgi?id=175754
+
+        Reviewed by Sam Weinig.
+        
+        This introduces a new test suite called TailBench9000, which will have benchmarks written in
+        JavaScript that avoid all looping except by tail call. As a warmup, I wrote a mergesort
+        benchmark and I proted n-body to use tail calls instead of for loops.
+
+        * TailBench9000: Added.
+        * TailBench9000/merge-sort-run.js: Added.
+        * TailBench9000/merge-sort.js: Added.
+        (TEST_mergeSort.createRNG):
+        (TEST_mergeSort.):
+        (TEST_mergeSort.merge):
+        (TEST_mergeSort.mergeSorted):
+        (TEST_mergeSort.checkSorted.check):
+        (TEST_mergeSort.checkSorted):
+        (TEST_mergeSort.add):
+        (TEST_mergeSort.build):
+        (TEST_mergeSort.compare):
+        (TEST_mergeSort.checkSpectrum):
+        (TEST_mergeSort.buildArray):
+        (TEST_mergeSort):
+        * TailBench9000/n-body-run.js: Added.
+        * TailBench9000/n-body.js: Added.
+        (TEST_nBody.Body):
+        (TEST_nBody.Body.prototype.offsetMomentum):
+        (TEST_nBody.Jupiter):
+        (TEST_nBody.Saturn):
+        (TEST_nBody.Uranus):
+        (TEST_nBody.Neptune):
+        (TEST_nBody.Sun):
+        (TEST_nBody.NBodySystem):
+        (TEST_nBody.NBodySystem.prototype.advance):
+        (TEST_nBody.NBodySystem.prototype.energy):
+        (TEST_nBody):
+
+2017-09-05  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Compute the final score using geometric mean in Speedometer 2.0
+        https://bugs.webkit.org/show_bug.cgi?id=172968
+
+        Reviewed by Saam Barati.
+
+        Make Speedometer 2.0 use the geometric mean of the subtotal of each test suite instead of the total..
+
+        In Speedometer 1.0, we used the total time to compute the final score because we wanted to make
+        the slowest framework and library faster. The fastest suite (FlightJS) still accounted for ~6% and
+        the slowest case (React) accounted for ~25% so we felt the total time, or the arithmetic mean with
+        a constant factor, was a good metric to track.
+
+        In the latest version of Speedometer 2.0, however, the fastest suite (Preact) runs in ~55ms whereas
+        the slowest suite (Inferno) takes 1.5s on Safari. Since the total time is 6.5s, Preact's suite only
+        accounts for ~0.8% of the total score while Inferno's suite accounts for ~23% of the total score.
+        Since the goal of Speedometer is to approximate different kinds of DOM API use patterns on the Web,
+        we want each framework & library to have some measurement impact on the overall benchmark score.
+
+        Furthermore, after r221205, we're testing both debug build of Ember.js as well as release build.
+        Since debug build is 4x slower, using the total time or the arithmetic mean thereof will effectively
+        give 4x as much weight to debug build of Ember.js relative to release build of Ember.js. Given only
+        ~5% of websites that deploy Ember.js use debug build, this weighting is clearly not right.
+
+        This patch, therefore, replaces the arithmetic mean by the geometric mean to compute the final score.
+        It also moves the code to compute the final score to BenchmarkRunner to be shared between main.js
+        and InteractiveRunner.html.
+
+        * Speedometer/InteractiveRunner.html:
+        (.didRunSuites): Show geometric mean, arithmetic mean, total, as well as the score for completeness
+        since this is a debugging page for developers.
+        * Speedometer/resources/benchmark-runner.js:
+        (BenchmarkRunner.prototype.step): Added mean, geomean, and score as measuredValues' properties.
+        (BenchmarkRunner.prototype._runTestAndRecordResults): Removed the dead code.
+        (BenchmarkRunner.prototype._finalize): Compute and add total, arithmetic mean (just mean in the code),
+        and geometric mean (geomean) to measuredValues.
+        * Speedometer/resources/main.js:
+        (window.benchmarkClient): Replaced testsCount by stepsCount and _timeValues by _measuredValuesList.
+        (window.benchmarkClient.willRunTest):
+        (window.benchmarkClient.didRunTest):
+        (window.benchmarkClient.didRunSuites): Store measuredValues object instead of just the total time.
+        (window.benchmarkClient.didFinishLastIteration):
+        (window.benchmarkClient._computeResults):
+        (window.benchmarkClient._computeResults.valueForUnit): Renamed from totalTimeInDisplayUnit. Now simply
+        retrieves the values computed by BenchmarkRunner's_finalize.
+        (startBenchmark):
+        (computeScore): Deleted.
+
+2017-09-05  JF Bastien  <jfbastien@apple.com>
+
+        StitchMarker build fix
+
+        Unreviewed
+
+        * StitchMarker/ck.sh: was missing `cd ck`
+
+2017-09-05  Shiyu Zhang  <shiyu.zhang@intel.com>
+
+        Speedometer 2.0: Add dummy node to notify app is ready for Backbone suite
+        https://bugs.webkit.org/show_bug.cgi?id=176142
+
+        Reviewed by Ryosuke Niwa.
+
+        Create a dummy node to notify that app is ready for Backbone suite. It prevents Speedometer injecting items before app.js is loaded.
+
+        * Speedometer/resources/tests.js:
+        (Suites.push.prepare):
+        * Speedometer/resources/todomvc/architecture-examples/backbone/js/app.js:
+
+2017-08-30  Shiyu Zhang  <shiyu.zhang@intel.com>
+
+        Speedometer 2.0: jQuery test fails occasionally
+        https://bugs.webkit.org/show_bug.cgi?id=176017
+
+        Reviewed by Ryosuke Niwa.
+
+        Create a dummy node to notify that app is ready for jQuery suite. It prevents Speedometer injecting items before app.js is loaded.
+
+        * Speedometer/resources/tests.js:
+        (Suites.push.prepare):
+        * Speedometer/resources/todomvc/architecture-examples/jquery/js/app.js:
+        (jQuery.App.init):
+
+2017-08-25  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: Restructure Ember example
+        https://bugs.webkit.org/show_bug.cgi?id=175926
+
+        Reviewed by Ryosuke Niwa.
+
+        This patch removes an unused stylesheet from the output, and gets rid of the unneeded intermediate `source` folder.
+
+        * Speedometer/resources/tests.js: Update path to Ember benchmark.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/*: Moved to `../`.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/app/index.html: Removed stylesheet reference.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/app/styles/.gitkeep: Added.
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/dist/*: Regenerated per build instructions.
+
+2017-08-24  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer 2.0: Duplicate the current EmberJS test as EmberJS-Debug test
+        https://bugs.webkit.org/show_bug.cgi?id=175956
+
+        Reviewed by Saam Barati.
+
+        Made the copy of Ember.js directory at r216946 as emberjs-debug, and added a new test suite "EmberJS-Debug-TodoMVC". 
+
+        * Speedometer/resources/tests.js:
+        (Suites.push.prepare):
+        * Speedometer/resources/todomvc/architecture-examples/emberjs-debug: Copied from emberjs@r216946.
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer: Add missing stylesheet to Angular example
+        ​https://bugs.webkit.org/show_bug.cgi?id=175820
+
+        Fix r221042. It was supposed to add an empty file but git-svn failed to do so.
+
+        * Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css: Added.
+
+2017-08-23  Mathias Bynens  <mathias@qiwi.be>
+
+        Speedometer: Update to modern Preact version
+        https://bugs.webkit.org/show_bug.cgi?id=175763
+
+        Reviewed by Ryosuke Niwa.
+
+        * Speedometer/resources/todomvc/architecture-examples/preact/README.md: Documented build steps.
+        * Speedometer/resources/todomvc/architecture-examples/preact/dist/*: Renamed from build to dist so it can be checked in, and updated per build steps.
+        * Speedometer/resources/todomvc/architecture-examples/preact/package-lock.json: Locked dependencies to ensure builds are deterministic.
+        * Speedometer/resources/todomvc/architecture-examples/preact/package.json: Updated build commands and dependencies.
+        * Speedometer/resources/todomvc/architecture-examples/preact/rollup.config.js: Updated configuration.
+        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/footer.js: Updated to modern Preact version.
+        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/index.js: Updated to modern Preact version.
+        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/util.js: Updated to modern Preact version.
+        * Speedometer/resources/todomvc/architecture-examples/preact/src/index.html: Made title consistent.
+        * Speedometer/resources/todomvc/architecture-examples/preact/webpack.config.babel.js: Updated configuration.
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer 2.0: Add the capability to run a specific suite
+        https://bugs.webkit.org/show_bug.cgi?id=175908
+
+        Address Joe's review comments.
+
+        * Speedometer/resources/main.js:
+        (startBenchmark):
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer 2.0: Add the capability to run a specific suite
+        https://bugs.webkit.org/show_bug.cgi?id=175908
+
+        Reviewed by Saam Barati.
+
+        Added ?suite=X query parameter to specify a specific suite (e.g. React-TodoMVC) to run.
+
+        * Speedometer/resources/main.js:
+        (enableOneSuite): Added.
+        (startBenchmark): Return true if the benchmark actually had started running.
+        (startTest): Don't transition to the "running" state if the benchmark failed to start (e.g. no tests to run).
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer 2.0: Async time is not always capturing layout time
+        https://bugs.webkit.org/show_bug.cgi?id=175871
+
+        Reviewed by Simon Fraser.
+
+        Speedometer harness was designed to capture the time browser engine spends relayouting and repainting the content
+        after DOM mutations this in its async time measurement, which is the time between each test case's code had finished
+        running and when a newly scheduled 0s timer is fired immediately afterwards.
+
+        It turns out that modern web browsers defer this reflow and repaint work until the next animation frame is requested.
+        This results in Speedometer harness measuring reflow and repaint cost only sometimes depending on when each test case
+        had finished running relative to the next frame request.
+
+        While such a behavior makes sense and might be desirable for a modern browser engine, we would like to capture it in
+        the async time for the purpose of Speedometer. Unfortunately, there isn't an interoperable API for browsers to report
+        the total layout and repaint time, and relying on 16ms-granularity requestAnimationFrame is too coarse for Speedometer.
+
+        This patch works around these limitations by manually forcing the layout in async time measurement by calling
+        getBoundingClientRect() in iframe's document. Since the height of the document depends on the number of todo items,
+        this should cause browser engines to do most if not all of the work needed to reflow the document at least for now.
+
+        Note that even new async time doesn't always capture painting time but there isn't a good cross-browser mechanism
+        to measure paint time in the granurality we need for Speedometer at the moment anyway. (Should such a mechanism exist,
+        that could be a huge timing attack surface so it's probably best that we don't have one.)
+
+        * Speedometer/resources/benchmark-runner.js:
+        (BenchmarkRunner.prototype._runTest):
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Speedometer: Make React/Redux item order consistent
+        https://bugs.webkit.org/show_bug.cgi?id=175818
+
+        Reviewed by Joseph Pecoraro.
+
+        Based on the patch made by Mathias Bynens. Re-generated project files.
+
+        Also tweaked the instruction in package.json so that newly generated files in build/* replace dist/* instead of
+        being moved under dist/build/ by rm -rf'ing dist directory first.
+
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/index.html:
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.43a0948c.js: Removed.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.43a0948c.js.map: Removed.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.69cd9655.js: Added.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.69cd9655.js.map: Added.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/package.json:
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js: Forced new items to be appended rather than prepended.
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/yarn.lock: Removed unnecessary file.
+
 2017-08-23  Mathias Bynens  <mathias@qiwi.be>
 
         Speedometer: Update to modern React version