2017-12-11  Tim Horton  <timothy_horton@apple.com>

        Stop using deprecated target conditional for simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=180662
        <rdar://problem/35136156>

        Reviewed by Simon Fraser.

        * StitchMarker/wtf/Platform.h:
        * StitchMarker/wtf/dependencies/bmalloc/BPlatform.h:

2017-12-11  Antti Koivisto  <antti@apple.com>

        StyleBench improvements
        https://bugs.webkit.org/show_bug.cgi?id=180646

        Reviewed by Geoffrey Garen.

        - Remove :empty rule from global stylesheet. It caused all tests to hit positional pseudo-class code paths.
        - Instead use min-width to create easy flexible layout. Use it for ::before/::after too.
        - Add :empty to positional pseudo-class test.
        - Include some id attributes and id selectors
        - Chance to have more than 1 classes per compound selector
        - Change distribution of elements and classes to be non-uniform
        - Other bug fixes

        * StyleBench/resources/style-bench.js:
        (Random.prototype.numberSquareWeightedToLow):
        (Random):
        (defaultConfiguration):
        (prototype.randomElementName):
        (prototype.randomId):
        (prototype.makeCompoundSelector):
        (prototype.makeSelector):
        (prototype.makeElement):

2017-12-08  Konstantin Tokarev  <annulen@yandex.ru>

        [python] Replace print operator with print() function for python3 compatibility
        https://bugs.webkit.org/show_bug.cgi?id=180592

        Reviewed by Michael Catanzaro.

        * JSBench/harness.py:

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
        https://bugs.webkit.org/show_bug.cgi?id=175715

        Reviewed by Ryosuke Niwa.

        This patch pins React and react-dom to v15.5.4 (released in May 2017).

        * Speedometer/resources/todomvc/architecture-examples/react/README.md: Documented build steps.
        * Speedometer/resources/todomvc/architecture-examples/react/index.html: Made title consistent.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/*: Remove unneeded files and update per build instructions.
        * Speedometer/resources/todomvc/architecture-examples/react/npm-shrinkwrap.json: Removed in favor of package-lock.json.
        * Speedometer/resources/todomvc/architecture-examples/react/package-lock.json: Pinned dependencies to make build deterministic.
        * Speedometer/resources/todomvc/architecture-examples/react/package.json: Update dependencies.
        * Speedometer/resources/todomvc/architecture-examples/react/yarn.lock: Removed in favor of package-lock.json.

2017-08-22  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(R220043): Speedometer 2.0: Fix vanilla JS examples
        https://bugs.webkit.org/show_bug.cgi?id=175815

        Reviewed by Saam Barati.

        Both vanilla ES2015 and Babel + WebPack test cases were failing to mark Todo items as completed since they were relying on
        `new Date().getTime()` to generate an unique ID. That's not going to work if mulitple todo items are added within 1ms.

        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js.map: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html:
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js:

2017-08-22  JF Bastien  <jfbastien@apple.com>

        StitchMarker: threading, locking, and atomics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=175847

        Rubber-stamped by Filip Pizlo.

        This patch imports concurrency and parallelism benchmarks from
        four independent projects: Facebook's folly, Olivier Giroux's
        locking benchmark aimed at C++20 standardization, Samy Al Bahra's
        ck concurrency primitives, and WebKit's WTF lock benchmarks.
        There's a fifth benchmark in the waiting, Cristian Mattarei's FMJS
        litmus tests, which currently only targets JavaScript but will
        eventually work on straight C code.

        The benchmark currently execute on native platforms only, but
        could be compiled to WebAssembly when the toolchains mature. They
        should stress interesting aspects of atomics, locking, and
        threading. The build works through simple shell scripts, and there
        currently is no "runner" because each benchmark is a standalone
        executable. This setup is especially well suited for WebAssembly.

        * StitchMarker/README.md: Added. See this for more details.
        * StitchMarker/ck.sh: Added. Build script.
        * StitchMarker/ck/LICENSE: Added.
        * StitchMarker/ck/Makefile: Added.
        * StitchMarker/ck/Makefile.in: Added.
        * StitchMarker/ck/README: Added.
        * StitchMarker/ck/configure: Added.
        * StitchMarker/ck/doc/Makefile: Added.
        * StitchMarker/ck/include/ck_array.h: Added.
        (ck_array_length):
        (ck_array_buffer):
        (ck_array_initialized):
        * StitchMarker/ck/include/ck_backoff.h: Added.
        (ck_backoff_eb):
        * StitchMarker/ck/include/ck_barrier.h: Added.
        * StitchMarker/ck/include/ck_bitmap.h: Added.
        (ck_bitmap_base):
        (ck_bitmap_size):
        (ck_bitmap_bits):
        (ck_bitmap_buffer):
        (ck_bitmap_set):
        (ck_bitmap_bts):
        (ck_bitmap_reset):
        (ck_bitmap_test):
        (ck_bitmap_union):
        (ck_bitmap_intersection):
        (ck_bitmap_intersection_negate):
        (ck_bitmap_clear):
        (ck_bitmap_empty):
        (ck_bitmap_full):
        (ck_bitmap_count):
        (ck_bitmap_count_intersect):
        (ck_bitmap_init):
        (ck_bitmap_iterator_init):
        (ck_bitmap_next):
        * StitchMarker/ck/include/ck_brlock.h: Added.
        (ck_brlock_init):
        (ck_brlock_write_lock):
        (ck_brlock_write_unlock):
        (ck_brlock_write_trylock):
        (ck_brlock_read_register):
        (ck_brlock_read_unregister):
        (ck_brlock_read_lock):
        (ck_brlock_read_trylock):
        (ck_brlock_read_unlock):
        * StitchMarker/ck/include/ck_bytelock.h: Added.
        (ck_bytelock_init):
        (ck_bytelock_write_lock):
        (ck_bytelock_write_unlock):
        (ck_bytelock_read_lock):
        (ck_bytelock_read_unlock):
        * StitchMarker/ck/include/ck_cc.h: Added.
        (ck_cc_ffs):
        (ck_cc_clz):
        (ck_cc_ctz):
        (ck_cc_popcount):
        * StitchMarker/ck/include/ck_cohort.h: Added.
        * StitchMarker/ck/include/ck_elide.h: Added.
        (ck_elide_stat_init):
        (_ck_elide_fallback):
        * StitchMarker/ck/include/ck_epoch.h: Added.
        (ck_epoch_record_ct):
        (ck_epoch_begin):
        (ck_epoch_end):
        (ck_epoch_call):
        (ck_epoch_call_strict):
        (ck_epoch_value):
        * StitchMarker/ck/include/ck_fifo.h: Added.
        (ck_fifo_spsc_enqueue_trylock):
        (ck_fifo_spsc_enqueue_lock):
        (ck_fifo_spsc_enqueue_unlock):
        (ck_fifo_spsc_dequeue_trylock):
        (ck_fifo_spsc_dequeue_lock):
        (ck_fifo_spsc_dequeue_unlock):
        (ck_fifo_spsc_init):
        (ck_fifo_spsc_deinit):
        (ck_fifo_spsc_enqueue):
        (ck_fifo_spsc_dequeue):
        (ck_fifo_spsc_recycle):
        (ck_fifo_spsc_isempty):
        (ck_fifo_mpmc_init):
        (ck_fifo_mpmc_deinit):
        (ck_fifo_mpmc_enqueue):
        (ck_fifo_mpmc_tryenqueue):
        (ck_fifo_mpmc_dequeue):
        (ck_fifo_mpmc_trydequeue):
        * StitchMarker/ck/include/ck_hp.h: Added.
        (ck_hp_set):
        (ck_hp_set_fence):
        (ck_hp_clear):
        * StitchMarker/ck/include/ck_hp_fifo.h: Added.
        (ck_hp_fifo_init):
        (ck_hp_fifo_deinit):
        (ck_hp_fifo_enqueue_mpmc):
        (ck_hp_fifo_tryenqueue_mpmc):
        (ck_hp_fifo_dequeue_mpmc):
        (ck_hp_fifo_trydequeue_mpmc):
        * StitchMarker/ck/include/ck_hp_stack.h: Added.
        (ck_hp_stack_push_mpmc):
        (ck_hp_stack_trypush_mpmc):
        (ck_hp_stack_pop_mpmc):
        (ck_hp_stack_trypop_mpmc):
        * StitchMarker/ck/include/ck_hs.h: Added.
        * StitchMarker/ck/include/ck_ht.h: Added.
        * StitchMarker/ck/include/ck_limits.h: Added.
        * StitchMarker/ck/include/ck_malloc.h: Added.
        * StitchMarker/ck/include/ck_md.h: Added.
        * StitchMarker/ck/include/ck_md.h.in: Added.
        * StitchMarker/ck/include/ck_pflock.h: Added.
        (ck_pflock_init):
        (ck_pflock_write_unlock):
        (ck_pflock_write_lock):
        (ck_pflock_read_unlock):
        (ck_pflock_read_lock):
        * StitchMarker/ck/include/ck_pr.h: Added.
        (ck_pr_rfo):
        * StitchMarker/ck/include/ck_queue.h: Added.
        * StitchMarker/ck/include/ck_rhs.h: Added.
        * StitchMarker/ck/include/ck_ring.h: Added.
        (ck_ring_size):
        (ck_ring_capacity):
        (ck_ring_init):
        (_ck_ring_enqueue_sp):
        (_ck_ring_enqueue_sp_size):
        (_ck_ring_dequeue_sc):
        (_ck_ring_enqueue_mp):
        (_ck_ring_enqueue_mp_size):
        (_ck_ring_trydequeue_mc):
        (_ck_ring_dequeue_mc):
        (ck_ring_enqueue_spsc_size):
        (ck_ring_enqueue_spsc):
        (ck_ring_dequeue_spsc):
        (ck_ring_enqueue_mpmc):
        (ck_ring_enqueue_mpmc_size):
        (ck_ring_trydequeue_mpmc):
        (ck_ring_dequeue_mpmc):
        (ck_ring_enqueue_spmc_size):
        (ck_ring_enqueue_spmc):
        (ck_ring_trydequeue_spmc):
        (ck_ring_dequeue_spmc):
        (ck_ring_enqueue_mpsc):
        (ck_ring_enqueue_mpsc_size):
        (ck_ring_dequeue_mpsc):
        * StitchMarker/ck/include/ck_rwcohort.h: Added.
        * StitchMarker/ck/include/ck_rwlock.h: Added.
        (ck_rwlock_init):
        (ck_rwlock_write_unlock):
        (ck_rwlock_locked_writer):
        (ck_rwlock_write_downgrade):
        (ck_rwlock_locked):
        (ck_rwlock_write_trylock):
        (ck_rwlock_write_lock):
        (ck_rwlock_read_trylock):
        (ck_rwlock_read_lock):
        (ck_rwlock_locked_reader):
        (ck_rwlock_read_unlock):
        (ck_rwlock_recursive_write_lock):
        (ck_rwlock_recursive_write_trylock):
        (ck_rwlock_recursive_write_unlock):
        (ck_rwlock_recursive_read_lock):
        (ck_rwlock_recursive_read_trylock):
        (ck_rwlock_recursive_read_unlock):
        * StitchMarker/ck/include/ck_sequence.h: Added.
        (ck_sequence_init):
        (ck_sequence_read_begin):
        (ck_sequence_read_retry):
        (ck_sequence_write_begin):
        (ck_sequence_write_end):
        * StitchMarker/ck/include/ck_spinlock.h: Added.
        * StitchMarker/ck/include/ck_stack.h: Added.
        (ck_stack_push_upmc):
        (ck_stack_trypush_upmc):
        (ck_stack_pop_upmc):
        (ck_stack_trypop_upmc):
        (ck_stack_batch_pop_upmc):
        (ck_stack_push_mpmc):
        (ck_stack_trypush_mpmc):
        (ck_stack_pop_mpmc):
        (ck_stack_trypop_mpmc):
        (ck_stack_batch_pop_mpmc):
        (ck_stack_push_mpnc):
        (ck_stack_push_spnc):
        (ck_stack_pop_npsc):
        (ck_stack_batch_pop_npsc):
        (ck_stack_init):
        * StitchMarker/ck/include/ck_stdbool.h: Added.
        * StitchMarker/ck/include/ck_stddef.h: Added.
        * StitchMarker/ck/include/ck_stdint.h: Added.
        * StitchMarker/ck/include/ck_stdlib.h: Added.
        * StitchMarker/ck/include/ck_string.h: Added.
        * StitchMarker/ck/include/ck_swlock.h: Added.
        (ck_swlock_init):
        (ck_swlock_write_unlock):
        (ck_swlock_locked_writer):
        (ck_swlock_write_downgrade):
        (ck_swlock_locked):
        (ck_swlock_write_trylock):
        (ck_swlock_write_lock):
        (ck_swlock_write_latch):
        (ck_swlock_write_unlatch):
        (ck_swlock_read_trylock):
        (ck_swlock_read_lock):
        (ck_swlock_locked_reader):
        (ck_swlock_read_unlock):
        * StitchMarker/ck/include/ck_tflock.h: Added.
        (ck_tflock_ticket_fca_32):
        (ck_tflock_ticket_init):
        (ck_tflock_ticket_write_lock):
        (ck_tflock_ticket_write_unlock):
        (ck_tflock_ticket_read_lock):
        (ck_tflock_ticket_read_unlock):
        * StitchMarker/ck/include/gcc/aarch64/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/aarch64/ck_pr.h: Added.
        (ck_pr_stall):
        * StitchMarker/ck/include/gcc/aarch64/ck_pr_llsc.h: Added.
        (ck_pr_cas_64_2_value):
        (ck_pr_cas_ptr_2_value):
        (ck_pr_cas_64_2):
        (ck_pr_cas_ptr_2):
        (ck_pr_faa_ptr):
        (ck_pr_faa_64):
        * StitchMarker/ck/include/gcc/aarch64/ck_pr_lse.h: Added.
        (ck_pr_cas_64_2_value):
        (ck_pr_cas_ptr_2_value):
        (ck_pr_cas_64_2):
        (ck_pr_cas_ptr_2):
        (ck_pr_faa_ptr):
        (ck_pr_faa_64):
        * StitchMarker/ck/include/gcc/arm/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/arm/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_cas_ptr_2_value):
        (ck_pr_cas_ptr_2):
        (ck_pr_cas_ptr_value):
        (ck_pr_cas_ptr):
        (ck_pr_faa_ptr):
        * StitchMarker/ck/include/gcc/ck_cc.h: Added.
        (ck_cc_ffs):
        (ck_cc_clz):
        (ck_cc_ctz):
        (ck_cc_popcount):
        * StitchMarker/ck/include/gcc/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/ck_pr.h: Added.
        (ck_pr_barrier):
        (ck_pr_md_load_ptr):
        (ck_pr_md_store_ptr):
        (ck_pr_stall):
        (ck_pr_cas_ptr_value):
        * StitchMarker/ck/include/gcc/ppc/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/ppc/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_faa_ptr):
        * StitchMarker/ck/include/gcc/ppc64/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/ppc64/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_cas_64_value):
        (ck_pr_cas_ptr_value):
        (ck_pr_cas_64):
        (ck_pr_cas_ptr):
        (ck_pr_faa_ptr):
        * StitchMarker/ck/include/gcc/s390x/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/s390x/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_md_load_double):
        (ck_pr_md_store_double):
        (ck_pr_cas_64_value):
        (ck_pr_cas_ptr_value):
        (ck_pr_cas_64):
        (ck_pr_cas_ptr):
        (ck_pr_fas_ptr):
        (ck_pr_fas_double):
        (ck_pr_faa_ptr):
        * StitchMarker/ck/include/gcc/sparcv9/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/sparcv9/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_cas_64_value):
        (ck_pr_cas_64):
        (ck_pr_cas_ptr):
        (ck_pr_cas_ptr_value):
        * StitchMarker/ck/include/gcc/x86/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/x86/ck_pr.h: Added.
        (ck_pr_stall):
        * StitchMarker/ck/include/gcc/x86_64/ck_f_pr.h: Added.
        * StitchMarker/ck/include/gcc/x86_64/ck_pr.h: Added.
        (ck_pr_stall):
        (ck_pr_rfo):
        (ck_pr_load_64_2):
        (ck_pr_load_ptr_2):
        (ck_pr_cas_64_2):
        (ck_pr_cas_ptr_2):
        (ck_pr_cas_64_2_value):
        (ck_pr_cas_ptr_2_value):
        * StitchMarker/ck/include/gcc/x86_64/ck_pr_rtm.h: Added.
        (ck_pr_rtm_begin):
        (ck_pr_rtm_end):
        (ck_pr_rtm_abort):
        (ck_pr_rtm_test):
        * StitchMarker/ck/include/spinlock/anderson.h: Added.
        (ck_spinlock_anderson_init):
        (ck_spinlock_anderson_locked):
        (ck_spinlock_anderson_lock):
        (ck_spinlock_anderson_unlock):
        * StitchMarker/ck/include/spinlock/cas.h: Added.
        (ck_spinlock_cas_init):
        (ck_spinlock_cas_trylock):
        (ck_spinlock_cas_locked):
        (ck_spinlock_cas_lock):
        (ck_spinlock_cas_lock_eb):
        (ck_spinlock_cas_unlock):
        * StitchMarker/ck/include/spinlock/clh.h: Added.
        (ck_spinlock_clh_init):
        (ck_spinlock_clh_locked):
        (ck_spinlock_clh_lock):
        (ck_spinlock_clh_unlock):
        * StitchMarker/ck/include/spinlock/dec.h: Added.
        (ck_spinlock_dec_init):
        (ck_spinlock_dec_trylock):
        (ck_spinlock_dec_locked):
        (ck_spinlock_dec_lock):
        (ck_spinlock_dec_lock_eb):
        (ck_spinlock_dec_unlock):
        * StitchMarker/ck/include/spinlock/fas.h: Added.
        (ck_spinlock_fas_init):
        (ck_spinlock_fas_trylock):
        (ck_spinlock_fas_locked):
        (ck_spinlock_fas_lock):
        (ck_spinlock_fas_lock_eb):
        (ck_spinlock_fas_unlock):
        * StitchMarker/ck/include/spinlock/hclh.h: Added.
        (ck_spinlock_hclh_init):
        (ck_spinlock_hclh_locked):
        (ck_spinlock_hclh_lock):
        (ck_spinlock_hclh_unlock):
        * StitchMarker/ck/include/spinlock/mcs.h: Added.
        (ck_spinlock_mcs_init):
        (ck_spinlock_mcs_trylock):
        (ck_spinlock_mcs_locked):
        (ck_spinlock_mcs_lock):
        (ck_spinlock_mcs_unlock):
        * StitchMarker/ck/include/spinlock/ticket.h: Added.
        (ck_spinlock_ticket_init):
        (ck_spinlock_ticket_locked):
        (ck_spinlock_ticket_lock):
        (ck_spinlock_ticket_lock_pb):
        (ck_spinlock_ticket_trylock):
        (ck_spinlock_ticket_unlock):
        * StitchMarker/ck/regressions/Makefile: Added.
        * StitchMarker/ck/regressions/Makefile.unsupported: Added.
        * StitchMarker/ck/regressions/ck_array/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_array/validate/serial.c: Added.
        (my_free):
        (my_malloc):
        (my_realloc):
        (main):
        * StitchMarker/ck/regressions/ck_array/validate/serial.dSYM/Contents/Info.plist: Added.
        * StitchMarker/ck/regressions/ck_array/validate/serial.dSYM/Contents/Resources/DWARF/serial: Added.
        * StitchMarker/ck/regressions/ck_backoff/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_backoff/validate/validate.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_barrier/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_barrier/benchmark/throughput.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_barrier/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_barrier/validate/barrier_centralized.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_barrier/validate/barrier_combining.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_barrier/validate/barrier_dissemination.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_barrier/validate/barrier_mcs.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_barrier/validate/barrier_tournament.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_bitmap/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_bitmap/validate/serial.c: Added.
        (check_iteration):
        (test):
        (test_init):
        (random_init):
        (copy):
        (test_counts):
        (random_test):
        (main):
        * StitchMarker/ck/regressions/ck_brlock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_brlock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_brlock/benchmark/throughput.c: Added.
        (thread_brlock):
        (main):
        * StitchMarker/ck/regressions/ck_brlock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_brlock/validate/validate.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_bytelock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_bytelock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_bytelock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_bytelock/validate/validate.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_cohort/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_cohort/benchmark/ck_cohort.c: Added.
        * StitchMarker/ck/regressions/ck_cohort/benchmark/throughput.c: Added.
        (ck_spinlock_fas_lock_with_context):
        (ck_spinlock_fas_unlock_with_context):
        (ck_spinlock_fas_locked_with_context):
        (fairness):
        (main):
        * StitchMarker/ck/regressions/ck_cohort/ck_cohort.h: Added.
        * StitchMarker/ck/regressions/ck_cohort/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_cohort/validate/validate.c: Added.
        (ck_spinlock_fas_lock_with_context):
        (ck_spinlock_fas_unlock_with_context):
        (ck_spinlock_fas_locked_with_context):
        (ck_spinlock_fas_trylock_with_context):
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_epoch_call.c: Added.
        (cb):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_epoch_poll.c: Added.
        (destructor):
        (read_thread):
        (write_thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_epoch_section.c: Added.
        (setup_test):
        (teardown_test):
        (cleanup):
        (test_simple_read_section):
        (test_nested_read_section):
        (barrier_work):
        (reader_work):
        (obj_destroy):
        (test_single_reader_with_barrier_thread):
        (test_multiple_readers_with_barrier_thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_epoch_section_2.c: Added.
        (read_thread):
        (write_thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_epoch_synchronize.c: Added.
        (destructor):
        (read_thread):
        (write_thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/ck_stack.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_epoch/validate/torture.c: Added.
        (read_thread):
        (write_thread):
        (main):
        * StitchMarker/ck/regressions/ck_fifo/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_fifo/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_fifo/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_fifo/validate/ck_fifo_mpmc.c: Added.
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_fifo/validate/ck_fifo_mpmc_iterator.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_fifo/validate/ck_fifo_spsc.c: Added.
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_fifo/validate/ck_fifo_spsc_iterator.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_hp/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_hp/benchmark/fifo_latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_hp/benchmark/stack_latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_hp/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_hp/validate/ck_hp_fifo.c: Added.
        (test):
        (destructor):
        (main):
        * StitchMarker/ck/regressions/ck_hp/validate/ck_hp_fifo_donner.c: Added.
        (destructor):
        (queue_50_50):
        (main):
        * StitchMarker/ck/regressions/ck_hp/validate/ck_hp_stack.c: Added.
        (destructor):
        (main):
        * StitchMarker/ck/regressions/ck_hp/validate/nbds_haz_test.c: Added.
        (stack_pop_mpmc):
        (thread):
        (destructor):
        (main):
        * StitchMarker/ck/regressions/ck_hp/validate/serial.c: Added.
        (destructor):
        (main):
        * StitchMarker/ck/regressions/ck_hs/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_hs/benchmark/apply.c: Added.
        (hs_malloc):
        (hs_free):
        (hs_compare):
        (set_destroy):
        (set_init):
        (set_count):
        (set_reset):
        (test_apply):
        (run_test):
        (main):
        * StitchMarker/ck/regressions/ck_hs/benchmark/parallel_bytestring.c: Added.
        (alarm_handler):
        (hs_hash):
        (hs_compare):
        (hs_destroy):
        (hs_malloc):
        (hs_free):
        (set_remove):
        (set_replace):
        (set_swap):
        (set_get):
        (set_insert):
        (set_count):
        (set_reset):
        (reader):
        (acc):
        (main):
        * StitchMarker/ck/regressions/ck_hs/benchmark/serial.c: Added.
        (hs_malloc):
        (hs_free):
        (hs_compare):
        (set_destroy):
        (set_init):
        (set_remove):
        (set_swap):
        (set_replace):
        (set_get):
        (set_insert):
        (set_insert_unique):
        (set_count):
        (set_reset):
        (set_gc):
        (set_rebuild):
        (keys_shuffle):
        (run_test):
        (main):
        * StitchMarker/ck/regressions/ck_hs/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_hs/validate/serial.c: Added.
        (hs_malloc):
        (hs_free):
        (hs_compare):
        (test_ip):
        (test_negative):
        (test_unique):
        (test_remove):
        (run_test):
        (main):
        * StitchMarker/ck/regressions/ck_ht/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_ht/benchmark/parallel_bytestring.c: Added.
        (alarm_handler):
        (ht_destroy):
        (ht_malloc):
        (ht_free):
        (table_remove):
        (table_replace):
        (table_get):
        (table_insert):
        (table_count):
        (table_reset):
        (reader):
        (main):
        * StitchMarker/ck/regressions/ck_ht/benchmark/parallel_direct.c: Added.
        (alarm_handler):
        (ht_destroy):
        (ht_malloc):
        (ht_free):
        (table_init):
        (table_remove):
        (table_replace):
        (table_get):
        (table_insert):
        (table_count):
        (table_reset):
        (ht_reader):
        (main):
        * StitchMarker/ck/regressions/ck_ht/benchmark/serial.c: Added.
        (ht_malloc):
        (ht_free):
        (table_remove):
        (table_replace):
        (table_get):
        (table_insert):
        (table_count):
        (table_gc):
        (table_reset):
        (keys_shuffle):
        (main):
        * StitchMarker/ck/regressions/ck_ht/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_ht/validate/serial.c: Added.
        (ht_malloc):
        (ht_free):
        (ht_hash_wrapper):
        * StitchMarker/ck/regressions/ck_pflock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_pflock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pflock/benchmark/throughput.c: Added.
        (thread_pflock):
        (main):
        * StitchMarker/ck/regressions/ck_pflock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_pflock/validate/validate.c: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_pr/benchmark/benchmark.h: Added.
        (fairness):
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_add_64.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_cas_64.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_cas_64_2.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_faa_64.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_fas_64.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/ck_pr_neg_64.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/benchmark/fp.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_add.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_and.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_bin.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_btc.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_btr.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_bts.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_btx.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_cas.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_dec.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_faa.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_fas.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_fax.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_inc.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_load.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_n.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_or.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_store.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_sub.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_unary.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_pr/validate/ck_pr_xor.c: Added.
        (rg_width):
        (main):
        * StitchMarker/ck/regressions/ck_queue/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_queue/validate/ck_list.c: Added.
        (test_foreach):
        (execute):
        (main):
        * StitchMarker/ck/regressions/ck_queue/validate/ck_slist.c: Added.
        (test_foreach):
        (execute):
        (main):
        * StitchMarker/ck/regressions/ck_queue/validate/ck_stailq.c: Added.
        (test_foreach):
        (execute):
        (main):
        * StitchMarker/ck/regressions/ck_rhs/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rhs/benchmark/parallel_bytestring.c: Added.
        (alarm_handler):
        (hs_hash):
        (hs_compare):
        (hs_destroy):
        (hs_malloc):
        (hs_free):
        (set_remove):
        (set_replace):
        (set_swap):
        (set_get):
        (set_insert):
        (set_count):
        (set_reset):
        (reader):
        (acc):
        (main):
        * StitchMarker/ck/regressions/ck_rhs/benchmark/serial.c: Added.
        (hs_malloc):
        (hs_free):
        (hs_compare):
        (set_destroy):
        (set_init):
        (set_remove):
        (set_swap):
        (set_replace):
        (set_get):
        (set_insert):
        (set_insert_unique):
        (set_count):
        (set_reset):
        (set_gc):
        (set_rebuild):
        (keys_shuffle):
        (run_test):
        (main):
        * StitchMarker/ck/regressions/ck_rhs/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rhs/validate/serial.c: Added.
        (hs_malloc):
        (hs_free):
        (hs_compare):
        (test_ip):
        (test_negative):
        (test_unique):
        (test_remove):
        (run_test):
        (main):
        * StitchMarker/ck/regressions/ck_ring/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_ring/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_ring/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_ring/validate/ck_ring_mpmc.c: Added.
        (test_mpmc):
        (test_spmc):
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_ring/validate/ck_ring_mpmc_template.c: Added.
        (test_spmc):
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_ring/validate/ck_ring_spmc.c: Added.
        (test_spmc):
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_ring/validate/ck_ring_spmc_template.c: Added.
        (test_spmc):
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_ring/validate/ck_ring_spsc.c: Added.
        (test):
        (main):
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/ck_neutral.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/ck_rp.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/ck_wp.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/latency.h: Added.
        (ck_spinlock_fas_lock_with_context):
        (ck_spinlock_fas_unlock_with_context):
        (ck_spinlock_fas_locked_with_context):
        (main):
        * StitchMarker/ck/regressions/ck_rwcohort/benchmark/throughput.h: Added.
        (ck_spinlock_fas_lock_with_context):
        (ck_spinlock_fas_unlock_with_context):
        (ck_spinlock_fas_locked_with_context):
        (thread_rwlock):
        (main):
        * StitchMarker/ck/regressions/ck_rwcohort/ck_neutral.h: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/ck_rp.h: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/ck_wp.h: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/validate/ck_neutral.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/validate/ck_rp.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/validate/ck_wp.c: Added.
        * StitchMarker/ck/regressions/ck_rwcohort/validate/validate.h: Added.
        (ck_spinlock_fas_lock_with_context):
        (ck_spinlock_fas_unlock_with_context):
        (ck_spinlock_fas_locked_with_context):
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_rwlock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rwlock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_rwlock/benchmark/throughput.c: Added.
        (thread_lock):
        (rwlock_test):
        (main):
        * StitchMarker/ck/regressions/ck_rwlock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_rwlock/validate/validate.c: Added.
        (thread_recursive):
        (thread_rtm_adaptive):
        (thread_rtm_mix):
        (thread_rtm):
        (thread):
        (rwlock_test):
        (main):
        * StitchMarker/ck/regressions/ck_sequence/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_sequence/benchmark/ck_sequence.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_sequence/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_sequence/validate/ck_sequence.c: Added.
        (validate):
        (consumer):
        (main):
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_anderson.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_cas.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_clh.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_dec.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_fas.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_hclh.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_mcs.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_spinlock.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_ticket.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/ck_ticket_pb.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/latency.h: Added.
        (main):
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/linux_spinlock.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/benchmark/throughput.h: Added.
        (gen_lock):
        (gen_unlock):
        (fairness):
        (main):
        * StitchMarker/ck/regressions/ck_spinlock/ck_anderson.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_cas.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_clh.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_dec.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_fas.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_hclh.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_mcs.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_spinlock.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_ticket.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/ck_ticket_pb.h: Added.
        * StitchMarker/ck/regressions/ck_spinlock/linux_spinlock.h: Added.
        (spin_lock):
        (spin_unlock):
        * StitchMarker/ck/regressions/ck_spinlock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_anderson.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_cas.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_clh.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_dec.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_fas.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_hclh.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_mcs.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_spinlock.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_ticket.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/ck_ticket_pb.c: Added.
        * StitchMarker/ck/regressions/ck_spinlock/validate/linux_spinlock.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_spinlock/validate/validate.h: Added.
        (thread):
        (main):
        * StitchMarker/ck/regressions/ck_stack/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_stack/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_stack/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_stack/validate/pair.c: Added.
        (stack_thread):
        (stack_assert):
        (main):
        * StitchMarker/ck/regressions/ck_stack/validate/pop.c: Added.
        (stack_thread):
        (stack_assert):
        (push_stack):
        (main):
        * StitchMarker/ck/regressions/ck_stack/validate/push.c: Added.
        (stack_thread):
        (stack_assert):
        (main):
        * StitchMarker/ck/regressions/ck_stack/validate/serial.c: Added.
        (serial):
        (main):
        * StitchMarker/ck/regressions/ck_swlock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_swlock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_swlock/benchmark/throughput.c: Added.
        (swlock_test):
        (main):
        * StitchMarker/ck/regressions/ck_swlock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_swlock/validate/validate.c: Added.
        (thread_rtm_adaptive):
        (thread_rtm_mix):
        (thread_rtm):
        (thread_latch):
        (thread):
        (swlock_test):
        (main):
        * StitchMarker/ck/regressions/ck_tflock/benchmark/Makefile: Added.
        * StitchMarker/ck/regressions/ck_tflock/benchmark/latency.c: Added.
        (main):
        * StitchMarker/ck/regressions/ck_tflock/benchmark/throughput.c: Added.
        (tflock_test):
        (main):
        * StitchMarker/ck/regressions/ck_tflock/validate/Makefile: Added.
        * StitchMarker/ck/regressions/ck_tflock/validate/validate.c: Added.
        (thread):
        (tflock_ticket_test):
        (main):
        * StitchMarker/ck/regressions/common.h: Added.
        (common_srand):
        (common_rand):
        (common_rand_r):
        (common_srand48):
        (common_lrand48):
        (common_drand48):
        (common_sleep):
        (common_gettimeofday):
        (common_alarm):
        (gettid):
        (aff_iterate):
        (aff_iterate_core):
        (rdtsc):
        (ck_error):
        * StitchMarker/ck/src/Makefile: Added.
        * StitchMarker/ck/src/Makefile.in: Added.
        * StitchMarker/ck/src/ck_array.c: Added.
        (ck_array_create):
        (ck_array_init):
        (ck_array_put):
        (ck_array_put_unique):
        (ck_array_remove):
        (ck_array_commit):
        (ck_array_deinit):
        * StitchMarker/ck/src/ck_barrier_centralized.c: Added.
        (ck_barrier_centralized):
        * StitchMarker/ck/src/ck_barrier_combining.c: Added.
        (ck_barrier_combining_queue_dequeue):
        (ck_barrier_combining_insert):
        (ck_barrier_combining_queue_enqueue):
        (ck_barrier_combining_group_init):
        (ck_barrier_combining_init):
        (ck_barrier_combining_aux):
        (ck_barrier_combining):
        * StitchMarker/ck/src/ck_barrier_dissemination.c: Added.
        (ck_barrier_dissemination_init):
        (ck_barrier_dissemination_subscribe):
        (ck_barrier_dissemination_size):
        (ck_barrier_dissemination):
        * StitchMarker/ck/src/ck_barrier_mcs.c: Added.
        (ck_barrier_mcs_init):
        (ck_barrier_mcs_subscribe):
        (ck_barrier_mcs_check_children):
        (ck_barrier_mcs_reinitialize_children):
        (ck_barrier_mcs):
        * StitchMarker/ck/src/ck_barrier_tournament.c: Added.
        (ck_barrier_tournament_subscribe):
        (ck_barrier_tournament_init):
        (ck_barrier_tournament_size):
        (ck_barrier_tournament):
        * StitchMarker/ck/src/ck_epoch.c: Added.
        (_ck_epoch_delref):
        (_ck_epoch_addref):
        (ck_epoch_init):
        (ck_epoch_recycle):
        (ck_epoch_register):
        (ck_epoch_unregister):
        (ck_epoch_scan):
        (ck_epoch_dispatch):
        (ck_epoch_reclaim):
        (epoch_block):
        (ck_epoch_synchronize_wait):
        (ck_epoch_synchronize):
        (ck_epoch_barrier):
        (ck_epoch_barrier_wait):
        (ck_epoch_poll):
        * StitchMarker/ck/src/ck_hp.c: Added.
        (ck_hp_init):
        (ck_hp_set_threshold):
        (ck_hp_recycle):
        (ck_hp_unregister):
        (ck_hp_register):
        (hazard_compare):
        (ck_hp_member_scan):
        (ck_hp_member_cache):
        (ck_hp_reclaim):
        (ck_hp_retire):
        (ck_hp_free):
        (ck_hp_purge):
        * StitchMarker/ck/src/ck_hs.c: Added.
        (ck_hs_map_signal):
        (_ck_hs_next):
        (ck_hs_iterator_init):
        (ck_hs_next):
        (ck_hs_next_spmc):
        (ck_hs_stat):
        (ck_hs_count):
        (ck_hs_map_destroy):
        (ck_hs_destroy):
        (ck_hs_map_create):
        (ck_hs_reset_size):
        (ck_hs_reset):
        (ck_hs_map_probe_next):
        (ck_hs_map_bound_set):
        (ck_hs_map_bound_get):
        (ck_hs_grow):
        (ck_hs_map_postinsert):
        (ck_hs_rebuild):
        (ck_hs_map_probe):
        (ck_hs_marshal):
        (ck_hs_gc):
        (ck_hs_fas):
        (ck_hs_apply):
        (ck_hs_set):
        (ck_hs_put_internal):
        (ck_hs_put):
        (ck_hs_put_unique):
        (ck_hs_get):
        (ck_hs_remove):
        (ck_hs_move):
        (ck_hs_init):
        * StitchMarker/ck/src/ck_ht.c: Added.
        (ck_ht_stat):
        (ck_ht_hash):
        (ck_ht_hash_direct):
        (ck_ht_hash_wrapper):
        (ck_ht_map_create):
        (ck_ht_map_bound_set):
        (ck_ht_map_bound_get):
        (ck_ht_map_destroy):
        (ck_ht_map_probe_next):
        (ck_ht_init):
        (ck_ht_map_probe_wr):
        (ck_ht_gc):
        (ck_ht_map_probe_rd):
        (ck_ht_count):
        (ck_ht_next):
        (ck_ht_reset_size_spmc):
        (ck_ht_reset_spmc):
        (ck_ht_grow_spmc):
        (ck_ht_remove_spmc):
        (ck_ht_get_spmc):
        (ck_ht_set_spmc):
        (ck_ht_put_spmc):
        (ck_ht_destroy):
        * StitchMarker/ck/src/ck_ht_hash.h: Added.
        (rotl32):
        (rotl64):
        (getblock):
        (fmix):
        (MurmurHash3_x86_32):
        (MurmurHash64A):
        (MurmurHash64B):
        * StitchMarker/ck/src/ck_internal.h: Added.
        (ck_internal_log):
        (ck_internal_power_2):
        (ck_internal_max):
        (ck_internal_max_64):
        (ck_internal_max_32):
        (ck_internal_bsf):
        (ck_internal_bsf_64):
        * StitchMarker/ck/src/ck_rhs.c: Added.
        (ck_rhs_entry):
        (ck_rhs_entry_addr):
        (ck_rhs_desc):
        (ck_rhs_wanted_inc):
        (ck_rhs_probes):
        (ck_rhs_set_probes):
        (ck_rhs_probe_bound):
        (ck_rhs_probe_bound_addr):
        (ck_rhs_in_rh):
        (ck_rhs_set_rh):
        (ck_rhs_unset_rh):
        (ck_rhs_set_load_factor):
        (ck_rhs_iterator_init):
        (ck_rhs_next):
        (ck_rhs_stat):
        (ck_rhs_count):
        (ck_rhs_map_destroy):
        (ck_rhs_destroy):
        (ck_rhs_map_create):
        (ck_rhs_reset_size):
        (ck_rhs_reset):
        (ck_rhs_map_probe_next):
        (ck_rhs_map_probe_prev):
        (ck_rhs_map_bound_set):
        (ck_rhs_map_bound_get):
        (ck_rhs_grow):
        (ck_rhs_rebuild):
        (ck_rhs_map_probe_rm):
        (ck_rhs_map_probe):
        (ck_rhs_marshal):
        (ck_rhs_gc):
        (ck_rhs_add_wanted):
        (ck_rhs_remove_wanted):
        (ck_rhs_get_first_offset):
        (ck_rhs_put_robin_hood):
        (ck_rhs_do_backward_shift_delete):
        (ck_rhs_fas):
        (ck_rhs_apply):
        (ck_rhs_set):
        (ck_rhs_put_internal):
        (ck_rhs_put):
        (ck_rhs_put_unique):
        (ck_rhs_get):
        (ck_rhs_remove):
        (ck_rhs_move):
        (ck_rhs_init):
        * StitchMarker/folly.sh: Added. Build script.
        * StitchMarker/folly/LICENSE: Added.
        * StitchMarker/folly/README.md: Added.
        * StitchMarker/folly/boost/LICENSE_1_0.txt: Added.
        * StitchMarker/folly/boost/assert.hpp: Added.
        * StitchMarker/folly/boost/blank.hpp: Added.
        * StitchMarker/folly/boost/blank_fwd.hpp: Added.
        * StitchMarker/folly/boost/concept/assert.hpp: Added.
        * StitchMarker/folly/boost/concept/detail/backward_compatibility.hpp: Added.
        * StitchMarker/folly/boost/concept/detail/concept_def.hpp: Added.
        * StitchMarker/folly/boost/concept/detail/concept_undef.hpp: Added.
        * StitchMarker/folly/boost/concept/detail/general.hpp: Added.
        * StitchMarker/folly/boost/concept/detail/has_constraints.hpp: Added.
        * StitchMarker/folly/boost/concept/usage.hpp: Added.
        * StitchMarker/folly/boost/concept_check.hpp: Added.
        * StitchMarker/folly/boost/config.hpp: Added.
        * StitchMarker/folly/boost/config/compiler/clang.hpp: Added.
        * StitchMarker/folly/boost/config/no_tr1/cmath.hpp: Added.
        * StitchMarker/folly/boost/config/no_tr1/complex.hpp: Added.
        * StitchMarker/folly/boost/config/platform/macos.hpp: Added.
        * StitchMarker/folly/boost/config/posix_features.hpp: Added.
        * StitchMarker/folly/boost/config/select_compiler_config.hpp: Added.
        * StitchMarker/folly/boost/config/select_platform_config.hpp: Added.
        * StitchMarker/folly/boost/config/select_stdlib_config.hpp: Added.
        * StitchMarker/folly/boost/config/stdlib/libcpp.hpp: Added.
        * StitchMarker/folly/boost/config/suffix.hpp: Added.
        * StitchMarker/folly/boost/config/user.hpp: Added.
        * StitchMarker/folly/boost/core/addressof.hpp: Added.
        * StitchMarker/folly/boost/core/checked_delete.hpp: Added.
        * StitchMarker/folly/boost/core/enable_if.hpp: Added.
        * StitchMarker/folly/boost/core/no_exceptions_support.hpp: Added.
        * StitchMarker/folly/boost/core/noncopyable.hpp: Added.
        * StitchMarker/folly/boost/cstdint.hpp: Added.
        * StitchMarker/folly/boost/current_function.hpp: Added.
        * StitchMarker/folly/boost/detail/endian.hpp: Added.
        * StitchMarker/folly/boost/detail/indirect_traits.hpp: Added.
        * StitchMarker/folly/boost/detail/iterator.hpp: Added.
        * StitchMarker/folly/boost/detail/templated_streams.hpp: Added.
        * StitchMarker/folly/boost/detail/workaround.hpp: Added.
        * StitchMarker/folly/boost/exception/exception.hpp: Added.
        * StitchMarker/folly/boost/function_types/components.hpp: Added.
        * StitchMarker/folly/boost/function_types/config/cc_names.hpp: Added.
        * StitchMarker/folly/boost/function_types/config/compiler.hpp: Added.
        * StitchMarker/folly/boost/function_types/config/config.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/class_transform.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/components_as_mpl_sequence.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/components_impl/arity10_0.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/components_impl/arity10_1.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/components_impl/arity20_0.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/components_impl/arity20_1.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/encoding/aliases_def.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/encoding/aliases_undef.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/encoding/def.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/encoding/undef.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_arity_loop.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_cc_loop/preprocessed.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_loop.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_retag_default_cc/preprocessed.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_tags/cc_tag.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_tags/preprocessed.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/pp_variate_loop/preprocessed.hpp: Added.
        * StitchMarker/folly/boost/function_types/detail/retag_default_cc.hpp: Added.
        * StitchMarker/folly/boost/function_types/function_arity.hpp: Added.
        * StitchMarker/folly/boost/function_types/is_callable_builtin.hpp: Added.
        * StitchMarker/folly/boost/function_types/property_tags.hpp: Added.
        * StitchMarker/folly/boost/implicit_cast.hpp: Added.
        * StitchMarker/folly/boost/integer.hpp: Added.
        * StitchMarker/folly/boost/integer/integer_log2.hpp: Added.
        * StitchMarker/folly/boost/integer/integer_mask.hpp: Added.
        * StitchMarker/folly/boost/integer/static_log2.hpp: Added.
        * StitchMarker/folly/boost/integer_fwd.hpp: Added.
        * StitchMarker/folly/boost/integer_traits.hpp: Added.
        * StitchMarker/folly/boost/intrusive/circular_list_algorithms.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/algo_type.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/algorithm.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/array_initializer.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/assert.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/config_begin.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/config_end.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/default_header_holder.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/ebo_functor_holder.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/equal_to_value.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/exception_disposer.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/function_detector.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/generic_hook.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/get_value_traits.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/hook_traits.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/iiterator.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/is_stateful_value_traits.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/iterator.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/key_nodeptr_comp.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/list_iterator.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/list_node.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/minimal_less_equal_header.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/mpl.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/node_holder.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/parent_from_member.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/pointer_element.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/reverse_iterator.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/simple_disposers.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/size_holder.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/std_fwd.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/to_raw_pointer.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/tree_value_compare.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/uncast.hpp: Added.
        * StitchMarker/folly/boost/intrusive/detail/workaround.hpp: Added.
        * StitchMarker/folly/boost/intrusive/intrusive_fwd.hpp: Added.
        * StitchMarker/folly/boost/intrusive/link_mode.hpp: Added.
        * StitchMarker/folly/boost/intrusive/list.hpp: Added.
        * StitchMarker/folly/boost/intrusive/list_hook.hpp: Added.
        * StitchMarker/folly/boost/intrusive/options.hpp: Added.
        * StitchMarker/folly/boost/intrusive/pack_options.hpp: Added.
        * StitchMarker/folly/boost/intrusive/pointer_rebind.hpp: Added.
        * StitchMarker/folly/boost/intrusive/pointer_traits.hpp: Added.
        * StitchMarker/folly/boost/iterator.hpp: Added.
        * StitchMarker/folly/boost/iterator/detail/config_def.hpp: Added.
        * StitchMarker/folly/boost/iterator/detail/config_undef.hpp: Added.
        * StitchMarker/folly/boost/iterator/detail/enable_if.hpp: Added.
        * StitchMarker/folly/boost/iterator/detail/facade_iterator_category.hpp: Added.
        * StitchMarker/folly/boost/iterator/interoperable.hpp: Added.
        * StitchMarker/folly/boost/iterator/iterator_adaptor.hpp: Added.
        * StitchMarker/folly/boost/iterator/iterator_categories.hpp: Added.
        * StitchMarker/folly/boost/iterator/iterator_concepts.hpp: Added.
        * StitchMarker/folly/boost/iterator/iterator_facade.hpp: Added.
        * StitchMarker/folly/boost/iterator/iterator_traits.hpp: Added.
        * StitchMarker/folly/boost/limits.hpp: Added.
        * StitchMarker/folly/boost/math/policies/policy.hpp: Added.
        * StitchMarker/folly/boost/math/special_functions/detail/fp_traits.hpp: Added.
        * StitchMarker/folly/boost/math/special_functions/detail/round_fwd.hpp: Added.
        * StitchMarker/folly/boost/math/special_functions/fpclassify.hpp: Added.
        * StitchMarker/folly/boost/math/special_functions/math_fwd.hpp: Added.
        * StitchMarker/folly/boost/math/tools/config.hpp: Added.
        * StitchMarker/folly/boost/math/tools/promotion.hpp: Added.
        * StitchMarker/folly/boost/math/tools/real_cast.hpp: Added.
        * StitchMarker/folly/boost/math/tools/user.hpp: Added.
        * StitchMarker/folly/boost/move/core.hpp: Added.
        * StitchMarker/folly/boost/move/detail/config_begin.hpp: Added.
        * StitchMarker/folly/boost/move/detail/config_end.hpp: Added.
        * StitchMarker/folly/boost/move/detail/iterator_traits.hpp: Added.
        * StitchMarker/folly/boost/move/detail/meta_utils.hpp: Added.
        * StitchMarker/folly/boost/move/detail/meta_utils_core.hpp: Added.
        * StitchMarker/folly/boost/move/detail/std_ns_begin.hpp: Added.
        * StitchMarker/folly/boost/move/detail/std_ns_end.hpp: Added.
        * StitchMarker/folly/boost/move/detail/type_traits.hpp: Added.
        * StitchMarker/folly/boost/move/detail/workaround.hpp: Added.
        * StitchMarker/folly/boost/move/utility_core.hpp: Added.
        * StitchMarker/folly/boost/mpl/O1_size.hpp: Added.
        * StitchMarker/folly/boost/mpl/O1_size_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/advance.hpp: Added.
        * StitchMarker/folly/boost/mpl/advance_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/always.hpp: Added.
        * StitchMarker/folly/boost/mpl/and.hpp: Added.
        * StitchMarker/folly/boost/mpl/apply.hpp: Added.
        * StitchMarker/folly/boost/mpl/apply_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/apply_wrap.hpp: Added.
        * StitchMarker/folly/boost/mpl/arg.hpp: Added.
        * StitchMarker/folly/boost/mpl/arg_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/assert.hpp: Added.
        * StitchMarker/folly/boost/mpl/at.hpp: Added.
        * StitchMarker/folly/boost/mpl/at_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/O1_size_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/adl_barrier.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/advance_backward.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/advance_forward.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/arg_typedef.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/arithmetic_op.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/arity.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/arity_spec.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/at_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/begin_end_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/clear_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/common_name_wknd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/comparison_op.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/adl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/arrays.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/bcc.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/bind.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/compiler.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/ctps.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/dtp.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/eti.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/forwarding.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/gcc.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/gpu.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/has_apply.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/has_xxx.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/integral.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/intel.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/lambda.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/msvc.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/msvc_typename.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/nttp.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/overload_resolution.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/pp_counter.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/preprocessor.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/static_constant.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/ttp.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/typeof.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/use_preprocessed.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/config/workaround.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/contains_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/find_if_pred.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/full_lambda.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/has_apply.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/has_begin.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/has_size.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/has_tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/has_type.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/include_preprocessed.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/inserter_algorithm.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/integral_wrapper.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/is_msvc_eti_arg.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/iter_apply.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/iter_fold_if_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/iter_fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/lambda_arity_param.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/lambda_spec.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/lambda_support.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/largest_int.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/msvc_eti_base.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/msvc_never_true.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/msvc_type.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/na.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/na_assert.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/na_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/na_spec.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/nested_type_wknd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/nttp_decl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/numeric_cast_utils.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/numeric_op.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/and.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/apply.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/arg.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/bind.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/bitand.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/greater.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/less.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/list.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/minus.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/or.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/plus.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/quote.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessed/gcc/vector.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessor/def_params_tail.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessor/default_params.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessor/enum.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/preprocessor/params.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/push_back_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/push_front_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/reverse_fold_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/size_impl.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/static_cast.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/template_arity.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/template_arity_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/traits_lambda_spec.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/type_wrapper.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/value_wknd.hpp: Added.
        * StitchMarker/folly/boost/mpl/aux_/yes_no.hpp: Added.
        * StitchMarker/folly/boost/mpl/back_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/back_inserter.hpp: Added.
        * StitchMarker/folly/boost/mpl/begin_end.hpp: Added.
        * StitchMarker/folly/boost/mpl/begin_end_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/bind.hpp: Added.
        * StitchMarker/folly/boost/mpl/bind_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/bitand.hpp: Added.
        * StitchMarker/folly/boost/mpl/bitxor.hpp: Added.
        * StitchMarker/folly/boost/mpl/bool.hpp: Added.
        * StitchMarker/folly/boost/mpl/bool_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/clear.hpp: Added.
        * StitchMarker/folly/boost/mpl/clear_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/comparison.hpp: Added.
        * StitchMarker/folly/boost/mpl/contains.hpp: Added.
        * StitchMarker/folly/boost/mpl/contains_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/deref.hpp: Added.
        * StitchMarker/folly/boost/mpl/distance.hpp: Added.
        * StitchMarker/folly/boost/mpl/distance_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/empty_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/equal_to.hpp: Added.
        * StitchMarker/folly/boost/mpl/eval_if.hpp: Added.
        * StitchMarker/folly/boost/mpl/find.hpp: Added.
        * StitchMarker/folly/boost/mpl/find_if.hpp: Added.
        * StitchMarker/folly/boost/mpl/fold.hpp: Added.
        * StitchMarker/folly/boost/mpl/front_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/front_inserter.hpp: Added.
        * StitchMarker/folly/boost/mpl/greater.hpp: Added.
        * StitchMarker/folly/boost/mpl/greater_equal.hpp: Added.
        * StitchMarker/folly/boost/mpl/has_xxx.hpp: Added.
        * StitchMarker/folly/boost/mpl/identity.hpp: Added.
        * StitchMarker/folly/boost/mpl/if.hpp: Added.
        * StitchMarker/folly/boost/mpl/inserter.hpp: Added.
        * StitchMarker/folly/boost/mpl/int.hpp: Added.
        * StitchMarker/folly/boost/mpl/int_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/integral_c.hpp: Added.
        * StitchMarker/folly/boost/mpl/integral_c_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/integral_c_tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/iter_fold.hpp: Added.
        * StitchMarker/folly/boost/mpl/iter_fold_if.hpp: Added.
        * StitchMarker/folly/boost/mpl/iterator_range.hpp: Added.
        * StitchMarker/folly/boost/mpl/iterator_tags.hpp: Added.
        * StitchMarker/folly/boost/mpl/lambda.hpp: Added.
        * StitchMarker/folly/boost/mpl/lambda_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/less.hpp: Added.
        * StitchMarker/folly/boost/mpl/less_equal.hpp: Added.
        * StitchMarker/folly/boost/mpl/limits/arity.hpp: Added.
        * StitchMarker/folly/boost/mpl/limits/list.hpp: Added.
        * StitchMarker/folly/boost/mpl/limits/vector.hpp: Added.
        * StitchMarker/folly/boost/mpl/list.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/O1_size.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/begin_end.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/clear.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/empty.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/front.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/include_preprocessed.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/item.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/iterator.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/pop_front.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/preprocessed/plain/list10.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/preprocessed/plain/list20.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/push_back.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/push_front.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/size.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/aux_/tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/list0.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/list10.hpp: Added.
        * StitchMarker/folly/boost/mpl/list/list20.hpp: Added.
        * StitchMarker/folly/boost/mpl/logical.hpp: Added.
        * StitchMarker/folly/boost/mpl/long.hpp: Added.
        * StitchMarker/folly/boost/mpl/long_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/minus.hpp: Added.
        * StitchMarker/folly/boost/mpl/negate.hpp: Added.
        * StitchMarker/folly/boost/mpl/next.hpp: Added.
        * StitchMarker/folly/boost/mpl/next_prior.hpp: Added.
        * StitchMarker/folly/boost/mpl/not.hpp: Added.
        * StitchMarker/folly/boost/mpl/not_equal_to.hpp: Added.
        * StitchMarker/folly/boost/mpl/numeric_cast.hpp: Added.
        * StitchMarker/folly/boost/mpl/or.hpp: Added.
        * StitchMarker/folly/boost/mpl/pair.hpp: Added.
        * StitchMarker/folly/boost/mpl/placeholders.hpp: Added.
        * StitchMarker/folly/boost/mpl/plus.hpp: Added.
        * StitchMarker/folly/boost/mpl/pop_back_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/pop_front_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/prior.hpp: Added.
        * StitchMarker/folly/boost/mpl/protect.hpp: Added.
        * StitchMarker/folly/boost/mpl/push_back.hpp: Added.
        * StitchMarker/folly/boost/mpl/push_back_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/push_front.hpp: Added.
        * StitchMarker/folly/boost/mpl/push_front_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/quote.hpp: Added.
        * StitchMarker/folly/boost/mpl/remove.hpp: Added.
        * StitchMarker/folly/boost/mpl/remove_if.hpp: Added.
        * StitchMarker/folly/boost/mpl/reverse_fold.hpp: Added.
        * StitchMarker/folly/boost/mpl/same_as.hpp: Added.
        * StitchMarker/folly/boost/mpl/sequence_tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/sequence_tag_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/size.hpp: Added.
        * StitchMarker/folly/boost/mpl/size_fwd.hpp: Added.
        * StitchMarker/folly/boost/mpl/tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/O1_size.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/at.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/back.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/begin_end.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/clear.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/empty.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/front.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/include_preprocessed.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/item.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/iterator.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/pop_back.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/pop_front.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/push_back.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/push_front.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/size.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/tag.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/aux_/vector0.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/vector0.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/vector10.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/vector20.hpp: Added.
        * StitchMarker/folly/boost/mpl/vector/vector30.hpp: Added.
        * StitchMarker/folly/boost/mpl/void.hpp: Added.
        * StitchMarker/folly/boost/mpl/void_fwd.hpp: Added.
        * StitchMarker/folly/boost/next_prior.hpp: Added.
        * StitchMarker/folly/boost/noncopyable.hpp: Added.
        * StitchMarker/folly/boost/operators.hpp: Added.
        * StitchMarker/folly/boost/pending/integer_log2.hpp: Added.
        * StitchMarker/folly/boost/predef.h: Added.
        * StitchMarker/folly/boost/predef/architecture.h: Added.
        * StitchMarker/folly/boost/predef/architecture/alpha.h: Added.
        * StitchMarker/folly/boost/predef/architecture/arm.h: Added.
        * StitchMarker/folly/boost/predef/architecture/blackfin.h: Added.
        * StitchMarker/folly/boost/predef/architecture/convex.h: Added.
        * StitchMarker/folly/boost/predef/architecture/ia64.h: Added.
        * StitchMarker/folly/boost/predef/architecture/m68k.h: Added.
        * StitchMarker/folly/boost/predef/architecture/mips.h: Added.
        * StitchMarker/folly/boost/predef/architecture/parisc.h: Added.
        * StitchMarker/folly/boost/predef/architecture/ppc.h: Added.
        * StitchMarker/folly/boost/predef/architecture/pyramid.h: Added.
        * StitchMarker/folly/boost/predef/architecture/rs6k.h: Added.
        * StitchMarker/folly/boost/predef/architecture/sparc.h: Added.
        * StitchMarker/folly/boost/predef/architecture/superh.h: Added.
        * StitchMarker/folly/boost/predef/architecture/sys370.h: Added.
        * StitchMarker/folly/boost/predef/architecture/sys390.h: Added.
        * StitchMarker/folly/boost/predef/architecture/x86.h: Added.
        * StitchMarker/folly/boost/predef/architecture/x86/32.h: Added.
        * StitchMarker/folly/boost/predef/architecture/x86/64.h: Added.
        * StitchMarker/folly/boost/predef/architecture/z.h: Added.
        * StitchMarker/folly/boost/predef/compiler.h: Added.
        * StitchMarker/folly/boost/predef/compiler/borland.h: Added.
        * StitchMarker/folly/boost/predef/compiler/clang.h: Added.
        * StitchMarker/folly/boost/predef/compiler/comeau.h: Added.
        * StitchMarker/folly/boost/predef/compiler/compaq.h: Added.
        * StitchMarker/folly/boost/predef/compiler/diab.h: Added.
        * StitchMarker/folly/boost/predef/compiler/digitalmars.h: Added.
        * StitchMarker/folly/boost/predef/compiler/dignus.h: Added.
        * StitchMarker/folly/boost/predef/compiler/edg.h: Added.
        * StitchMarker/folly/boost/predef/compiler/ekopath.h: Added.
        * StitchMarker/folly/boost/predef/compiler/gcc.h: Added.
        * StitchMarker/folly/boost/predef/compiler/gcc_xml.h: Added.
        * StitchMarker/folly/boost/predef/compiler/greenhills.h: Added.
        * StitchMarker/folly/boost/predef/compiler/hp_acc.h: Added.
        * StitchMarker/folly/boost/predef/compiler/iar.h: Added.
        * StitchMarker/folly/boost/predef/compiler/ibm.h: Added.
        * StitchMarker/folly/boost/predef/compiler/intel.h: Added.
        * StitchMarker/folly/boost/predef/compiler/kai.h: Added.
        * StitchMarker/folly/boost/predef/compiler/llvm.h: Added.
        * StitchMarker/folly/boost/predef/compiler/metaware.h: Added.
        * StitchMarker/folly/boost/predef/compiler/metrowerks.h: Added.
        * StitchMarker/folly/boost/predef/compiler/microtec.h: Added.
        * StitchMarker/folly/boost/predef/compiler/mpw.h: Added.
        * StitchMarker/folly/boost/predef/compiler/palm.h: Added.
        * StitchMarker/folly/boost/predef/compiler/pgi.h: Added.
        * StitchMarker/folly/boost/predef/compiler/sgi_mipspro.h: Added.
        * StitchMarker/folly/boost/predef/compiler/sunpro.h: Added.
        * StitchMarker/folly/boost/predef/compiler/tendra.h: Added.
        * StitchMarker/folly/boost/predef/compiler/visualc.h: Added.
        * StitchMarker/folly/boost/predef/compiler/watcom.h: Added.
        * StitchMarker/folly/boost/predef/detail/_cassert.h: Added.
        * StitchMarker/folly/boost/predef/detail/_exception.h: Added.
        * StitchMarker/folly/boost/predef/detail/comp_detected.h: Added.
        * StitchMarker/folly/boost/predef/detail/endian_compat.h: Added.
        * StitchMarker/folly/boost/predef/detail/os_detected.h: Added.
        * StitchMarker/folly/boost/predef/detail/test.h: Added.
        * StitchMarker/folly/boost/predef/hardware.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/arm.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/arm/versions.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/ppc.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/ppc/versions.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/x86.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/x86/versions.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/x86_amd.h: Added.
        * StitchMarker/folly/boost/predef/hardware/simd/x86_amd/versions.h: Added.
        * StitchMarker/folly/boost/predef/language.h: Added.
        * StitchMarker/folly/boost/predef/language/objc.h: Added.
        * StitchMarker/folly/boost/predef/language/stdc.h: Added.
        * StitchMarker/folly/boost/predef/language/stdcpp.h: Added.
        * StitchMarker/folly/boost/predef/library.h: Added.
        * StitchMarker/folly/boost/predef/library/c.h: Added.
        * StitchMarker/folly/boost/predef/library/c/_prefix.h: Added.
        * StitchMarker/folly/boost/predef/library/c/gnu.h: Added.
        * StitchMarker/folly/boost/predef/library/c/uc.h: Added.
        * StitchMarker/folly/boost/predef/library/c/vms.h: Added.
        * StitchMarker/folly/boost/predef/library/c/zos.h: Added.
        * StitchMarker/folly/boost/predef/library/std.h: Added.
        * StitchMarker/folly/boost/predef/library/std/_prefix.h: Added.
        * StitchMarker/folly/boost/predef/library/std/cxx.h: Added.
        * StitchMarker/folly/boost/predef/library/std/dinkumware.h: Added.
        * StitchMarker/folly/boost/predef/library/std/libcomo.h: Added.
        * StitchMarker/folly/boost/predef/library/std/modena.h: Added.
        * StitchMarker/folly/boost/predef/library/std/msl.h: Added.
        * StitchMarker/folly/boost/predef/library/std/roguewave.h: Added.
        * StitchMarker/folly/boost/predef/library/std/sgi.h: Added.
        * StitchMarker/folly/boost/predef/library/std/stdcpp3.h: Added.
        * StitchMarker/folly/boost/predef/library/std/stlport.h: Added.
        * StitchMarker/folly/boost/predef/library/std/vacpp.h: Added.
        * StitchMarker/folly/boost/predef/make.h: Added.
        * StitchMarker/folly/boost/predef/os.h: Added.
        * StitchMarker/folly/boost/predef/os/aix.h: Added.
        * StitchMarker/folly/boost/predef/os/amigaos.h: Added.
        * StitchMarker/folly/boost/predef/os/android.h: Added.
        * StitchMarker/folly/boost/predef/os/beos.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd/bsdi.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd/dragonfly.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd/free.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd/net.h: Added.
        * StitchMarker/folly/boost/predef/os/bsd/open.h: Added.
        * StitchMarker/folly/boost/predef/os/cygwin.h: Added.
        * StitchMarker/folly/boost/predef/os/haiku.h: Added.
        * StitchMarker/folly/boost/predef/os/hpux.h: Added.
        * StitchMarker/folly/boost/predef/os/ios.h: Added.
        * StitchMarker/folly/boost/predef/os/irix.h: Added.
        * StitchMarker/folly/boost/predef/os/linux.h: Added.
        * StitchMarker/folly/boost/predef/os/macos.h: Added.
        * StitchMarker/folly/boost/predef/os/os400.h: Added.
        * StitchMarker/folly/boost/predef/os/qnxnto.h: Added.
        * StitchMarker/folly/boost/predef/os/solaris.h: Added.
        * StitchMarker/folly/boost/predef/os/unix.h: Added.
        * StitchMarker/folly/boost/predef/os/vms.h: Added.
        * StitchMarker/folly/boost/predef/os/windows.h: Added.
        * StitchMarker/folly/boost/predef/other.h: Added.
        * StitchMarker/folly/boost/predef/other/endian.h: Added.
        * StitchMarker/folly/boost/predef/platform.h: Added.
        * StitchMarker/folly/boost/predef/platform/mingw.h: Added.
        * StitchMarker/folly/boost/predef/platform/windows_desktop.h: Added.
        * StitchMarker/folly/boost/predef/platform/windows_phone.h: Added.
        * StitchMarker/folly/boost/predef/platform/windows_runtime.h: Added.
        * StitchMarker/folly/boost/predef/platform/windows_store.h: Added.
        * StitchMarker/folly/boost/predef/version.h: Added.
        * StitchMarker/folly/boost/predef/version_number.h: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/add.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/dec.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/detail/div_base.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/inc.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/mod.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/arithmetic/sub.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/array/data.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/array/elem.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/array/size.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/cat.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/comma_if.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/comparison/less_equal.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/config/config.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/deduce_d.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/detail/while.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/expr_iif.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/if.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/iif.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/control/while.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/debug/error.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/detail/auto_rec.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/detail/check.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/detail/is_binary.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/empty.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/facilities/empty.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/facilities/expand.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/facilities/identity.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/facilities/overload.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/identity.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/inc.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/adt.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/detail/fold_left.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/detail/fold_right.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/fold_left.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/fold_right.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/list/reverse.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/logical/and.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/logical/bitand.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/logical/bool.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/logical/compl.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/logical/not.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/punctuation/comma.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/punctuation/comma_if.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/punctuation/paren.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repeat.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/detail/for.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/enum_binary_params.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/enum_params.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/enum_trailing_params.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/for.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/repeat.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/repetition/repeat_from_to.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/cat.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/detail/is_empty.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/elem.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/enum.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/fold_left.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/for_each_i.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/seq.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/size.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/seq/transform.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/stringize.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/tuple/detail/is_single_return.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/tuple/eat.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/tuple/elem.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/tuple/rem.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/variadic/elem.hpp: Added.
        * StitchMarker/folly/boost/preprocessor/variadic/size.hpp: Added.
        * StitchMarker/folly/boost/random.hpp: Added.
        * StitchMarker/folly/boost/random/additive_combine.hpp: Added.
        * StitchMarker/folly/boost/random/bernoulli_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/beta_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/binomial_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/cauchy_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/chi_squared_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/detail/config.hpp: Added.
        * StitchMarker/folly/boost/random/detail/const_mod.hpp: Added.
        * StitchMarker/folly/boost/random/detail/disable_warnings.hpp: Added.
        * StitchMarker/folly/boost/random/detail/enable_warnings.hpp: Added.
        * StitchMarker/folly/boost/random/detail/generator_bits.hpp: Added.
        * StitchMarker/folly/boost/random/detail/generator_seed_seq.hpp: Added.
        * StitchMarker/folly/boost/random/detail/int_float_pair.hpp: Added.
        * StitchMarker/folly/boost/random/detail/integer_log2.hpp: Added.
        * StitchMarker/folly/boost/random/detail/large_arithmetic.hpp: Added.
        * StitchMarker/folly/boost/random/detail/operators.hpp: Added.
        * StitchMarker/folly/boost/random/detail/polynomial.hpp: Added.
        * StitchMarker/folly/boost/random/detail/ptr_helper.hpp: Added.
        * StitchMarker/folly/boost/random/detail/seed.hpp: Added.
        * StitchMarker/folly/boost/random/detail/seed_impl.hpp: Added.
        * StitchMarker/folly/boost/random/detail/signed_unsigned_tools.hpp: Added.
        * StitchMarker/folly/boost/random/detail/uniform_int_float.hpp: Added.
        * StitchMarker/folly/boost/random/detail/vector_io.hpp: Added.
        * StitchMarker/folly/boost/random/discard_block.hpp: Added.
        * StitchMarker/folly/boost/random/discrete_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/exponential_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/extreme_value_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/fisher_f_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/gamma_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/generate_canonical.hpp: Added.
        * StitchMarker/folly/boost/random/geometric_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/hyperexponential_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/independent_bits.hpp: Added.
        * StitchMarker/folly/boost/random/inversive_congruential.hpp: Added.
        * StitchMarker/folly/boost/random/lagged_fibonacci.hpp: Added.
        * StitchMarker/folly/boost/random/laplace_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/linear_congruential.hpp: Added.
        * StitchMarker/folly/boost/random/linear_feedback_shift.hpp: Added.
        * StitchMarker/folly/boost/random/lognormal_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/mersenne_twister.hpp: Added.
        * StitchMarker/folly/boost/random/negative_binomial_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/non_central_chi_squared_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/normal_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/piecewise_constant_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/piecewise_linear_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/poisson_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/random_number_generator.hpp: Added.
        * StitchMarker/folly/boost/random/ranlux.hpp: Added.
        * StitchMarker/folly/boost/random/seed_seq.hpp: Added.
        * StitchMarker/folly/boost/random/shuffle_order.hpp: Added.
        * StitchMarker/folly/boost/random/shuffle_output.hpp: Added.
        * StitchMarker/folly/boost/random/student_t_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/subtract_with_carry.hpp: Added.
        * StitchMarker/folly/boost/random/taus88.hpp: Added.
        * StitchMarker/folly/boost/random/traits.hpp: Added.
        * StitchMarker/folly/boost/random/triangle_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_01.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_int.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_int_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_on_sphere.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_real.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_real_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/uniform_smallint.hpp: Added.
        * StitchMarker/folly/boost/random/variate_generator.hpp: Added.
        * StitchMarker/folly/boost/random/weibull_distribution.hpp: Added.
        * StitchMarker/folly/boost/random/xor_combine.hpp: Added.
        * StitchMarker/folly/boost/range/begin.hpp: Added.
        * StitchMarker/folly/boost/range/concepts.hpp: Added.
        * StitchMarker/folly/boost/range/config.hpp: Added.
        * StitchMarker/folly/boost/range/const_iterator.hpp: Added.
        * StitchMarker/folly/boost/range/detail/common.hpp: Added.
        * StitchMarker/folly/boost/range/detail/extract_optional_type.hpp: Added.
        * StitchMarker/folly/boost/range/detail/has_member_size.hpp: Added.
        * StitchMarker/folly/boost/range/detail/implementation_help.hpp: Added.
        * StitchMarker/folly/boost/range/detail/misc_concept.hpp: Added.
        * StitchMarker/folly/boost/range/detail/msvc_has_iterator_workaround.hpp: Added.
        * StitchMarker/folly/boost/range/detail/sfinae.hpp: Added.
        * StitchMarker/folly/boost/range/difference_type.hpp: Added.
        * StitchMarker/folly/boost/range/end.hpp: Added.
        * StitchMarker/folly/boost/range/has_range_iterator.hpp: Added.
        * StitchMarker/folly/boost/range/iterator.hpp: Added.
        * StitchMarker/folly/boost/range/mutable_iterator.hpp: Added.
        * StitchMarker/folly/boost/range/range_fwd.hpp: Added.
        * StitchMarker/folly/boost/range/size.hpp: Added.
        * StitchMarker/folly/boost/range/size_type.hpp: Added.
        * StitchMarker/folly/boost/range/value_type.hpp: Added.
        * StitchMarker/folly/boost/regex/pending/unicode_iterator.hpp: Added.
        * StitchMarker/folly/boost/static_assert.hpp: Added.
        * StitchMarker/folly/boost/throw_exception.hpp: Added.
        * StitchMarker/folly/boost/type_traits.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_const.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_cv.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_lvalue_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_rvalue_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/add_volatile.hpp: Added.
        * StitchMarker/folly/boost/type_traits/aligned_storage.hpp: Added.
        * StitchMarker/folly/boost/type_traits/alignment_of.hpp: Added.
        * StitchMarker/folly/boost/type_traits/common_type.hpp: Added.
        * StitchMarker/folly/boost/type_traits/conditional.hpp: Added.
        * StitchMarker/folly/boost/type_traits/conversion_traits.hpp: Added.
        * StitchMarker/folly/boost/type_traits/copy_cv.hpp: Added.
        * StitchMarker/folly/boost/type_traits/decay.hpp: Added.
        * StitchMarker/folly/boost/type_traits/declval.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/config.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/has_binary_operator.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/has_postfix_operator.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/has_prefix_operator.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/is_function_ptr_helper.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/mp_defer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/detail/yes_no_type.hpp: Added.
        * StitchMarker/folly/boost/type_traits/extent.hpp: Added.
        * StitchMarker/folly/boost/type_traits/floating_point_promotion.hpp: Added.
        * StitchMarker/folly/boost/type_traits/function_traits.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_and.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_and_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_or.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_or_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_xor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_bit_xor_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_complement.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_dereference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_divides.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_divides_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_equal_to.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_greater.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_greater_equal.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_left_shift.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_left_shift_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_less.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_less_equal.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_logical_and.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_logical_not.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_logical_or.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_minus.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_minus_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_modulus.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_modulus_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_multiplies.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_multiplies_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_negate.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_new_operator.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_not_equal_to.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_nothrow_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_nothrow_constructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_nothrow_copy.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_nothrow_destructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_plus.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_plus_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_post_decrement.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_post_increment.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_pre_decrement.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_pre_increment.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_right_shift.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_right_shift_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_constructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_copy.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_destructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_move_assign.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_trivial_move_constructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_unary_minus.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_unary_plus.hpp: Added.
        * StitchMarker/folly/boost/type_traits/has_virtual_destructor.hpp: Added.
        * StitchMarker/folly/boost/type_traits/integral_constant.hpp: Added.
        * StitchMarker/folly/boost/type_traits/integral_promotion.hpp: Added.
        * StitchMarker/folly/boost/type_traits/intrinsics.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_abstract.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_arithmetic.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_array.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_assignable.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_base_and_derived.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_base_of.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_class.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_complex.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_compound.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_const.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_constructible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_convertible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_copy_assignable.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_copy_constructible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_default_constructible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_destructible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_empty.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_enum.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_final.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_float.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_floating_point.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_function.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_fundamental.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_integral.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_lvalue_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_member_function_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_member_object_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_member_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_nothrow_move_assignable.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_nothrow_move_constructible.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_object.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_pod.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_polymorphic.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_rvalue_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_same.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_scalar.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_signed.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_stateless.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_union.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_unsigned.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_virtual_base_of.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_void.hpp: Added.
        * StitchMarker/folly/boost/type_traits/is_volatile.hpp: Added.
        * StitchMarker/folly/boost/type_traits/make_signed.hpp: Added.
        * StitchMarker/folly/boost/type_traits/make_unsigned.hpp: Added.
        * StitchMarker/folly/boost/type_traits/make_void.hpp: Added.
        * StitchMarker/folly/boost/type_traits/promote.hpp: Added.
        * StitchMarker/folly/boost/type_traits/rank.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_all_extents.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_bounds.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_const.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_cv.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_extent.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_pointer.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_reference.hpp: Added.
        * StitchMarker/folly/boost/type_traits/remove_volatile.hpp: Added.
        * StitchMarker/folly/boost/type_traits/type_identity.hpp: Added.
        * StitchMarker/folly/boost/type_traits/type_with_alignment.hpp: Added.
        * StitchMarker/folly/boost/utility.hpp: Added.
        * StitchMarker/folly/boost/utility/addressof.hpp: Added.
        * StitchMarker/folly/boost/utility/base_from_member.hpp: Added.
        * StitchMarker/folly/boost/utility/binary.hpp: Added.
        * StitchMarker/folly/boost/utility/enable_if.hpp: Added.
        * StitchMarker/folly/boost/utility/identity_type.hpp: Added.
        * StitchMarker/folly/boost/version.hpp: Added.
        * StitchMarker/folly/double-conversion/LICENSE: Added.
        * StitchMarker/folly/double-conversion/README.md: Added.
        * StitchMarker/folly/double-conversion/double-conversion/bignum-dtoa.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/bignum-dtoa.h: Added.
        * StitchMarker/folly/double-conversion/double-conversion/bignum.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/bignum.h: Added.
        (double_conversion::Bignum::Times10):
        (double_conversion::Bignum::Equal):
        (double_conversion::Bignum::LessEqual):
        (double_conversion::Bignum::Less):
        (double_conversion::Bignum::PlusEqual):
        (double_conversion::Bignum::PlusLessEqual):
        (double_conversion::Bignum::PlusLess):
        (double_conversion::Bignum::EnsureCapacity):
        (double_conversion::Bignum::BigitLength const):
        * StitchMarker/folly/double-conversion/double-conversion/cached-powers.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/cached-powers.h: Added.
        * StitchMarker/folly/double-conversion/double-conversion/diy-fp.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/diy-fp.h: Added.
        (double_conversion::DiyFp::DiyFp):
        (double_conversion::DiyFp::Subtract):
        (double_conversion::DiyFp::Minus):
        (double_conversion::DiyFp::Times):
        (double_conversion::DiyFp::Normalize):
        (double_conversion::DiyFp::f const):
        (double_conversion::DiyFp::e const):
        (double_conversion::DiyFp::set_f):
        (double_conversion::DiyFp::set_e):
        * StitchMarker/folly/double-conversion/double-conversion/double-conversion.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/double-conversion.h: Added.
        (double_conversion::DoubleToStringConverter::DoubleToStringConverter):
        (double_conversion::DoubleToStringConverter::ToShortest const):
        (double_conversion::DoubleToStringConverter::ToShortestSingle const):
        (double_conversion::StringToDoubleConverter::StringToDoubleConverter):
        * StitchMarker/folly/double-conversion/double-conversion/fast-dtoa.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/fast-dtoa.h: Added.
        * StitchMarker/folly/double-conversion/double-conversion/fixed-dtoa.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/fixed-dtoa.h: Added.
        * StitchMarker/folly/double-conversion/double-conversion/ieee.h: Added.
        (double_conversion::double_to_uint64):
        (double_conversion::uint64_to_double):
        (double_conversion::float_to_uint32):
        (double_conversion::uint32_to_float):
        (double_conversion::Double::Double):
        (double_conversion::Double::AsDiyFp const):
        (double_conversion::Double::AsNormalizedDiyFp const):
        (double_conversion::Double::AsUint64 const):
        (double_conversion::Double::NextDouble const):
        (double_conversion::Double::PreviousDouble const):
        (double_conversion::Double::Exponent const):
        (double_conversion::Double::Significand const):
        (double_conversion::Double::IsDenormal const):
        (double_conversion::Double::IsSpecial const):
        (double_conversion::Double::IsNan const):
        (double_conversion::Double::IsInfinite const):
        (double_conversion::Double::Sign const):
        (double_conversion::Double::UpperBoundary const):
        (double_conversion::Double::NormalizedBoundaries const):
        (double_conversion::Double::LowerBoundaryIsCloser const):
        (double_conversion::Double::value const):
        (double_conversion::Double::SignificandSizeForOrderOfMagnitude):
        (double_conversion::Double::Infinity):
        (double_conversion::Double::NaN):
        (double_conversion::Double::DiyFpToUint64):
        (double_conversion::Single::Single):
        (double_conversion::Single::AsDiyFp const):
        (double_conversion::Single::AsUint32 const):
        (double_conversion::Single::Exponent const):
        (double_conversion::Single::Significand const):
        (double_conversion::Single::IsDenormal const):
        (double_conversion::Single::IsSpecial const):
        (double_conversion::Single::IsNan const):
        (double_conversion::Single::IsInfinite const):
        (double_conversion::Single::Sign const):
        (double_conversion::Single::NormalizedBoundaries const):
        (double_conversion::Single::UpperBoundary const):
        (double_conversion::Single::LowerBoundaryIsCloser const):
        (double_conversion::Single::value const):
        (double_conversion::Single::Infinity):
        (double_conversion::Single::NaN):
        * StitchMarker/folly/double-conversion/double-conversion/strtod.cc: Added.
        * StitchMarker/folly/double-conversion/double-conversion/strtod.h: Added.
        * StitchMarker/folly/double-conversion/double-conversion/utils.h: Added.
        (abort_noreturn):
        (double_conversion::Max):
        (double_conversion::Min):
        (double_conversion::StrLength):
        (double_conversion::Vector::Vector):
        (double_conversion::Vector::SubVector):
        (double_conversion::Vector::length const):
        (double_conversion::Vector::is_empty const):
        (double_conversion::Vector::start const):
        (double_conversion::Vector::operator[] const):
        (double_conversion::Vector::first):
        (double_conversion::Vector::last):
        (double_conversion::StringBuilder::StringBuilder):
        (double_conversion::StringBuilder::~StringBuilder):
        (double_conversion::StringBuilder::size const):
        (double_conversion::StringBuilder::position const):
        (double_conversion::StringBuilder::Reset):
        (double_conversion::StringBuilder::AddCharacter):
        (double_conversion::StringBuilder::AddString):
        (double_conversion::StringBuilder::AddSubstring):
        (double_conversion::StringBuilder::AddPadding):
        (double_conversion::StringBuilder::Finalize):
        (double_conversion::StringBuilder::is_finalized const):
        (double_conversion::BitCast):
        * StitchMarker/folly/folly/ApplyTuple.h: Added.
        (folly::detail::apply_tuple::sum):
        (folly::detail::apply_tuple::makeCallable):
        (folly::detail::apply_tuple::call):
        (folly::detail::apply_tuple::forwardTuple):
        (folly::applyTuple):
        (folly::detail::apply_tuple::Uncurry::Uncurry):
        (folly::detail::apply_tuple::Uncurry::operator() const):
        (folly::uncurry):
        * StitchMarker/folly/folly/Assume.cpp: Added.
        (folly::detail::assume_check):
        * StitchMarker/folly/folly/Assume.h: Added.
        (folly::assume):
        (folly::assume_unreachable):
        * StitchMarker/folly/folly/AtomicStruct.h: Added.
        * StitchMarker/folly/folly/Baton.h: Added.
        (folly::Baton::Baton):
        (folly::Baton::~Baton):
        (folly::Baton::reset):
        (folly::Baton::post):
        (folly::Baton::wait):
        (folly::Baton::timed_wait):
        (folly::Baton::try_wait const):
        (folly::Baton::spinWaitForEarlyDelivery):
        * StitchMarker/folly/folly/Benchmark.cpp: Added.
        (folly::benchmarks):
        (folly::BENCHMARK):
        (folly::getGlobalBenchmarkBaselineIndex):
        (folly::detail::addBenchmarkImpl):
        (folly::estimateTime):
        (folly::runBenchmarkGetNSPerIteration):
        (folly::humanReadable):
        (folly::readableTime):
        (folly::metricReadable):
        (folly::printBenchmarkResultsAsTable):
        (folly::printBenchmarkResults):
        (folly::runBenchmarks):
        * StitchMarker/folly/folly/Benchmark.h: Added.
        (folly::runBenchmarksOnFlag):
        (folly::BenchmarkSuspender::BenchmarkSuspender):
        (folly::BenchmarkSuspender::operator=):
        (folly::BenchmarkSuspender::~BenchmarkSuspender):
        (folly::BenchmarkSuspender::dismiss):
        (folly::BenchmarkSuspender::rehire):
        (folly::BenchmarkSuspender::dismissing):
        (folly::BenchmarkSuspender::operator bool const):
        (folly::BenchmarkSuspender::tally):
        (folly::addBenchmark):
        (folly::doNotOptimizeDependencySink):
        (folly::doNotOptimizeAway):
        (folly::makeUnpredictable):
        * StitchMarker/folly/folly/Bits.h: Added.
        (folly::findFirstSet):
        (folly::findLastSet):
        (folly::nextPowTwo):
        (folly::prevPowTwo):
        (folly::isPowTwo):
        (folly::popcount):
        (folly::detail::EndianInt::swap):
        (folly::detail::EndianInt::big):
        (folly::detail::EndianInt::little):
        (folly::Endian::swap):
        (folly::Endian::big):
        (folly::Endian::little):
        (folly::BitIterator::bitsPerBlock):
        (folly::BitIterator::BitIterator):
        (folly::BitIterator::bitOffset const):
        (folly::BitIterator::advanceToNextBlock):
        (folly::BitIterator::operator=):
        (folly::BitIterator::advanceInBlock):
        (folly::BitIterator::dereference const):
        (folly::BitIterator::advance):
        (folly::BitIterator::increment):
        (folly::BitIterator::decrement):
        (folly::BitIterator::equal const):
        (folly::BitIterator::distance_to const):
        (folly::makeBitIterator):
        (folly::loadUnaligned):
        (folly::storeUnaligned):
        * StitchMarker/folly/folly/CPortability.h: Added.
        * StitchMarker/folly/folly/CallOnce.h: Added.
        (folly::call_once):
        (folly::call_once_impl_no_inline):
        * StitchMarker/folly/folly/ConcurrentSkipList-inl.h: Added.
        (folly::detail::SkipListNode::create):
        (folly::detail::SkipListNode::destroy):
        (folly::detail::SkipListNode::copyHead):
        (folly::detail::SkipListNode::skip const):
        (folly::detail::SkipListNode::next):
        (folly::detail::SkipListNode::setSkip):
        (folly::detail::SkipListNode::data):
        (folly::detail::SkipListNode::data const):
        (folly::detail::SkipListNode::maxLayer const):
        (folly::detail::SkipListNode::height const):
        (folly::detail::SkipListNode::acquireGuard):
        (folly::detail::SkipListNode::fullyLinked const):
        (folly::detail::SkipListNode::markedForRemoval const):
        (folly::detail::SkipListNode::isHeadNode const):
        (folly::detail::SkipListNode::setIsHeadNode):
        (folly::detail::SkipListNode::setFullyLinked):
        (folly::detail::SkipListNode::setMarkedForRemoval):
        (folly::detail::SkipListNode::SkipListNode):
        (folly::detail::SkipListNode::~SkipListNode):
        (folly::detail::SkipListNode::getFlags const):
        (folly::detail::SkipListNode::setFlags):
        (folly::detail::SkipListRandomHeight::instance):
        (folly::detail::SkipListRandomHeight::getHeight const):
        (folly::detail::SkipListRandomHeight::getSizeLimit const):
        (folly::detail::SkipListRandomHeight::SkipListRandomHeight):
        (folly::detail::SkipListRandomHeight::initLookupTable):
        (folly::detail::SkipListRandomHeight::randomProb):
        * StitchMarker/folly/folly/ConcurrentSkipList.h: Added.
        (folly::ConcurrentSkipList::ConcurrentSkipList):
        (folly::ConcurrentSkipList::create):
        (folly::ConcurrentSkipList::createInstance):
        (folly::ConcurrentSkipList::~ConcurrentSkipList):
        (folly::ConcurrentSkipList::greater):
        (folly::ConcurrentSkipList::less):
        (folly::ConcurrentSkipList::findInsertionPoint):
        (folly::ConcurrentSkipList::size const):
        (folly::ConcurrentSkipList::height const):
        (folly::ConcurrentSkipList::maxLayer const):
        (folly::ConcurrentSkipList::incrementSize):
        (folly::ConcurrentSkipList::find):
        (folly::ConcurrentSkipList::lockNodesForChange):
        (folly::ConcurrentSkipList::addOrGetData):
        (folly::ConcurrentSkipList::remove):
        (folly::ConcurrentSkipList::first const):
        (folly::ConcurrentSkipList::last const):
        (folly::ConcurrentSkipList::okToDelete):
        (folly::ConcurrentSkipList::findInsertionPointGetMaxLayer const):
        (folly::ConcurrentSkipList::findNode const):
        (folly::ConcurrentSkipList::findNodeDownRight const):
        (folly::ConcurrentSkipList::findNodeRightDown const):
        (folly::ConcurrentSkipList::lower_bound const):
        (folly::ConcurrentSkipList::growHeight):
        (folly::ConcurrentSkipList::recycle):
        (folly::detail::csl_iterator::csl_iterator):
        (folly::detail::csl_iterator::nodeSize const):
        (folly::detail::csl_iterator::good const):
        (folly::detail::csl_iterator::increment):
        (folly::detail::csl_iterator::equal const):
        (folly::detail::csl_iterator::dereference const):
        * StitchMarker/folly/folly/Conv.cpp: Added.
        (folly::makeConversionError):
        * StitchMarker/folly/folly/Conv.h: Added.
        (folly::ConversionError::ConversionError):
        (folly::ConversionError::errorCode const):
        (folly::detail::enforceWhitespaceErr):
        (folly::detail::enforceWhitespace):
        (folly::tryTo):
        (folly::to):
        (folly::detail::getLastElement):
        (folly::detail::LastElementImpl::call):
        (folly::detail::digitsEnough):
        (folly::detail::unsafeTelescope128):
        (folly::digits10):
        (folly::uint64ToBufferUnsafe):
        (folly::toAppend):
        (folly::estimateSpaceNeeded):
        (folly::sizeof):
        (folly::detail::estimateSpaceToReserve):
        (folly::detail::reserveInTarget):
        (folly::detail::reserveInTargetDelim):
        (folly::detail::toAppendStrImpl):
        (folly::detail::sizeof):
        (folly::detail::toAppendDelimStrImpl):
        (folly::toAppendFit):
        (folly::toAppendDelim):
        (folly::toAppendDelimFit):
        (folly::toDelim):
        (folly::parseTo):
        (folly::detail::checkConversion):
        (folly::detail::errorValue):
        (folly::detail::decltype):
        (folly::detail::CheckTrailingSpace::operator() const):
        (folly::detail::ReturnUnit::operator() const):
        (folly::detail::parseToWrap):
        (folly::detail::ExpectedErrorType<decltype):
        * StitchMarker/folly/folly/CppAttributes.h: Added.
        * StitchMarker/folly/folly/CpuId.h: Added.
        (folly::CpuId::CpuId):
        * StitchMarker/folly/folly/Demangle.cpp: Added.
        * StitchMarker/folly/folly/Demangle.h: Added.
        (folly::demangle):
        * StitchMarker/folly/folly/Exception.h: Added.
        (folly::throwSystemErrorExplicit):
        (folly::throwSystemError):
        (folly::checkPosixError):
        (folly::checkKernelError):
        (folly::checkUnixError):
        (folly::checkUnixErrorExplicit):
        (folly::checkFopenError):
        (folly::checkFopenErrorExplicit):
        * StitchMarker/folly/folly/ExceptionString.h: Added.
        (folly::exceptionStr):
        * StitchMarker/folly/folly/ExceptionWrapper-inl.h: Added.
        (folly::Class::):
        (folly::exception_wrapper::arg_type_<Ret):
        (folly::exception_wrapper::noop_):
        (folly::exception_wrapper::uninit_type_):
        (folly::exception_wrapper::Buffer::Buffer):
        (folly::exception_wrapper::as_exception_or_null_):
        (folly::exception_wrapper::ExceptionPtr::as_int_):
        (folly::exception_wrapper::ExceptionPtr::has_exception_ const):
        (folly::exception_wrapper::ExceptionPtr::as_exception_ const):
        (folly::exception_wrapper::ExceptionPtr::as_type_ const):
        (folly::exception_wrapper::ExceptionPtr::copy_):
        (folly::exception_wrapper::ExceptionPtr::move_):
        (folly::exception_wrapper::ExceptionPtr::delete_):
        (folly::exception_wrapper::ExceptionPtr::throw_):
        (folly::exception_wrapper::ExceptionPtr::type_):
        (folly::exception_wrapper::ExceptionPtr::get_exception_):
        (folly::exception_wrapper::ExceptionPtr::get_exception_ptr_):
        (folly::exception_wrapper::InPlace<Ex>::copy_):
        (folly::exception_wrapper::InPlace<Ex>::move_):
        (folly::exception_wrapper::InPlace<Ex>::delete_):
        (folly::exception_wrapper::InPlace<Ex>::throw_):
        (folly::exception_wrapper::InPlace<Ex>::type_):
        (folly::exception_wrapper::InPlace<Ex>::get_exception_):
        (folly::exception_wrapper::InPlace<Ex>::get_exception_ptr_):
        (folly::exception_wrapper::SharedPtr::Impl<Ex>::throw_ const):
        (folly::exception_wrapper::SharedPtr::copy_):
        (folly::exception_wrapper::SharedPtr::move_):
        (folly::exception_wrapper::SharedPtr::delete_):
        (folly::exception_wrapper::SharedPtr::throw_):
        (folly::exception_wrapper::SharedPtr::type_):
        (folly::exception_wrapper::SharedPtr::get_exception_):
        (folly::exception_wrapper::SharedPtr::get_exception_ptr_):
        (folly::exception_wrapper::exception_wrapper):
        (folly::vptr_):
        (folly::exception_wrapper::operator=):
        (folly::exception_wrapper::~exception_wrapper):
        (folly::exception_wrapper_detail::dont_slice):
        (folly::FOLLY_REQUIRES_DEF):
        (folly::exception_wrapper::reset):
        (folly::exception_wrapper::what const):
        (folly::exception_wrapper::class_name const):
        (folly::exception_wrapper::throw_exception const):
        (folly::exception_wrapper::HandleReduce::FOLLY_REQUIRES const):
        (folly::exception_wrapper::HandleStdExceptReduce::FOLLY_REQUIRES const):
        (folly::exception_wrapper::handle_):
        (folly::exception_wrapper_detail::catch_fn::operator()):
        (folly::exception_wrapper_detail::catch_):
        (folly::exception_wrapper::with_exception_):
        (folly::exception_wrapper::with_exception):
        (folly::exception_wrapper::with_exception const):
        (folly::exception_wrapper::handle):
        (folly::exception_wrapper::handle const):
        * StitchMarker/folly/folly/ExceptionWrapper.h: Added.
        (folly::exception_wrapper_detail::fold):
        (folly::make_exception_wrapper):
        (folly::operator<<):
        (folly::detail::try_and_catch_):
        (folly::try_and_catch):
        * StitchMarker/folly/folly/Executor.h: Added.
        (folly::Executor::getNumPriorities const):
        (folly::Executor::addPtr):
        (folly::Executor::KeepAlive::KeepAlive):
        (folly::Executor::KeepAlive::reset):
        (folly::Executor::KeepAlive::operator bool const):
        (folly::Executor::KeepAlive::Deleter::operator()):
        (folly::Executor::getKeepAliveToken):
        (folly::Executor::makeKeepAlive):
        * StitchMarker/folly/folly/Expected.h: Added.
        (folly::expected_detail::doEmplaceAssign):
        (folly::expected_detail::getStorageType):
        (folly::expected_detail::Error>):
        (folly::expected_detail::ExpectedUnion::noexcept):
        (folly::expected_detail::ExpectedUnion::ExpectedUnion):
        (folly::expected_detail::ExpectedUnion::operator=):
        (folly::expected_detail::ExpectedUnion::~ExpectedUnion):
        (folly::expected_detail::ExpectedUnion::value):
        (folly::expected_detail::ExpectedUnion::value const):
        (folly::expected_detail::ExpectedUnion::error):
        (folly::expected_detail::ExpectedUnion::error const):
        (folly::expected_detail::CopyConstructible::noexcept):
        (folly::expected_detail::MoveConstructible::noexcept):
        (folly::expected_detail::CopyAssignable::noexcept):
        (folly::expected_detail::MoveAssignable::noexcept):
        (folly::expected_detail::expected_detail_ExpectedHelper::ExpectedHelper::return_):
        (folly::expected_detail::expected_detail_ExpectedHelper::ExpectedHelper::FOLLY_REQUIRES_TRAILING):
        (folly::expected_detail::expected_detail_ExpectedHelper::ExpectedHelper::then_):
        (folly::unexpected):
        (folly::BadExpectedAccess::BadExpectedAccess):
        (folly::FOLLY_REQUIRES_TRAILING):
        (folly::makeUnexpected):
        (folly::operator==):
        (folly::operator<):
        (folly::noexcept):
        (folly::makeExpected):
        * StitchMarker/folly/folly/FBString.h: Added.
        (fbstring_detail::copy_n):
        (fbstring_detail::podFill):
        (fbstring_detail::podCopy):
        (fbstring_detail::podMove):
        (fbstring_detail::assume_unreachable):
        (fbstring_core::fbstring_core):
        (fbstring_core::swap):
        (fbstring_core::data const):
        (fbstring_core::mutableData):
        (fbstring_core::c_str const):
        (fbstring_core::shrink):
        (fbstring_core::reserve):
        (fbstring_core::push_back):
        (fbstring_core::size const):
        (fbstring_core::capacity const):
        (fbstring_core::isShared const):
        (fbstring_core::reset):
        (fbstring_core::RefCounted::getDataOffset):
        (fbstring_core::RefCounted::fromData):
        (fbstring_core::RefCounted::refs):
        (fbstring_core::RefCounted::incrementRefs):
        (fbstring_core::RefCounted::decrementRefs):
        (fbstring_core::RefCounted::create):
        (fbstring_core::RefCounted::reallocate):
        (fbstring_core::category const):
        (fbstring_core::MediumLarge::capacity const):
        (fbstring_core::MediumLarge::setCapacity):
        (fbstring_core::smallSize const):
        (fbstring_core::setSmallSize):
        (fbstring_core<Char>::copySmall):
        (fbstring_core<Char>::copyMedium):
        (fbstring_core<Char>::copyLarge):
        (fbstring_core<Char>::initSmall):
        (fbstring_core<Char>::initMedium):
        (fbstring_core<Char>::initLarge):
        (fbstring_core<Char>::unshare):
        (fbstring_core<Char>::mutableDataLarge):
        (fbstring_core<Char>::reserveLarge):
        (fbstring_core<Char>::reserveMedium):
        (fbstring_core<Char>::reserveSmall):
        (fbstring_core<Char>::expandNoinit):
        (fbstring_core<Char>::shrinkSmall):
        (fbstring_core<Char>::shrinkMedium):
        (fbstring_core<Char>::shrinkLarge):
        (dummy_fbstring_core::dummy_fbstring_core):
        (dummy_fbstring_core::swap):
        (dummy_fbstring_core::data const):
        (dummy_fbstring_core::mutableData):
        (dummy_fbstring_core::shrink):
        (dummy_fbstring_core::expandNoinit):
        (dummy_fbstring_core::push_back):
        (dummy_fbstring_core::size const):
        (dummy_fbstring_core::capacity const):
        (dummy_fbstring_core::isShared const):
        (dummy_fbstring_core::reserve):
        (S>::traitsLength):
        (=):
        (S>::resize):
        (S>::append):
        (S>::assign):
        (S>::getlineImpl):
        (S>::find const):
        (S>::insertImplDiscr):
        (S>::insertImpl):
        (S>::replaceImplDiscr):
        (S>::replaceAliased):
        (S>::replaceImpl):
        (S>::rfind const):
        (S>::find_first_of const):
        (S>::find_last_of const):
        (S>::find_first_not_of const):
        (S>::find_last_not_of const):
        (operator+):
        (operator==):
        (operator!=):
        (operator<):
        (operator>):
        (operator<=):
        (operator>=):
        (swap):
        (operator>>):
        (operator<<):
        * StitchMarker/folly/folly/FBVector.h: Added.
        (folly::fbvector::Impl::Impl):
        (folly::fbvector::Impl::~Impl):
        (folly::fbvector::Impl::D_allocate):
        (folly::fbvector::Impl::swapData):
        (folly::fbvector::Impl::init):
        (folly::fbvector::Impl::set):
        (folly::fbvector::Impl::reset):
        (folly::fbvector::swap):
        (folly::fbvector::M_allocate):
        (folly::fbvector::M_construct):
        (folly::fbvector::S_construct):
        (folly::fbvector::S_construct_a):
        (folly::fbvector::M_uninitialized_fill_n_e):
        (folly::fbvector::D_uninitialized_fill_n_a):
        (folly::fbvector::S_uninitialized_fill_n_a):
        (folly::fbvector::S_uninitialized_fill_n):
        (folly::fbvector::M_uninitialized_copy_e):
        (folly::fbvector::M_uninitialized_move_e):
        (folly::fbvector::D_uninitialized_copy_a):
        (folly::fbvector::D_uninitialized_move_a):
        (folly::fbvector::S_uninitialized_copy_a):
        (folly::fbvector::S_uninitialized_copy):
        (folly::fbvector::S_uninitialized_copy_bits):
        (folly::fbvector::S_copy_n):
        (folly::fbvector::M_relocate):
        (folly::fbvector::relocate_move):
        (folly::fbvector::relocate_move_or_memcpy):
        (folly::fbvector::relocate_move_or_copy):
        (folly::fbvector::fbvector):
        (folly::fbvector::operator=):
        (folly::fbvector::assign):
        (folly::fbvector::moveFrom):
        (folly::fbvector::dataIsInternalAndNotVT):
        (folly::fbvector::dataIsInternal):
        (folly::fbvector::resize):
        (folly::fbvector::reserve):
        (folly::fbvector::reserve_in_place):
        (folly::fbvector::operator[]):
        (folly::fbvector::operator[] const):
        (folly::fbvector::at const):
        (folly::fbvector::at):
        (folly::fbvector::front):
        (folly::fbvector::front const):
        (folly::fbvector::back):
        (folly::fbvector::back const):
        (folly::fbvector::emplace_back):
        (folly::fbvector::push_back):
        (folly::fbvector::pop_back):
        (folly::fbvector::computePushBackCapacity const):
        (folly::fbvector::erase):
        (folly::fbvector::isValid):
        (folly::fbvector::computeInsertCapacity):
        (folly::fbvector::make_window):
        (folly::fbvector::wrap_frame):
        (folly::fbvector::insert_use_fresh):
        (folly::fbvector::do_real_insert):
        (folly::fbvector::emplace):
        (folly::fbvector::insert):
        (folly::fbvector::operator== const):
        (folly::fbvector::operator!= const):
        (folly::fbvector::operator< const):
        (folly::fbvector::operator> const):
        (folly::fbvector::operator<= const):
        (folly::fbvector::operator>= const):
        (folly::Allocator>::emplace_back_aux):
        (folly::compactResize):
        (folly::relinquish):
        (folly::attach):
        * StitchMarker/folly/folly/File.h: Added.
        (folly::File::fd const):
        (folly::File::operator bool const):
        * StitchMarker/folly/folly/FileUtil.h: Added.
        (folly::readFile):
        (folly::writeFile):
        * StitchMarker/folly/folly/Foreach.h: Added.
        (folly::detail::notThereYet):
        (folly::detail::downTo):
        * StitchMarker/folly/folly/Format-inl.h: Added.
        (folly::detail::uintToHex):
        (folly::detail::uintToHexLower):
        (folly::detail::uintToHexUpper):
        (folly::detail::uintToOctal):
        (folly::detail::uintToBinary):
        (folly::>::BaseFormatter):
        (folly::>::operator const):
        (folly::writeTo):
        (folly::format_value::formatString):
        (folly::format_value::formatNumber):
        (folly::format_value::formatFormatter):
        (folly::FormatValue<bool>::FormatValue):
        (folly::FormatValue<bool>::format const):
        (folly::FormatValue<double>::FormatValue):
        (folly::FormatValue<double>::format const):
        (folly::FormatValue<float>::FormatValue):
        (folly::FormatValue<float>::format const):
        (folly::FormatValue<std::nullptr_t>::FormatValue):
        (folly::FormatValue<std::nullptr_t>::format const):
        (folly::TryFormatValue::formatOrFail):
        (folly::detail::KeyFromStringPiece<std::string>::convert):
        (folly::detail::KeyFromStringPiece<fbstring>::convert):
        (folly::detail::KeyFromStringPiece<StringPiece>::convert):
        (folly::detail::KeyableTraitsAssoc::at):
        (folly::toAppend):
        * StitchMarker/folly/folly/Format.cpp: Added.
        (folly::FormatValue<double>::formatHelper const):
        (folly::FormatArg::initSlow):
        (folly::FormatArg::validate const):
        (folly::detail::insertThousandsGroupingUnsafe):
        * StitchMarker/folly/folly/Format.h: Added.
        (folly::BaseFormatter::appendTo const):
        (folly::BaseFormatter::str const):
        (folly::BaseFormatter::fbstr const):
        (folly::BaseFormatter::asDerived const):
        (folly::BaseFormatter::doFormatFrom const):
        (folly::BaseFormatter::doFormat const):
        (folly::BaseFormatter::getSizeArgFrom const):
        (folly::BaseFormatter::getValue const):
        (folly::BaseFormatter::getSizeArg const):
        (folly::BaseFormatter::getFormatValue const):
        (folly::Formatter::Formatter):
        (folly::Formatter::doFormatArg const):
        (folly::operator<<):
        (folly::sformat):
        (folly::vformat):
        (folly::svformat):
        (folly::detail::DefaultValueWrapper::DefaultValueWrapper):
        (folly::defaulted):
        (folly::format):
        (folly::sformatChecked):
        (folly::vformatChecked):
        (folly::svformatChecked):
        (folly::formatChecked):
        * StitchMarker/folly/folly/FormatArg.h: Added.
        (folly::BadFormatArg::BadFormatArg):
        (folly::FormatArg::FormatArg):
        (folly::FormatArg::enforce const):
        (folly::FormatArg::keyEmpty const):
        (folly::FormatArg::setNextIntKey):
        (folly::FormatArg::setNextKey):
        (folly::FormatArg::errorStr const):
        (folly::FormatArg::error const):
        (folly::FormatArg::splitKey):
        (folly::FormatArg::doSplitKey):
        (folly::FormatArg::splitIntKey):
        * StitchMarker/folly/folly/FormatTables.cpp: Added.
        * StitchMarker/folly/folly/FormatTraits.h: Added.
        (folly::detail::IndexableTraitsSeq::at):
        (folly::detail::IndexableTraitsAssoc::at):
        * StitchMarker/folly/folly/Function.h: Added.
        (folly::detail::function::isNullPtrFn):
        (folly::detail::function::uninitNoop):
        (folly::detail::function::FunctionTraits<ReturnType):
        (folly::detail::function::execSmall):
        (folly::detail::function::execBig):
        (folly::detail::function::invoke):
        (folly::operator==):
        (folly::operator!=):
        (folly::FunctionRef<ReturnType):
        * StitchMarker/folly/folly/Hash.h: Added.
        (folly::hash::hash_128_to_64):
        (folly::hash::hash_combine_generic):
        (folly::hash::hash_range):
        (folly::hash::StdHasher::hash):
        (folly::hash::hash_combine):
        (folly::hash::twang_mix64):
        (folly::hash::twang_unmix64):
        (folly::hash::twang_32from64):
        (folly::hash::jenkins_rev_mix32):
        (folly::hash::jenkins_rev_unmix32):
        (folly::hash::fnv32):
        (folly::hash::fnv32_buf):
        (folly::hash::fnv64):
        (folly::hash::fnv64_buf):
        (folly::hash::fnva64_buf):
        (folly::hash::fnva64):
        (folly::hash::hsieh_hash32_buf):
        (folly::hash::hsieh_hash32):
        (folly::hash::hsieh_hash32_str):
        (folly::Hash::operator() const):
        (folly::hasher<bool>::operator() const):
        (folly::hasher<int32_t>::operator() const):
        (folly::hasher<uint32_t>::operator() const):
        (folly::hasher<int16_t>::operator() const):
        (folly::hasher<uint16_t>::operator() const):
        (folly::hasher<int8_t>::operator() const):
        (folly::hasher<uint8_t>::operator() const):
        (folly::hasher<char>::operator() const):
        (folly::hasher<int64_t>::operator() const):
        (folly::hasher<uint64_t>::operator() const):
        (folly::hasher<std::string>::operator() const):
        (folly::TupleHasher::operator() const):
        * StitchMarker/folly/folly/Indestructible.h: Added.
        * StitchMarker/folly/folly/IndexedMemPool.h: Added.
        (folly::IndexedMemPoolTraits::eagerRecycle):
        (folly::IndexedMemPoolTraits::initialize):
        (folly::IndexedMemPoolTraits::cleanup):
        (folly::IndexedMemPoolTraits::onAllocate):
        (folly::IndexedMemPoolTraits::onRecycle):
        (folly::IndexedMemPool::maxIndexForCapacity):
        (folly::IndexedMemPool::capacityForMaxIndex):
        (folly::IndexedMemPool::IndexedMemPool):
        (folly::IndexedMemPool::~IndexedMemPool):
        (folly::IndexedMemPool::capacity):
        (folly::IndexedMemPool::maxAllocatedIndex const):
        (folly::IndexedMemPool::allocIndex):
        (folly::IndexedMemPool::allocElem):
        (folly::IndexedMemPool::recycleIndex):
        (folly::IndexedMemPool::operator[]):
        (folly::IndexedMemPool::operator[] const):
        (folly::IndexedMemPool::locateElem const):
        (folly::IndexedMemPool::isAllocated const):
        (folly::IndexedMemPool::Slot::Slot):
        (folly::IndexedMemPool::TaggedPtr::size const):
        (folly::IndexedMemPool::TaggedPtr::withSize const):
        (folly::IndexedMemPool::TaggedPtr::withSizeIncr const):
        (folly::IndexedMemPool::TaggedPtr::withSizeDecr const):
        (folly::IndexedMemPool::TaggedPtr::withIdx const):
        (folly::IndexedMemPool::TaggedPtr::withEmpty const):
        (folly::IndexedMemPool::slotIndex const):
        (folly::IndexedMemPool::slot):
        (folly::IndexedMemPool::slot const):
        (folly::IndexedMemPool::globalPush):
        (folly::IndexedMemPool::localPush):
        (folly::IndexedMemPool::globalPop):
        (folly::IndexedMemPool::localPop):
        (folly::IndexedMemPool::localHead):
        (folly::IndexedMemPool::markAllocated):
        (folly::detail::IndexedMemPoolRecycler::IndexedMemPoolRecycler):
        (folly::detail::IndexedMemPoolRecycler::operator() const):
        * StitchMarker/folly/folly/Likely.h: Added.
        * StitchMarker/folly/folly/LockTraits.h: Added.
        (folly::lock_shared_or_unique):
        (folly::try_lock_shared_or_unique_for):
        (folly::unlock_shared_or_unique):
        (folly::LockPolicyExclusive::lock):
        (folly::LockPolicyExclusive::try_lock_for):
        (folly::LockPolicyExclusive::unlock):
        (folly::LockPolicyShared::lock):
        (folly::LockPolicyShared::try_lock_for):
        (folly::LockPolicyShared::unlock):
        (folly::LockPolicyShareable::lock):
        (folly::LockPolicyShareable::try_lock_for):
        (folly::LockPolicyShareable::unlock):
        (folly::LockPolicyUpgrade::lock):
        (folly::LockPolicyUpgrade::try_lock_for):
        (folly::LockPolicyUpgrade::unlock):
        (folly::LockPolicyFromUpgradeToExclusive::lock):
        (folly::LockPolicyFromUpgradeToExclusive::try_lock_for):
        (folly::LockPolicyFromExclusiveToUpgrade::lock):
        (folly::LockPolicyFromExclusiveToUpgrade::try_lock_for):
        (folly::LockPolicyFromUpgradeToShared::lock):
        (folly::LockPolicyFromUpgradeToShared::try_lock_for):
        (folly::LockPolicyFromExclusiveToShared::lock):
        (folly::LockPolicyFromExclusiveToShared::try_lock_for):
        * StitchMarker/folly/folly/Malloc.h: Added.
        * StitchMarker/folly/folly/Memory.h: Added.
        (folly::make_unique):
        (folly::f):
        (folly::to_shared_ptr):
        (folly::to_weak_ptr):
        (folly::detail::SysFree):
        (folly::allocate_sys_buffer):
        (folly::SysAlloc::allocate):
        (folly::SysAlloc::deallocate):
        (folly::StlAllocator::StlAllocator):
        (folly::StlAllocator::allocate):
        (folly::StlAllocator::deallocate):
        (folly::StlAllocator::max_size const):
        (folly::StlAllocator::address const):
        (folly::StlAllocator::construct):
        (folly::StlAllocator::destroy):
        (folly::StlAllocator::alloc const):
        (folly::StlAllocator::operator!= const):
        (folly::StlAllocator::operator== const):
        (folly::rebind_allocator):
        (folly::allocator_delete::allocator_delete):
        (folly::allocator_delete::get_allocator const):
        (folly::allocator_delete::operator() const):
        (folly::make_stl_allocator):
        (folly::allocate_unique):
        (folly::allocate_shared):
        * StitchMarker/folly/folly/MicroSpinLock.h: Added.
        (folly::MicroSpinLock::init):
        (folly::MicroSpinLock::try_lock):
        (folly::MicroSpinLock::lock):
        (folly::MicroSpinLock::unlock):
        (folly::MicroSpinLock::payload):
        (folly::MicroSpinLock::cas):
        * StitchMarker/folly/folly/Portability.h: Added.
        * StitchMarker/folly/folly/Preprocessor.h: Added.
        * StitchMarker/folly/folly/ProducerConsumerQueue.h: Added.
        (folly::ProducerConsumerQueue::ProducerConsumerQueue):
        (folly::ProducerConsumerQueue::~ProducerConsumerQueue):
        (folly::ProducerConsumerQueue::write):
        (folly::ProducerConsumerQueue::read):
        (folly::ProducerConsumerQueue::frontPtr):
        (folly::ProducerConsumerQueue::popFront):
        (folly::ProducerConsumerQueue::isEmpty const):
        (folly::ProducerConsumerQueue::isFull const):
        (folly::ProducerConsumerQueue::sizeGuess const):
        * StitchMarker/folly/folly/RWSpinLock.h: Added.
        (folly::RWSpinLock::RWSpinLock):
        (folly::RWSpinLock::lock):
        (folly::RWSpinLock::unlock):
        (folly::RWSpinLock::lock_shared):
        (folly::RWSpinLock::unlock_shared):
        (folly::RWSpinLock::unlock_and_lock_shared):
        (folly::RWSpinLock::lock_upgrade):
        (folly::RWSpinLock::unlock_upgrade):
        (folly::RWSpinLock::unlock_upgrade_and_lock):
        (folly::RWSpinLock::unlock_upgrade_and_lock_shared):
        (folly::RWSpinLock::unlock_and_lock_upgrade):
        (folly::RWSpinLock::try_lock):
        (folly::RWSpinLock::try_lock_shared):
        (folly::RWSpinLock::try_unlock_upgrade_and_lock):
        (folly::RWSpinLock::try_lock_upgrade):
        (folly::RWSpinLock::bits const):
        (folly::RWSpinLock::ReadHolder::ReadHolder):
        (folly::RWSpinLock::ReadHolder::operator=):
        (folly::RWSpinLock::ReadHolder::~ReadHolder):
        (folly::RWSpinLock::ReadHolder::reset):
        (folly::RWSpinLock::ReadHolder::swap):
        (folly::RWSpinLock::UpgradedHolder::UpgradedHolder):
        (folly::RWSpinLock::UpgradedHolder::operator =):
        (folly::RWSpinLock::UpgradedHolder::~UpgradedHolder):
        (folly::RWSpinLock::UpgradedHolder::reset):
        (folly::RWSpinLock::UpgradedHolder::swap):
        (folly::RWSpinLock::WriteHolder::WriteHolder):
        (folly::RWSpinLock::WriteHolder::operator =):
        (folly::RWSpinLock::WriteHolder::~WriteHolder):
        (folly::RWSpinLock::WriteHolder::reset):
        (folly::RWSpinLock::WriteHolder::swap):
        (folly::detail::RWTicketIntTrait<64>::make128):
        (folly::detail::RWTicketIntTrait<64>::fromInteger):
        (folly::detail::RWTicketIntTrait<64>::toInteger):
        (folly::detail::RWTicketIntTrait<64>::addParallel):
        (folly::detail::RWTicketIntTrait<32>::make128):
        (folly::detail::RWTicketIntTrait<32>::fromInteger):
        (folly::detail::RWTicketIntTrait<32>::toInteger):
        (folly::detail::RWTicketIntTrait<32>::addParallel):
        (folly::RWTicketSpinLockT::load_acquire):
        (folly::RWTicketSpinLockT::store_release):
        (folly::RWTicketSpinLockT::RWTicketSpinLockT):
        (folly::RWTicketSpinLockT::lock):
        (folly::RWTicketSpinLockT::try_lock):
        (folly::RWTicketSpinLockT::writeLockAggressive):
        (folly::RWTicketSpinLockT::writeLockNice):
        (folly::RWTicketSpinLockT::unlock_and_lock_shared):
        (folly::RWTicketSpinLockT::unlock):
        (folly::RWTicketSpinLockT::lock_shared):
        (folly::RWTicketSpinLockT::try_lock_shared):
        (folly::RWTicketSpinLockT::unlock_shared):
        (folly::RWTicketSpinLockT::ReadHolder::ReadHolder):
        (folly::RWTicketSpinLockT::ReadHolder::~ReadHolder):
        (folly::RWTicketSpinLockT::ReadHolder::reset):
        (folly::RWTicketSpinLockT::ReadHolder::swap):
        (folly::RWTicketSpinLockT::WriteHolder::WriteHolder):
        (folly::RWTicketSpinLockT::WriteHolder::~WriteHolder):
        (folly::RWTicketSpinLockT::WriteHolder::reset):
        (folly::RWTicketSpinLockT::WriteHolder::swap):
        * StitchMarker/folly/folly/Random-inl.h: Added.
        (folly::detail::SeedData::SeedData):
        * StitchMarker/folly/folly/Random.cpp: Added.
        (folly::Random::secureRandom):
        (folly::ThreadLocalPRNG::LocalInstancePRNG::LocalInstancePRNG):
        (folly::ThreadLocalPRNG::ThreadLocalPRNG):
        (folly::ThreadLocalPRNG::getImpl):
        * StitchMarker/folly/folly/Random.h: Added.
        (folly::ThreadLocalPRNG::operator()):
        (folly::ThreadLocalPRNG::min):
        (folly::ThreadLocalPRNG::max):
        (folly::Random::secureRandom):
        (folly::Random::rand32):
        (folly::Random::rand64):
        (folly::Random::oneIn):
        (folly::Random::randDouble01):
        (folly::Random::randDouble):
        (folly::randomNumberSeed):
        * StitchMarker/folly/folly/Range.h: Added.
        (folly::detail::value_before):
        (folly::Range::Range):
        (folly::Range::clear):
        (folly::Range::assign):
        (folly::Range::reset):
        (folly::Range::size const):
        (folly::Range::walk_size const):
        (folly::Range::empty const):
        (folly::Range::data const):
        (folly::Range::start const):
        (folly::Range::begin const):
        (folly::Range::end const):
        (folly::Range::cbegin const):
        (folly::Range::cend const):
        (folly::Range::front):
        (folly::Range::back):
        (folly::Range::front const):
        (folly::Range::back const):
        (folly::Range::str const):
        (folly::Range::toString const):
        (folly::Range::fbstr const):
        (folly::Range::toFbstring const):
        (folly::Range::castToConst const):
        (folly::Range::compare const):
        (folly::Range::operator[]):
        (folly::Range::operator[] const):
        (folly::Range::at):
        (folly::Range::at const):
        (folly::Range::hash const):
        (folly::Range::advance):
        (folly::Range::subtract):
        (folly::Range::subpiece const):
        (folly::Range::uncheckedAdvance):
        (folly::Range::uncheckedSubtract):
        (folly::Range::uncheckedSubpiece const):
        (folly::Range::pop_front):
        (folly::Range::pop_back):
        (folly::Range::find const):
        (folly::Range::rfind const):
        (folly::Range::find_first_of const):
        (folly::Range::contains const):
        (folly::Range::swap):
        (folly::Range::startsWith const):
        (folly::Range::endsWith const):
        (folly::Range::equals const):
        (folly::Range::erase):
        (folly::Range::removePrefix):
        (folly::Range::removeSuffix):
        (folly::Range::replaceAt):
        (folly::Range::replaceAll):
        (folly::Range::split_step):
        (folly::swap):
        (folly::range):
        (folly::operator<<):
        (folly::operator==):
        (folly::operator<):
        (folly::operator>):
        (folly::operator<=):
        (folly::operator>=):
        (folly::qfind):
        (folly::detail::qfind_first_byte_of):
        (folly::qfind_first_of):
        (folly::AsciiCaseSensitive::operator() const):
        (folly::AsciiCaseInsensitive::operator() const):
        (folly::rfind):
        (folly::hasher<folly::Range<T::operator() const):
        * StitchMarker/folly/folly/ScopeGuard.cpp: Added.
        * StitchMarker/folly/folly/ScopeGuard.h: Added.
        (folly::ScopeGuardImpl::noexcept):
        (folly::ScopeGuardImpl::ScopeGuardImpl):
        (folly::ScopeGuardImpl::function_):
        (folly::noexcept):
        (folly::detail::ScopeGuardForNewException::ScopeGuardForNewException):
        (folly::detail::ScopeGuardForNewException::noexcept):
        (folly::detail::operator+):
        * StitchMarker/folly/folly/SharedMutex.cpp: Added.
        * StitchMarker/folly/folly/SharedMutex.h: Added.
        (folly::SharedMutexImpl::~SharedMutexImpl):
        (folly::SharedMutexImpl::lock):
        (folly::SharedMutexImpl::try_lock):
        (folly::SharedMutexImpl::try_lock_for):
        (folly::SharedMutexImpl::try_lock_until):
        (folly::SharedMutexImpl::unlock):
        (folly::SharedMutexImpl::lock_shared):
        (folly::SharedMutexImpl::try_lock_shared):
        (folly::SharedMutexImpl::try_lock_shared_for):
        (folly::SharedMutexImpl::try_lock_shared_until):
        (folly::SharedMutexImpl::unlock_shared):
        (folly::SharedMutexImpl::unlock_and_lock_shared):
        (folly::SharedMutexImpl::lock_upgrade):
        (folly::SharedMutexImpl::try_lock_upgrade):
        (folly::SharedMutexImpl::try_lock_upgrade_for):
        (folly::SharedMutexImpl::try_lock_upgrade_until):
        (folly::SharedMutexImpl::unlock_upgrade):
        (folly::SharedMutexImpl::unlock_upgrade_and_lock):
        (folly::SharedMutexImpl::unlock_upgrade_and_lock_shared):
        (folly::SharedMutexImpl::unlock_and_lock_upgrade):
        (folly::SharedMutexImpl::WaitForever::canBlock):
        (folly::SharedMutexImpl::WaitForever::canTimeOut):
        (folly::SharedMutexImpl::WaitForever::shouldTimeOut):
        (folly::SharedMutexImpl::WaitForever::doWait):
        (folly::SharedMutexImpl::WaitNever::canBlock):
        (folly::SharedMutexImpl::WaitNever::canTimeOut):
        (folly::SharedMutexImpl::WaitNever::shouldTimeOut):
        (folly::SharedMutexImpl::WaitNever::doWait):
        (folly::SharedMutexImpl::WaitForDuration::WaitForDuration):
        (folly::SharedMutexImpl::WaitForDuration::deadline):
        (folly::SharedMutexImpl::WaitForDuration::canBlock):
        (folly::SharedMutexImpl::WaitForDuration::canTimeOut):
        (folly::SharedMutexImpl::WaitForDuration::shouldTimeOut):
        (folly::SharedMutexImpl::WaitForDuration::doWait):
        (folly::SharedMutexImpl::WaitUntilDeadline::canBlock):
        (folly::SharedMutexImpl::WaitUntilDeadline::canTimeOut):
        (folly::SharedMutexImpl::WaitUntilDeadline::shouldTimeOut):
        (folly::SharedMutexImpl::WaitUntilDeadline::doWait):
        (folly::SharedMutexImpl::lockExclusiveImpl):
        (folly::SharedMutexImpl::waitForZeroBits):
        (folly::SharedMutexImpl::yieldWaitForZeroBits):
        (folly::SharedMutexImpl::futexWaitForZeroBits):
        (folly::SharedMutexImpl::wakeRegisteredWaiters):
        (folly::SharedMutexImpl::wakeRegisteredWaitersImpl):
        (folly::SharedMutexImpl::futexWakeAll):
        (folly::SharedMutexImpl::deferredReader):
        (folly::SharedMutexImpl::tokenfulSlotValue):
        (folly::SharedMutexImpl::tokenlessSlotValue):
        (folly::SharedMutexImpl::slotValueIsThis):
        (folly::SharedMutexImpl::applyDeferredReaders):
        (folly::SharedMutexImpl::lockSharedImpl):
        (folly::SharedMutexImpl::cleanupTokenlessSharedDeferred):
        (folly::SharedMutexImpl::tryUnlockSharedDeferred):
        (folly::SharedMutexImpl::unlockSharedInline):
        (folly::SharedMutexImpl::lockUpgradeImpl):
        (folly::SharedMutexImpl::ReadHolder::ReadHolder):
        (folly::SharedMutexImpl::ReadHolder::~ReadHolder):
        (folly::SharedMutexImpl::ReadHolder::unlock):
        (folly::SharedMutexImpl::UpgradeHolder::UpgradeHolder):
        (folly::SharedMutexImpl::UpgradeHolder::~UpgradeHolder):
        (folly::SharedMutexImpl::UpgradeHolder::unlock):
        (folly::SharedMutexImpl::WriteHolder::WriteHolder):
        (folly::SharedMutexImpl::WriteHolder::~WriteHolder):
        (folly::SharedMutexImpl::WriteHolder::unlock):
        (folly::SharedMutexImpl::acquireRead):
        (folly::SharedMutexImpl::acquireReadWrite):
        (folly::SharedMutexImpl::releaseRead):
        (folly::SharedMutexImpl::releaseReadWrite):
        (folly::tryUnlockTokenlessSharedDeferred):
        (folly::lockSharedImpl):
        * StitchMarker/folly/folly/Singleton-inl.h: Added.
        (folly::detail::SingletonHolder<T>::singleton):
        (folly::detail::SingletonHolder<T>::registerSingleton):
        (folly::detail::SingletonHolder<T>::registerSingletonMock):
        (folly::detail::SingletonHolder<T>::get):
        (folly::detail::SingletonHolder<T>::get_weak):
        (folly::detail::SingletonHolder<T>::try_get):
        (folly::detail::SingletonHolder<T>::try_get_fast):
        (folly::detail::SingletonHolder<T>::hasLiveInstance):
        (folly::detail::SingletonHolder<T>::preDestroyInstance):
        (folly::detail::SingletonHolder<T>::destroyInstance):
        (folly::detail::SingletonHolder<T>::SingletonHolder):
        (folly::detail::SingletonHolder<T>::creationStarted):
        (folly::detail::SingletonHolder<T>::createInstance):
        * StitchMarker/folly/folly/Singleton.h: Added.
        (folly::detail::TypeDescriptor::TypeDescriptor):
        (folly::detail::TypeDescriptor::operator=):
        (folly::detail::TypeDescriptor::name const):
        (folly::detail::TypeDescriptor::operator== const):
        (folly::detail::TypeDescriptorHasher::operator() const):
        (folly::detail::SingletonHolderBase::SingletonHolderBase):
        (folly::detail::SingletonHolderBase::type const):
        (folly::SingletonVault::ScopedExpunger::ScopedExpunger):
        (folly::SingletonVault::ScopedExpunger::~ScopedExpunger):
        (folly::SingletonVault::ScopedExpunger::expunge):
        (folly::SingletonVault::SingletonVault):
        (folly::SingletonVault::registeredSingletonCount const):
        (folly::SingletonVault::livingSingletonCount const):
        (folly::SingletonVault::singleton):
        (folly::SingletonVault::stackTraceGetter):
        (folly::SingletonVault::setType):
        (folly::SingletonVault::stateCheck):
        (folly::LeakySingleton::LeakySingleton):
        (folly::LeakySingleton::get):
        (folly::LeakySingleton::make_mock):
        (folly::LeakySingleton::Entry::Entry):
        (folly::LeakySingleton::entryInstance):
        (folly::LeakySingleton::instance):
        (folly::LeakySingleton::createInstance):
        * StitchMarker/folly/folly/SingletonThreadLocal.h: Added.
        (folly::SingletonThreadLocal::SingletonThreadLocal):
        (folly::SingletonThreadLocal::get):
        (folly::SingletonThreadLocal::localPtr):
        (folly::SingletonThreadLocal::Wrapper::Wrapper):
        (folly::SingletonThreadLocal::Wrapper::~Wrapper):
        (folly::SingletonThreadLocal::Wrapper::operator*):
        * StitchMarker/folly/folly/String-inl.h: Added.
        (folly::cEscape):
        (folly::cUnescape):
        (folly::uriEscape):
        (folly::uriUnescape):
        (folly::detail::delimSize):
        (folly::detail::atDelim):
        (folly::detail::delimFront):
        (folly::detail::internalSplit):
        (folly::detail::prepareDelim):
        (folly::detail::splitFixed):
        (folly::split):
        (folly::splitTo):
        (folly::sizeof):
        (folly::detail::internalJoinAppend):
        (folly::detail::internalJoin):
        (folly::join):
        (folly::backslashify):
        (folly::humanify):
        (folly::hexlify):
        (folly::unhexlify):
        (folly::hexDump):
        * StitchMarker/folly/folly/String.cpp: Added.
        (folly::is_oddspace):
        (folly::ltrimWhitespace):
        (folly::rtrimWhitespace):
        (folly::stringPrintf):
        (folly::stringVPrintf):
        (folly::stringAppendf):
        (folly::stringVAppendf):
        (folly::prettyPrint):
        (folly::prettyToDouble):
        (folly::hexDump):
        (folly::errnoStr):
        (folly::toLowerAscii):
        (folly::detail::hexDumpLine):
        (folly::stripLeftMargin):
        * StitchMarker/folly/folly/String.h: Added.
        (folly::toStdString):
        (folly::cEscape):
        (folly::cUnescape):
        (folly::uriEscape):
        (folly::uriUnescape):
        (folly::backslashify):
        (folly::humanify):
        (folly::hexlify):
        (folly::unhexlify):
        (folly::decltype):
        (folly::join):
        (folly::trimWhitespace):
        (folly::skipWhitespace):
        (folly::toLowerAscii):
        (folly::UTF8Range::UTF8Range):
        * StitchMarker/folly/folly/Synchronized.h: Added.
        (folly::Synchronized::Synchronized):
        (folly::Synchronized::noexcept):
        (folly::Synchronized::operator=):
        (folly::Synchronized::contextualLock):
        (folly::Synchronized::contextualLock const):
        (folly::Synchronized::contextualRLock const):
        (folly::Synchronized::operator->):
        (folly::Synchronized::operator-> const):
        (folly::Synchronized::timedAcquire):
        (folly::Synchronized::timedAcquire const):
        (folly::Synchronized::asConst const):
        (folly::Synchronized::swap):
        (folly::Synchronized::copy const):
        (folly::LockedPtrBase::~LockedPtrBase):
        (folly::LockedPtrBase::unlock):
        (folly::LockedPtrBase::LockedPtrBase):
        (folly::LockedPtrBase::getSynchronized):
        (folly::LockedPtrBase::releaseLock):
        (folly::LockedPtrBase::reacquireLock):
        (folly::ScopedUnlocker::ScopedUnlocker):
        (folly::ScopedUnlocker::~ScopedUnlocker):
        (folly::ScopedUnlocker::getSynchronized const):
        (folly::LockedPtr::LockedPtr):
        (folly::LockedPtr::~LockedPtr):
        (folly::LockedPtr::isNull const):
        (folly::LockedPtr::operator bool const):
        (folly::LockedPtr::operator-> const):
        (folly::LockedPtr::operator* const):
        (folly::LockedPtr::scopedUnlock):
        (folly::LockedPtr::moveFromUpgradeToWrite):
        (folly::LockedPtr::moveFromWriteToUpgrade):
        (folly::LockedPtr::moveFromUpgradeToRead):
        (folly::LockedPtr::moveFromWriteToRead):
        (folly::LockedGuardPtr::LockedGuardPtr):
        (folly::LockedGuardPtr::~LockedGuardPtr):
        (folly::LockedGuardPtr::operator-> const):
        (folly::LockedGuardPtr::operator* const):
        (folly::acquireLocked):
        (folly::acquireLockedPair):
        (folly::swap):
        * StitchMarker/folly/folly/ThreadId.h: Added.
        (folly::getCurrentThreadID):
        (folly::getOSThreadID):
        * StitchMarker/folly/folly/ThreadLocal.h: Added.
        (folly::ThreadLocal::ThreadLocal):
        (folly::ThreadLocal::get const):
        (folly::ThreadLocal::operator-> const):
        (folly::ThreadLocal::operator* const):
        (folly::ThreadLocal::reset):
        (folly::ThreadLocal::accessAllThreads const):
        (folly::ThreadLocal::makeTlp const):
        (folly::ThreadLocalPtr::ThreadLocalPtr):
        (folly::ThreadLocalPtr::operator=):
        (folly::ThreadLocalPtr::~ThreadLocalPtr):
        (folly::ThreadLocalPtr::get const):
        (folly::ThreadLocalPtr::operator-> const):
        (folly::ThreadLocalPtr::operator* const):
        (folly::ThreadLocalPtr::release):
        (folly::ThreadLocalPtr::reset):
        (folly::ThreadLocalPtr::operator bool const):
        (folly::ThreadLocalPtr::Accessor::Iterator::increment):
        (folly::ThreadLocalPtr::Accessor::Iterator::decrement):
        (folly::ThreadLocalPtr::Accessor::Iterator::dereference const):
        (folly::ThreadLocalPtr::Accessor::Iterator::equal const):
        (folly::ThreadLocalPtr::Accessor::Iterator::Iterator):
        (folly::ThreadLocalPtr::Accessor::Iterator::valid const):
        (folly::ThreadLocalPtr::Accessor::Iterator::incrementToValid):
        (folly::ThreadLocalPtr::Accessor::Iterator::decrementToValid):
        (folly::ThreadLocalPtr::Accessor::~Accessor):
        (folly::ThreadLocalPtr::Accessor::begin const):
        (folly::ThreadLocalPtr::Accessor::end const):
        (folly::ThreadLocalPtr::Accessor::Accessor):
        (folly::ThreadLocalPtr::Accessor::release):
        (folly::ThreadLocalPtr::accessAllThreads const):
        (folly::ThreadLocalPtr::destroy):
        * StitchMarker/folly/folly/Traits.h: Added.
        (folly::Ignore::Ignore):
        (folly::Ignore::operator= const):
        (folly::Bools::size):
        (folly::detail::is_negative_impl::check):
        (folly::detail::less_than_impl):
        (folly::detail::greater_than_impl):
        (folly::is_negative):
        (folly::is_non_positive):
        (folly::is_positive):
        (folly::is_non_negative):
        (folly::less_than):
        (folly::greater_than):
        * StitchMarker/folly/folly/UncaughtExceptions.h: Added.
        * StitchMarker/folly/folly/Unit.h: Added.
        (folly::Unit::operator== const):
        (folly::Unit::operator!= const):
        * StitchMarker/folly/folly/Utility.h: Added.
        (folly::noexcept):
        (folly::in_place):
        (folly::in_place_type):
        (folly::in_place_index):
        * StitchMarker/folly/folly/concurrency/CacheLocality.cpp: Added.
        (folly::getSystemLocalityInfo):
        (folly::CacheLocality::system<std::atomic>):
        (folly::parseLeadingNumber):
        (folly::CacheLocality::readFromSysfsTree):
        (folly::CacheLocality::readFromSysfs):
        (folly::CacheLocality::uniform):
        (folly::Getcpu::resolveVdsoFunc):
        (folly::SimpleAllocator::SimpleAllocator):
        (folly::sz_):
        (folly::SimpleAllocator::~SimpleAllocator):
        (folly::SimpleAllocator::allocateHard):
        * StitchMarker/folly/folly/concurrency/CacheLocality.h: Added.
        (folly::SequentialThreadId::get):
        (folly::HashingThreadId::get):
        (folly::FallbackGetcpu::getcpu):
        (folly::AccessSpreader::current):
        (folly::AccessSpreader::pickGetcpuFunc):
        (folly::AccessSpreader::degenerateGetcpu):
        (folly::AccessSpreader::initialize):
        (folly::SimpleAllocator::allocate):
        (folly::SimpleAllocator::deallocate):
        (folly::CoreAllocator::Allocator::sizeClass):
        (folly::CoreAllocator::Allocator::allocate):
        (folly::CoreAllocator::Allocator::deallocate):
        (folly::CoreAllocator::get):
        (folly::getCoreAllocator):
        (folly::getCoreAllocatorStl):
        * StitchMarker/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp: Added.
        (BENCHMARK):
        (contentionAtWidth):
        (atomicIncrBaseline):
        (contentionAtWidthGetcpu):
        (contentionAtWidthThreadLocal):
        (contentionAtWidthPthreadSelf):
        (main):
        * StitchMarker/folly/folly/detail/AtomicUtils.h: Added.
        (folly::detail::default_failure_memory_order):
        * StitchMarker/folly/folly/detail/BitIteratorDetail.h: Added.
        (folly::bititerator_detail::BitReference::BitReference):
        (folly::bititerator_detail::BitReference::operator bool const):
        (folly::bititerator_detail::BitReference::operator=):
        (folly::bititerator_detail::BitReference::set):
        (folly::bititerator_detail::BitReference::clear):
        (folly::bititerator_detail::BitReference::flip):
        * StitchMarker/folly/folly/detail/FileUtilDetail.h: Added.
        (folly::fileutil_detail::wrapNoInt):
        (folly::fileutil_detail::incr):
        (folly::fileutil_detail::wrapFull):
        (folly::fileutil_detail::wrapvFull):
        * StitchMarker/folly/folly/detail/Futex.cpp: Added.
        (folly::detail::Futex<std::atomic>::futexWake):
        (folly::detail::Futex<EmulatedFutexAtomic>::futexWake):
        (folly::detail::Futex<std::atomic>::futexWaitImpl):
        (folly::detail::Futex<EmulatedFutexAtomic>::futexWaitImpl):
        * StitchMarker/folly/folly/detail/Futex.h: Added.
        (folly::detail::Futex::Futex):
        (folly::detail::Futex::futexWait):
        (folly::detail::Futex::futexWaitUntil):
        * StitchMarker/folly/folly/detail/MallocImpl.cpp: Added.
        * StitchMarker/folly/folly/detail/MallocImpl.h: Added.
        * StitchMarker/folly/folly/detail/MemoryIdler.h: Added.
        (folly::detail::MemoryIdler::getVariationTimeout):
        (folly::detail::MemoryIdler::futexWait):
        * StitchMarker/folly/folly/detail/RangeCommon.h: Added.
        (folly::detail::StringPieceLite::StringPieceLite):
        (folly::detail::StringPieceLite::data const):
        (folly::detail::StringPieceLite::begin const):
        (folly::detail::StringPieceLite::end const):
        (folly::detail::StringPieceLite::size const):
        (folly::detail::StringPieceLite::empty const):
        (folly::detail::StringPieceLite::operator[] const):
        (folly::detail::StringPieceLite::operator Range const):
        (folly::detail::qfind_first_byte_of_std):
        (folly::detail::qfind_first_byte_of_nosse):
        * StitchMarker/folly/folly/detail/RangeSse42.h: Added.
        * StitchMarker/folly/folly/detail/Sleeper.h: Added.
        (folly::detail::Sleeper::Sleeper):
        (folly::detail::Sleeper::wait):
        * StitchMarker/folly/folly/detail/StaticSingletonManager.cpp: Added.
        (folly::detail::StaticSingletonManager::instance):
        * StitchMarker/folly/folly/detail/StaticSingletonManager.h: Added.
        (folly::detail::StaticSingletonManager::create):
        (folly::detail::StaticSingletonManager::StaticSingletonManager):
        (folly::detail::StaticSingletonManager::EntryIf::~EntryIf):
        (folly::detail::createGlobal):
        * StitchMarker/folly/folly/detail/ThreadLocalDetail.cpp: Added.
        (folly::threadlocal_detail::StaticMetaBase::StaticMetaBase):
        (folly::threadlocal_detail::StaticMetaBase::onThreadExit):
        (folly::threadlocal_detail::StaticMetaBase::allocate):
        (folly::threadlocal_detail::StaticMetaBase::destroy):
        (folly::threadlocal_detail::StaticMetaBase::reserve):
        (folly::threadlocal_detail::StaticMetaBase::initAtFork):
        (folly::threadlocal_detail::StaticMetaBase::registerAtFork):
        * StitchMarker/folly/folly/detail/ThreadLocalDetail.h: Added.
        (folly::threadlocal_detail::ElementWrapper::dispose):
        (folly::threadlocal_detail::ElementWrapper::release):
        (folly::threadlocal_detail::ElementWrapper::set):
        (folly::threadlocal_detail::ElementWrapper::cleanup):
        (folly::threadlocal_detail::PthreadKeyUnregister::~PthreadKeyUnregister):
        (folly::threadlocal_detail::PthreadKeyUnregister::registerKey):
        (folly::threadlocal_detail::PthreadKeyUnregister::PthreadKeyUnregister):
        (folly::threadlocal_detail::PthreadKeyUnregister::registerKeyImpl):
        (folly::threadlocal_detail::StaticMetaBase::EntryID::EntryID):
        (folly::threadlocal_detail::StaticMetaBase::EntryID::operator=):
        (folly::threadlocal_detail::StaticMetaBase::EntryID::getOrInvalid):
        (folly::threadlocal_detail::StaticMetaBase::EntryID::getOrAllocate):
        (folly::threadlocal_detail::StaticMetaBase::~StaticMetaBase):
        (folly::threadlocal_detail::StaticMetaBase::push_back):
        (folly::threadlocal_detail::StaticMetaBase::erase):
        (folly::threadlocal_detail::StaticMeta::StaticMeta):
        (folly::threadlocal_detail::StaticMeta::instance):
        (folly::threadlocal_detail::StaticMeta::get):
        (folly::threadlocal_detail::StaticMeta::getThreadEntrySlow):
        (folly::threadlocal_detail::StaticMeta::getThreadEntry):
        (folly::threadlocal_detail::StaticMeta::preFork):
        (folly::threadlocal_detail::StaticMeta::onForkParent):
        (folly::threadlocal_detail::StaticMeta::onForkChild):
        * StitchMarker/folly/folly/detail/UncaughtExceptionCounter.h: Added.
        * StitchMarker/folly/folly/experimental/AsymmetricMemoryBarrier.cpp: Added.
        (folly::asymmetricHeavyBarrier):
        * StitchMarker/folly/folly/experimental/AsymmetricMemoryBarrier.h: Added.
        (folly::asymmetricLightBarrier):
        * StitchMarker/folly/folly/experimental/ReadMostlySharedPtr.h: Added.
        (folly::detail::ReadMostlySharedPtrCore::get):
        (folly::detail::ReadMostlySharedPtrCore::getShared):
        (folly::detail::ReadMostlySharedPtrCore::incref):
        (folly::detail::ReadMostlySharedPtrCore::decref):
        (folly::detail::ReadMostlySharedPtrCore::increfWeak):
        (folly::detail::ReadMostlySharedPtrCore::decrefWeak):
        (folly::detail::ReadMostlySharedPtrCore::useCount const):
        (folly::detail::ReadMostlySharedPtrCore::ReadMostlySharedPtrCore):
        (folly::ReadMostlyMainPtr::ReadMostlyMainPtr):
        (folly::ReadMostlyMainPtr::operator== const):
        (folly::ReadMostlyMainPtr::reset):
        (folly::ReadMostlyMainPtr::get const):
        (folly::ReadMostlyMainPtr::getStdShared const):
        (folly::ReadMostlyMainPtr::operator* const):
        (folly::ReadMostlyMainPtr::operator-> const):
        (folly::ReadMostlyMainPtr::getShared const):
        (folly::ReadMostlyMainPtr::operator bool const):
        (folly::ReadMostlyWeakPtr::ReadMostlyWeakPtr):
        (folly::ReadMostlyWeakPtr::operator=):
        (folly::ReadMostlyWeakPtr::lock):
        (folly::ReadMostlyWeakPtr::reset):
        (folly::ReadMostlySharedPtr::ReadMostlySharedPtr):
        (folly::ReadMostlySharedPtr::operator=):
        (folly::ReadMostlySharedPtr::operator== const):
        (folly::ReadMostlySharedPtr::reset):
        (folly::ReadMostlySharedPtr::get const):
        (folly::ReadMostlySharedPtr::getStdShared const):
        (folly::ReadMostlySharedPtr::operator* const):
        (folly::ReadMostlySharedPtr::operator-> const):
        (folly::ReadMostlySharedPtr::use_count const):
        (folly::ReadMostlySharedPtr::unique const):
        (folly::ReadMostlySharedPtr::operator bool const):
        (folly::operator==):
        (folly::operator!=):
        * StitchMarker/folly/folly/experimental/TLRefCount.h: Added.
        (folly::TLRefCount::TLRefCount):
        (folly::TLRefCount::collectGuard_):
        (folly::TLRefCount::operator* const):
        (folly::TLRefCount::useGlobal):
        (folly::TLRefCount::LocalRefCount::LocalRefCount):
        (folly::TLRefCount::LocalRefCount::~LocalRefCount):
        (folly::TLRefCount::LocalRefCount::collect):
        (folly::TLRefCount::LocalRefCount::operator++):
        (folly::TLRefCount::LocalRefCount::operator--):
        (folly::TLRefCount::LocalRefCount::update):
        * StitchMarker/folly/folly/experimental/flat_combining/FlatCombining.h: Added.
        (folly::FlatCombining::Rec::Rec):
        (folly::FlatCombining::Rec::setValid):
        (folly::FlatCombining::Rec::clearValid):
        (folly::FlatCombining::Rec::isValid const):
        (folly::FlatCombining::Rec::setDone):
        (folly::FlatCombining::Rec::clearDone):
        (folly::FlatCombining::Rec::isDone const):
        (folly::FlatCombining::Rec::awaitDone):
        (folly::FlatCombining::Rec::setDisconnected):
        (folly::FlatCombining::Rec::clearDisconnected):
        (folly::FlatCombining::Rec::isDisconnected const):
        (folly::FlatCombining::Rec::setIndex):
        (folly::FlatCombining::Rec::getIndex const):
        (folly::FlatCombining::Rec::setNext):
        (folly::FlatCombining::Rec::getNext const):
        (folly::FlatCombining::Rec::setLast):
        (folly::FlatCombining::Rec::getLast const):
        (folly::FlatCombining::Rec::getReq):
        (folly::FlatCombining::Rec::setFn):
        (folly::FlatCombining::Rec::clearFn):
        (folly::FlatCombining::Rec::getFn):
        (folly::FlatCombining::Rec::complete):
        (folly::FlatCombining::FlatCombining):
        (folly::FlatCombining::~FlatCombining):
        (folly::FlatCombining::drainAll):
        (folly::FlatCombining::acquireExclusive):
        (folly::FlatCombining::tryExclusive):
        (folly::FlatCombining::releaseExclusive):
        (folly::FlatCombining::holdLock):
        (folly::FlatCombining::requestNoFC):
        (folly::FlatCombining::requestFC):
        (folly::FlatCombining::allocRec):
        (folly::FlatCombining::freeRec):
        (folly::FlatCombining::getNumUncombined const):
        (folly::FlatCombining::getNumCombined const):
        (folly::FlatCombining::getNumPasses const):
        (folly::FlatCombining::getNumSessions const):
        (folly::FlatCombining::requestOp):
        (folly::FlatCombining::pushRec):
        (folly::FlatCombining::getRecsHead):
        (folly::FlatCombining::nextIndex):
        (folly::FlatCombining::clearPending):
        (folly::FlatCombining::setPending):
        (folly::FlatCombining::isPending const):
        (folly::FlatCombining::awaitPending):
        (folly::FlatCombining::combiningSession):
        (folly::FlatCombining::tryCombining):
        (folly::FlatCombining::dedicatedCombining):
        (folly::FlatCombining::awaitDone):
        (folly::FlatCombining::awaitDoneTryLock):
        (folly::FlatCombining::shutdown):
        (folly::FlatCombining::combinedOp):
        (folly::FlatCombining::processReq):
        (folly::FlatCombining::combiningPass):
        * StitchMarker/folly/folly/experimental/flat_combining/test/FlatCombiningBenchmark.cpp: Added.
        (BENCHMARK_RELATIVE):
        (benchmarkSetup):
        (TEST):
        (test):
        * StitchMarker/folly/folly/experimental/flat_combining/test/FlatCombiningExamples.h: Added.
        (folly::Data::Data):
        (folly::Data::getVal):
        (folly::Data::add):
        (folly::Data::fetchAdd):
        (folly::FcSimpleExample::FcSimpleExample):
        (folly::FcSimpleExample::getVal):
        (folly::FcSimpleExample::addNoFC):
        (folly::FcSimpleExample::add):
        (folly::FcSimpleExample::fetchAddNoFC):
        (folly::FcSimpleExample::fetchAdd):
        (folly::Req::setType):
        (folly::Req::getType):
        (folly::Req::setVal):
        (folly::Req::getVal):
        (folly::Req::setRes):
        (folly::Req::getRes):
        (folly::FcCustomExample::FcCustomExample):
        (folly::FcCustomExample::getVal):
        (folly::FcCustomExample::addNoFC):
        (folly::FcCustomExample::add):
        (folly::FcCustomExample::fetchAddNoFC):
        (folly::FcCustomExample::fetchAdd):
        (folly::FcCustomExample::combinedOp):
        * StitchMarker/folly/folly/experimental/flat_combining/test/FlatCombiningTestHelpers.h: Added.
        (folly::test::doWork):
        (folly::test::fc_test):
        (folly::test::run_test):
        * StitchMarker/folly/folly/experimental/hazptr/bench/HazptrBench-Amb-Tc.cpp: Added.
        (main):
        * StitchMarker/folly/folly/experimental/hazptr/bench/HazptrBench-NoAmb-NoTc.cpp: Added.
        (main):
        * StitchMarker/folly/folly/experimental/hazptr/bench/HazptrBench-NoAmb-Tc.cpp: Added.
        (main):
        * StitchMarker/folly/folly/experimental/hazptr/bench/HazptrBench-OneDomain.cpp: Added.
        (main):
        * StitchMarker/folly/folly/experimental/hazptr/bench/HazptrBench.h: Added.
        (folly::hazptr::run_once):
        (folly::hazptr::bench):
        (folly::hazptr::listBench):
        (folly::hazptr::holderBench):
        (folly::hazptr::retireBench):
        (folly::hazptr::benches):
        * StitchMarker/folly/folly/experimental/hazptr/debug.h: Added.
        * StitchMarker/folly/folly/experimental/hazptr/example/SWMRList.h: Added.
        (folly::hazptr::SWMRListSet::Reclaimer::operator()):
        (folly::hazptr::SWMRListSet::Node::Node):
        (folly::hazptr::SWMRListSet::Node::~Node):
        (folly::hazptr::SWMRListSet::locate_lower_bound const):
        (folly::hazptr::SWMRListSet::SWMRListSet):
        (folly::hazptr::SWMRListSet::~SWMRListSet):
        (folly::hazptr::SWMRListSet::add):
        (folly::hazptr::SWMRListSet::remove):
        (folly::hazptr::SWMRListSet::contains const):
        * StitchMarker/folly/folly/experimental/hazptr/hazptr-impl.h: Added.
        (folly::hazptr::D>::retire):
        (folly::hazptr::hazptr_holder::hazptr_holder):
        (folly::hazptr::hazptr_holder::~hazptr_holder):
        (folly::hazptr::default_hazptr_domain):
        (folly::hazptr::hazptr_obj::getObjPtr const):
        (folly::hazptr::hazptr_domain::~hazptr_domain):
        (folly::hazptr::hazptr_domain::hazptrAcquire):
        (folly::hazptr::hazptr_domain::pushRetired):
        (folly::hazptr::hazptr_domain::reachedThreshold):
        (folly::hazptr::hazptr_domain::objRetire):
        (folly::hazptr::hazptr_domain::tryBulkReclaim):
        (folly::hazptr::hazptr_domain::bulkReclaim):
        (folly::hazptr::hazptr_stats::~hazptr_stats):
        (folly::hazptr::hazptr_stats::light):
        (folly::hazptr::hazptr_stats::heavy):
        (folly::hazptr::hazptr_stats::seq_cst):
        (folly::hazptr::hazptr_stats):
        (folly::hazptr::hazptr_mb::light):
        (folly::hazptr::hazptr_mb::heavy):
        (folly::hazptr::hazptr_tc_entry::fill):
        (folly::hazptr::hazptr_tc_entry::get):
        (folly::hazptr::hazptr_tc_entry::evict):
        (folly::hazptr::hazptr_tc::hazptr_tc):
        (folly::hazptr::hazptr_tc::~hazptr_tc):
        (folly::hazptr::hazptr_tc::get):
        (folly::hazptr::hazptr_tc::put):
        (folly::hazptr::hazptr_tc):
        (folly::hazptr::hazptr_priv::hazptr_priv):
        (folly::hazptr::hazptr_priv::~hazptr_priv):
        (folly::hazptr::hazptr_priv::push):
        (folly::hazptr::hazptr_priv::pushAllToDomain):
        (folly::hazptr::hazptr_priv):
        * StitchMarker/folly/folly/experimental/hazptr/hazptr.h: Added.
        (folly::hazptr::hazptr_obj_base::retire):
        * StitchMarker/folly/folly/experimental/hazptr/memory_resource.h: Added.
        (folly::hazptr::default_mr_ptr):
        (folly::hazptr::get_default_resource):
        (folly::hazptr::set_default_resource):
        (folly::hazptr::new_delete_resource):
        * StitchMarker/folly/folly/experimental/logging/README.md: Added.
        * StitchMarker/folly/folly/experimental/test/ReadMostlySharedPtrBenchmark.cpp: Added.
        (benchmark):
        (BENCHMARK):
        (main):
        * StitchMarker/folly/folly/experimental/test/RefCountBenchmark.cpp: Added.
        (folly::shutdown):
        (folly::benchmark):
        (folly::BENCHMARK):
        (main):
        * StitchMarker/folly/folly/folly-config.h: Added.
        * StitchMarker/folly/folly/hash/SpookyHashV1.h: Added.
        (folly::hash::SpookyHashV1::Hash64):
        (folly::hash::SpookyHashV1::Hash32):
        (folly::hash::SpookyHashV1::Rot64):
        (folly::hash::SpookyHashV1::Mix):
        (folly::hash::SpookyHashV1::EndPartial):
        (folly::hash::SpookyHashV1::End):
        (folly::hash::SpookyHashV1::ShortMix):
        (folly::hash::SpookyHashV1::ShortEnd):
        * StitchMarker/folly/folly/hash/SpookyHashV2.h: Added.
        (folly::hash::SpookyHashV2::Hash64):
        (folly::hash::SpookyHashV2::Hash32):
        (folly::hash::SpookyHashV2::Rot64):
        (folly::hash::SpookyHashV2::Mix):
        (folly::hash::SpookyHashV2::EndPartial):
        (folly::hash::SpookyHashV2::End):
        (folly::hash::SpookyHashV2::ShortMix):
        (folly::hash::SpookyHashV2::ShortEnd):
        * StitchMarker/folly/folly/portability/Asm.h: Added.
        (folly::asm_volatile_memory):
        (folly::asm_volatile_pause):
        * StitchMarker/folly/folly/portability/BitsFunctexcept.h: Added.
        * StitchMarker/folly/folly/portability/Builtins.h: Added.
        (__builtin___clear_cache):
        (__builtin_clz):
        (__builtin_clzl):
        (__builtin_clzll):
        (__builtin_ctzll):
        (__builtin_ffs):
        (__builtin_ffsl):
        (__builtin_ffsll):
        (__builtin_popcount):
        (__builtin_popcountll):
        (__builtin_return_address):
        * StitchMarker/folly/folly/portability/Config.h: Added.
        * StitchMarker/folly/folly/portability/Constexpr.h: Added.
        (folly::constexpr_max):
        (folly::constexpr_min):
        (folly::constexpr_abs):
        (folly::detail::constexpr_strlen_internal):
        (folly::constexpr_strlen):
        * StitchMarker/folly/folly/portability/Fcntl.h: Added.
        * StitchMarker/folly/folly/portability/GFlags.h: Added.
        * StitchMarker/folly/folly/portability/GTest.h: Added.
        * StitchMarker/folly/folly/portability/IOVec.h: Added.
        * StitchMarker/folly/folly/portability/Malloc.h: Added.
        * StitchMarker/folly/folly/portability/Math.h: Added.
        (folly::nextafter):
        * StitchMarker/folly/folly/portability/Memory.cpp: Added.
        (folly::detail::aligned_malloc):
        (folly::detail::aligned_free):
        * StitchMarker/folly/folly/portability/Memory.h: Added.
        * StitchMarker/folly/folly/portability/PThread.h: Added.
        (operator==):
        (operator!=):
        (operator<):
        (operator!):
        (pthread_attr_getstack):
        (pthread_attr_setstack):
        (pthread_attr_getguardsize):
        (std::hash<pthread_t>::operator() const):
        * StitchMarker/folly/folly/portability/README.md: Added.
        * StitchMarker/folly/folly/portability/Semaphore.h: Added.
        * StitchMarker/folly/folly/portability/String.h: Added.
        * StitchMarker/folly/folly/portability/SysMembarrier.h: Added.
        * StitchMarker/folly/folly/portability/SysMman.h: Added.
        * StitchMarker/folly/folly/portability/SysResource.h: Added.
        * StitchMarker/folly/folly/portability/SysSyscall.h: Added.
        * StitchMarker/folly/folly/portability/SysTime.h: Added.
        * StitchMarker/folly/folly/portability/SysTypes.h: Added.
        * StitchMarker/folly/folly/portability/SysUio.h: Added.
        * StitchMarker/folly/folly/portability/Time.h: Added.
        * StitchMarker/folly/folly/portability/Unistd.h: Added.
        * StitchMarker/folly/folly/portability/Windows.h: Added.
        * StitchMarker/folly/folly/stats/Histogram-defs.h: Added.
        (folly::detail::BucketT>::HistogramBuckets):
        (folly::detail::BucketType>::getBucketIdx const):
        (folly::detail::BucketType>::computeTotalCount const):
        (folly::detail::BucketType>::getPercentileBucketIdx const):
        (folly::detail::BucketType>::getPercentileEstimate const):
        (folly::Histogram<T>::debugString const):
        (folly::Histogram<T>::toTSV const):
        * StitchMarker/folly/folly/stats/Histogram.h: Added.
        (folly::detail::HistogramBuckets::getBucketSize const):
        (folly::detail::HistogramBuckets::getMin const):
        (folly::detail::HistogramBuckets::getMax const):
        (folly::detail::HistogramBuckets::getNumBuckets const):
        (folly::detail::HistogramBuckets::getByValue):
        (folly::detail::HistogramBuckets::getByValue const):
        (folly::detail::HistogramBuckets::getByIndex):
        (folly::detail::HistogramBuckets::getByIndex const):
        (folly::detail::HistogramBuckets::getBucketMin const):
        (folly::detail::HistogramBuckets::getBucketMax const):
        (folly::detail::HistogramBuckets::begin const):
        (folly::detail::HistogramBuckets::begin):
        (folly::detail::HistogramBuckets::end const):
        (folly::detail::HistogramBuckets::end):
        (folly::Histogram::Histogram):
        (folly::Histogram::FOLLY_DISABLE_UNDEFINED_BEHAVIOR_SANITIZER):
        (folly::Histogram::removeRepeatedValue):
        (folly::Histogram::clear):
        (folly::Histogram::subtract):
        (folly::Histogram::merge):
        (folly::Histogram::copy):
        (folly::Histogram::getBucketSize const):
        (folly::Histogram::getMin const):
        (folly::Histogram::getMax const):
        (folly::Histogram::getNumBuckets const):
        (folly::Histogram::getBucketByIndex const):
        (folly::Histogram::getBucketMin const):
        (folly::Histogram::getBucketMax const):
        (folly::Histogram::computeTotalCount const):
        (folly::Histogram::getPercentileBucketIdx const):
        (folly::Histogram::getPercentileEstimate const):
        (folly::Histogram::CountFromBucket::operator() const):
        (folly::Histogram::AvgFromBucket::operator() const):
        * StitchMarker/folly/folly/stats/detail/Bucket.h: Added.
        (folly::detail::avgHelper):
        (folly::detail::rateHelper):
        (folly::detail::Bucket::Bucket):
        (folly::detail::Bucket::clear):
        (folly::detail::Bucket::add):
        (folly::detail::Bucket::operator+=):
        (folly::detail::Bucket::operator-=):
        (folly::detail::Bucket::avg const):
        * StitchMarker/folly/folly/test/BatonBenchmark.cpp: Added.
        (BENCHMARK):
        (main):
        * StitchMarker/folly/folly/test/BatonTestHelpers.h: Added.
        (folly::test::run_basic_test):
        (folly::test::run_pingpong_test):
        (folly::test::run_basic_timed_wait_tests):
        (folly::test::run_timed_wait_tmo_tests):
        (folly::test::run_timed_wait_regular_test):
        (folly::test::run_try_wait_tests):
        (folly::test::run_multi_producer_tests):
        * StitchMarker/folly/folly/test/CallOnceBenchmark.cpp: Added.
        (bm_impl):
        (BENCHMARK):
        (main):
        * StitchMarker/folly/folly/test/ConcurrentSkipListBenchmark.cpp: Added.
        (main):
        * StitchMarker/folly/folly/test/DeterministicSchedule.cpp: Added.
        (folly::test::DeterministicSchedule::DeterministicSchedule):
        (folly::test::DeterministicSchedule::~DeterministicSchedule):
        (folly::test::std::function<size_t):
        (folly::test::UniformSubset::UniformSubset):
        (folly::test::UniformSubset::operator()):
        (folly::test::UniformSubset::adjustPermSize):
        (folly::test::UniformSubset::shufflePrefix):
        (folly::test::DeterministicSchedule::beforeSharedAccess):
        (folly::test::DeterministicSchedule::afterSharedAccess):
        (folly::test::DeterministicSchedule::getRandNumber):
        (folly::test::DeterministicSchedule::getcpu):
        (folly::test::DeterministicSchedule::setAuxAct):
        (folly::test::DeterministicSchedule::setAuxChk):
        (folly::test::DeterministicSchedule::clearAuxChk):
        (folly::test::DeterministicSchedule::beforeThreadCreate):
        (folly::test::DeterministicSchedule::afterThreadCreate):
        (folly::test::DeterministicSchedule::beforeThreadExit):
        (folly::test::DeterministicSchedule::join):
        (folly::test::DeterministicSchedule::callAux):
        (folly::test::DeterministicSchedule::post):
        (folly::test::DeterministicSchedule::tryWait):
        (folly::test::DeterministicSchedule::wait):
        (folly::detail::Futex<DeterministicAtomic>::futexWaitImpl):
        (folly::detail::Futex<DeterministicAtomic>::futexWake):
        (folly::CacheLocality::system<test::DeterministicAtomic>):
        (folly::AccessSpreader<test::DeterministicAtomic>::pickGetcpuFunc):
        * StitchMarker/folly/folly/test/DeterministicSchedule.h: Added.
        (folly::test::DeterministicSchedule::thread):
        (folly::test::DeterministicMutex::lock):
        (folly::test::DeterministicMutex::try_lock):
        (folly::test::DeterministicMutex::unlock):
        * StitchMarker/folly/folly/test/ProducerConsumerQueueBenchmark.cpp: Added.
        (main):
        * StitchMarker/folly/folly/test/ThreadLocalBenchmark.cpp: Added.
        (PThreadGetSpecific::PThreadGetSpecific):
        (PThreadGetSpecific::get const):
        (PThreadGetSpecific::reset):
        (PThreadGetSpecific::OnThreadExit):
        (main):
        * StitchMarker/folly/glog/AUTHORS: Added.
        * StitchMarker/folly/glog/CONTRIBUTORS: Added.
        * StitchMarker/folly/glog/COPYING: Added.
        * StitchMarker/folly/glog/README: Added.
        * StitchMarker/folly/glog/src/base/commandlineflags.h: Added.
        * StitchMarker/folly/glog/src/base/googleinit.h: Added.
        (GoogleInitializer::GoogleInitializer):
        * StitchMarker/folly/glog/src/base/mutex.h: Added.
        (MUTEX_NAMESPACE::Mutex::WriterLock):
        (MUTEX_NAMESPACE::Mutex::WriterUnlock):
        (MUTEX_NAMESPACE::Mutex::AssertHeld):
        (MUTEX_NAMESPACE::Mutex::SetIsSafe):
        (MUTEX_NAMESPACE::Mutex::Mutex):
        (MUTEX_NAMESPACE::Mutex::~Mutex):
        (MUTEX_NAMESPACE::Mutex::Lock):
        (MUTEX_NAMESPACE::Mutex::Unlock):
        (MUTEX_NAMESPACE::Mutex::TryLock):
        (MUTEX_NAMESPACE::Mutex::ReaderLock):
        (MUTEX_NAMESPACE::Mutex::ReaderUnlock):
        (MUTEX_NAMESPACE::MutexLock::MutexLock):
        (MUTEX_NAMESPACE::MutexLock::~MutexLock):
        (MUTEX_NAMESPACE::ReaderMutexLock::ReaderMutexLock):
        (MUTEX_NAMESPACE::ReaderMutexLock::~ReaderMutexLock):
        (MUTEX_NAMESPACE::WriterMutexLock::WriterMutexLock):
        (MUTEX_NAMESPACE::WriterMutexLock::~WriterMutexLock):
        * StitchMarker/folly/glog/src/config.h: Added.
        * StitchMarker/folly/glog/src/config.h.cmake.in: Added.
        * StitchMarker/folly/glog/src/config.h.in: Added.
        * StitchMarker/folly/glog/src/glog/log_severity.h: Added.
        * StitchMarker/folly/glog/src/glog/logging.h: Added.
        (google::CheckOpString::CheckOpString):
        (google::CheckOpString::operator bool const):
        (google::GetReferenceableValue):
        (operator<<):
        (google::MakeCheckOpValueString):
        (google::MakeCheckOpString):
        (google::LogAtLevel):
        (google::CheckNotNull):
        (google::operator<<):
        * StitchMarker/folly/glog/src/glog/logging.h.in: Added.
        * StitchMarker/folly/glog/src/glog/raw_logging.h: Added.
        (google::RawLogStub__):
        * StitchMarker/folly/glog/src/glog/raw_logging.h.in: Added.
        * StitchMarker/folly/glog/src/glog/vlog_is_on.h: Added.
        * StitchMarker/folly/glog/src/glog/vlog_is_on.h.in: Added.
        * StitchMarker/folly/glog/src/logging.cc: Added.
        * StitchMarker/folly/glog/src/raw_logging.cc: Added.
        * StitchMarker/folly/glog/src/utilities.cc: Added.
        * StitchMarker/folly/glog/src/utilities.h: Added.
        (glog_internal_namespace_::sync_val_compare_and_swap):
        (glog_internal_namespace_::CrashReason::CrashReason):
        * StitchMarker/folly/glog/src/vlog_is_on.cc: Added.
        * StitchMarker/folly/gtest/README.md: Added.
        * StitchMarker/folly/gtest/googletest/LICENSE: Added.
        * StitchMarker/folly/gtest/googletest/README.md: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-death-test.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-message.h: Added.
        (testing::operator <<):
        (testing::internal::StreamableToString):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-param-test.h: Added.
        (TEST_P):
        (testing::Range):
        (testing::ValuesIn):
        (testing::Values):
        (testing::Bool):
        (testing::Combine):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-param-test.h.pump: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-printers.h: Added.
        (testing::internal2::TypeWithoutFormatter::PrintValue):
        (testing::internal2::operator<<):
        (testing_internal::DefaultPrintNonContainerTo):
        (testing::internal::FormatForComparison::Format):
        (testing::internal::FormatForComparisonFailureMessage):
        (testing::internal::DefaultPrintTo):
        (testing::internal::PrintTo):
        (testing::internal::PrintRawArrayTo):
        (testing::internal::UniversalPrinter::Print):
        (testing::internal::UniversalPrintArray):
        (testing::internal::UniversalPrinter<T::Print):
        (testing::internal::UniversalTersePrinter::Print):
        (testing::internal::UniversalTersePrinter<T::Print):
        (testing::internal::UniversalTersePrinter<char::Print):
        (testing::internal::UniversalTersePrinter<wchar_t::Print):
        (testing::internal::UniversalTersePrint):
        (testing::internal::UniversalPrint):
        (testing::internal::TuplePolicy::get):
        (testing::internal::TuplePrefixPrinter::PrintPrefixTo):
        (testing::internal::TuplePrefixPrinter::TersePrintPrefixToStrings):
        (testing::internal::TuplePrefixPrinter<0>::PrintPrefixTo):
        (testing::internal::TuplePrefixPrinter<0>::TersePrintPrefixToStrings):
        (testing::internal::PrintTupleTo):
        (testing::internal::UniversalTersePrintTupleFieldsToStrings):
        (testing::PrintToString):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-spi.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-test-part.h: Added.
        (testing::TestPartResultReporterInterface::~TestPartResultReporterInterface):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest-typed-test.h: Added.
        (TYPED_TEST):
        (TYPED_TEST_P):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest.h: Added.
        (testing::TestProperty::TestProperty):
        (testing::TestProperty::key const):
        (testing::TestProperty::value const):
        (testing::TestProperty::SetValue):
        (testing::Environment::~Environment):
        (testing::Environment::SetUp):
        (testing::Environment::TearDown):
        (testing::Environment::Setup):
        (testing::TestEventListener::~TestEventListener):
        (testing::EmptyTestEventListener::OnTestProgramStart):
        (testing::EmptyTestEventListener::OnTestIterationStart):
        (testing::EmptyTestEventListener::OnEnvironmentsSetUpStart):
        (testing::EmptyTestEventListener::OnEnvironmentsSetUpEnd):
        (testing::EmptyTestEventListener::OnTestCaseStart):
        (testing::EmptyTestEventListener::OnTestStart):
        (testing::EmptyTestEventListener::OnTestPartResult):
        (testing::EmptyTestEventListener::OnTestEnd):
        (testing::EmptyTestEventListener::OnTestCaseEnd):
        (testing::EmptyTestEventListener::OnEnvironmentsTearDownStart):
        (testing::EmptyTestEventListener::OnEnvironmentsTearDownEnd):
        (testing::EmptyTestEventListener::OnTestIterationEnd):
        (testing::EmptyTestEventListener::OnTestProgramEnd):
        (testing::AddGlobalTestEnvironment):
        (testing::internal::CmpHelperEQFailure):
        (testing::internal::CmpHelperEQ):
        (testing::internal::EqHelper::Compare):
        (testing::internal::EqHelper<true>::Compare):
        (testing::internal::CmpHelperOpFailure):
        (testing::internal::CmpHelperFloatingPointEQ):
        (testing::WithParamInterface::~WithParamInterface):
        (testing::WithParamInterface::GetParam const):
        (testing::WithParamInterface::SetParam):
        (testing::StaticAssertTypeEq):
        (RUN_ALL_TESTS):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest_pred_impl.h: Added.
        (AssertPred1Helper):
        (AssertPred2Helper):
        (AssertPred3Helper):
        (AssertPred4Helper):
        (AssertPred5Helper):
        * StitchMarker/folly/gtest/googletest/include/gtest/gtest_prod.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/custom/gtest-port.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/custom/gtest-printers.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/custom/gtest.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-filepath.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-internal.h: Added.
        (testing::internal::FloatingPoint::FloatingPoint):
        (testing::internal::FloatingPoint::ReinterpretBits):
        (testing::internal::FloatingPoint::Infinity):
        (testing::internal::FloatingPoint::bits const):
        (testing::internal::FloatingPoint::exponent_bits const):
        (testing::internal::FloatingPoint::fraction_bits const):
        (testing::internal::FloatingPoint::sign_bit const):
        (testing::internal::FloatingPoint::is_nan const):
        (testing::internal::FloatingPoint::AlmostEquals const):
        (testing::internal::FloatingPoint::SignAndMagnitudeToBiased):
        (testing::internal::FloatingPoint::DistanceBetweenSignAndMagnitudeNumbers):
        (testing::internal::FloatingPoint<float>::Max):
        (testing::internal::FloatingPoint<double>::Max):
        (testing::internal::GetTypeId):
        (testing::internal::TestFactoryBase::~TestFactoryBase):
        (testing::internal::TestFactoryBase::TestFactoryBase):
        (testing::internal::TestFactoryImpl::CreateTest):
        (testing::internal::CodeLocation::CodeLocation):
        (testing::internal::SkipComma):
        (testing::internal::GetPrefixUntilComma):
        (testing::internal::TypeParameterizedTest::Register):
        (testing::internal::TypeParameterizedTestCase::Register):
        (testing::internal::AlwaysFalse):
        (testing::internal::IsContainerTest):
        (testing::internal::ArrayEq):
        (testing::internal::ArrayAwareFind):
        (testing::internal::CopyArray):
        (testing::internal::NativeArray::NativeArray):
        (testing::internal::NativeArray::~NativeArray):
        (testing::internal::NativeArray::size const):
        (testing::internal::NativeArray::begin const):
        (testing::internal::NativeArray::end const):
        (testing::internal::NativeArray::operator== const):
        (testing::internal::NativeArray::InitCopy):
        (testing::internal::NativeArray::InitRef):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h: Added.
        (testing::internal::linked_ptr_internal::join_new):
        (testing::internal::linked_ptr_internal::GTEST_LOCK_EXCLUDED_):
        (testing::internal::linked_ptr::linked_ptr):
        (testing::internal::linked_ptr::~linked_ptr):
        (testing::internal::linked_ptr::operator=):
        (testing::internal::linked_ptr::reset):
        (testing::internal::linked_ptr::get const):
        (testing::internal::linked_ptr::operator-> const):
        (testing::internal::linked_ptr::operator* const):
        (testing::internal::linked_ptr::operator== const):
        (testing::internal::linked_ptr::operator!= const):
        (testing::internal::linked_ptr::depart):
        (testing::internal::linked_ptr::capture):
        (testing::internal::linked_ptr::copy):
        (testing::internal::operator==):
        (testing::internal::operator!=):
        (testing::internal::make_linked_ptr):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h: Added.
        (testing::internal::ValueArray1::ValueArray1):
        (testing::internal::ValueArray1::operator ParamGenerator<T> const):
        (testing::internal::ValueArray2::ValueArray2):
        (testing::internal::ValueArray2::operator ParamGenerator<T> const):
        (testing::internal::ValueArray3::ValueArray3):
        (testing::internal::ValueArray3::operator ParamGenerator<T> const):
        (testing::internal::ValueArray4::ValueArray4):
        (testing::internal::ValueArray4::operator ParamGenerator<T> const):
        (testing::internal::ValueArray5::ValueArray5):
        (testing::internal::ValueArray5::operator ParamGenerator<T> const):
        (testing::internal::ValueArray6::ValueArray6):
        (testing::internal::ValueArray6::operator ParamGenerator<T> const):
        (testing::internal::ValueArray7::ValueArray7):
        (testing::internal::ValueArray7::operator ParamGenerator<T> const):
        (testing::internal::ValueArray8::ValueArray8):
        (testing::internal::ValueArray8::operator ParamGenerator<T> const):
        (testing::internal::ValueArray9::ValueArray9):
        (testing::internal::ValueArray9::operator ParamGenerator<T> const):
        (testing::internal::ValueArray10::ValueArray10):
        (testing::internal::ValueArray10::operator ParamGenerator<T> const):
        (testing::internal::ValueArray11::ValueArray11):
        (testing::internal::ValueArray11::operator ParamGenerator<T> const):
        (testing::internal::ValueArray12::ValueArray12):
        (testing::internal::ValueArray12::operator ParamGenerator<T> const):
        (testing::internal::ValueArray13::ValueArray13):
        (testing::internal::ValueArray13::operator ParamGenerator<T> const):
        (testing::internal::ValueArray14::ValueArray14):
        (testing::internal::ValueArray14::operator ParamGenerator<T> const):
        (testing::internal::ValueArray15::ValueArray15):
        (testing::internal::ValueArray15::operator ParamGenerator<T> const):
        (testing::internal::ValueArray16::ValueArray16):
        (testing::internal::ValueArray16::operator ParamGenerator<T> const):
        (testing::internal::ValueArray17::ValueArray17):
        (testing::internal::ValueArray17::operator ParamGenerator<T> const):
        (testing::internal::ValueArray18::ValueArray18):
        (testing::internal::ValueArray18::operator ParamGenerator<T> const):
        (testing::internal::ValueArray19::ValueArray19):
        (testing::internal::ValueArray19::operator ParamGenerator<T> const):
        (testing::internal::ValueArray20::ValueArray20):
        (testing::internal::ValueArray20::operator ParamGenerator<T> const):
        (testing::internal::ValueArray21::ValueArray21):
        (testing::internal::ValueArray21::operator ParamGenerator<T> const):
        (testing::internal::ValueArray22::ValueArray22):
        (testing::internal::ValueArray22::operator ParamGenerator<T> const):
        (testing::internal::ValueArray23::ValueArray23):
        (testing::internal::ValueArray23::operator ParamGenerator<T> const):
        (testing::internal::ValueArray24::ValueArray24):
        (testing::internal::ValueArray24::operator ParamGenerator<T> const):
        (testing::internal::ValueArray25::ValueArray25):
        (testing::internal::ValueArray25::operator ParamGenerator<T> const):
        (testing::internal::ValueArray26::ValueArray26):
        (testing::internal::ValueArray26::operator ParamGenerator<T> const):
        (testing::internal::ValueArray27::ValueArray27):
        (testing::internal::ValueArray27::operator ParamGenerator<T> const):
        (testing::internal::ValueArray28::ValueArray28):
        (testing::internal::ValueArray28::operator ParamGenerator<T> const):
        (testing::internal::ValueArray29::ValueArray29):
        (testing::internal::ValueArray29::operator ParamGenerator<T> const):
        (testing::internal::ValueArray30::ValueArray30):
        (testing::internal::ValueArray30::operator ParamGenerator<T> const):
        (testing::internal::ValueArray31::ValueArray31):
        (testing::internal::ValueArray31::operator ParamGenerator<T> const):
        (testing::internal::ValueArray32::ValueArray32):
        (testing::internal::ValueArray32::operator ParamGenerator<T> const):
        (testing::internal::ValueArray33::ValueArray33):
        (testing::internal::ValueArray33::operator ParamGenerator<T> const):
        (testing::internal::ValueArray34::ValueArray34):
        (testing::internal::ValueArray34::operator ParamGenerator<T> const):
        (testing::internal::ValueArray35::ValueArray35):
        (testing::internal::ValueArray35::operator ParamGenerator<T> const):
        (testing::internal::ValueArray36::ValueArray36):
        (testing::internal::ValueArray36::operator ParamGenerator<T> const):
        (testing::internal::ValueArray37::ValueArray37):
        (testing::internal::ValueArray37::operator ParamGenerator<T> const):
        (testing::internal::ValueArray38::ValueArray38):
        (testing::internal::ValueArray38::operator ParamGenerator<T> const):
        (testing::internal::ValueArray39::ValueArray39):
        (testing::internal::ValueArray39::operator ParamGenerator<T> const):
        (testing::internal::ValueArray40::ValueArray40):
        (testing::internal::ValueArray40::operator ParamGenerator<T> const):
        (testing::internal::ValueArray41::ValueArray41):
        (testing::internal::ValueArray41::operator ParamGenerator<T> const):
        (testing::internal::ValueArray42::ValueArray42):
        (testing::internal::ValueArray42::operator ParamGenerator<T> const):
        (testing::internal::ValueArray43::ValueArray43):
        (testing::internal::ValueArray43::operator ParamGenerator<T> const):
        (testing::internal::ValueArray44::ValueArray44):
        (testing::internal::ValueArray44::operator ParamGenerator<T> const):
        (testing::internal::ValueArray45::ValueArray45):
        (testing::internal::ValueArray45::operator ParamGenerator<T> const):
        (testing::internal::ValueArray46::ValueArray46):
        (testing::internal::ValueArray46::operator ParamGenerator<T> const):
        (testing::internal::ValueArray47::ValueArray47):
        (testing::internal::ValueArray47::operator ParamGenerator<T> const):
        (testing::internal::ValueArray48::ValueArray48):
        (testing::internal::ValueArray48::operator ParamGenerator<T> const):
        (testing::internal::ValueArray49::ValueArray49):
        (testing::internal::ValueArray49::operator ParamGenerator<T> const):
        (testing::internal::ValueArray50::ValueArray50):
        (testing::internal::ValueArray50::operator ParamGenerator<T> const):
        (testing::internal::CartesianProductGenerator2::CartesianProductGenerator2):
        (testing::internal::CartesianProductGenerator2::~CartesianProductGenerator2):
        (testing::internal::CartesianProductGenerator2::Begin const):
        (testing::internal::CartesianProductGenerator2::End const):
        (testing::internal::CartesianProductGenerator2::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator2::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator2::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator2::Iterator::Advance):
        (testing::internal::CartesianProductGenerator2::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator2::Iterator::Current const):
        (testing::internal::CartesianProductGenerator2::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator2::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator2::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator3::CartesianProductGenerator3):
        (testing::internal::CartesianProductGenerator3::~CartesianProductGenerator3):
        (testing::internal::CartesianProductGenerator3::Begin const):
        (testing::internal::CartesianProductGenerator3::End const):
        (testing::internal::CartesianProductGenerator3::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator3::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator3::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator3::Iterator::Advance):
        (testing::internal::CartesianProductGenerator3::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator3::Iterator::Current const):
        (testing::internal::CartesianProductGenerator3::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator3::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator3::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator4::CartesianProductGenerator4):
        (testing::internal::CartesianProductGenerator4::~CartesianProductGenerator4):
        (testing::internal::CartesianProductGenerator4::Begin const):
        (testing::internal::CartesianProductGenerator4::End const):
        (testing::internal::CartesianProductGenerator4::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator4::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator4::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator4::Iterator::Advance):
        (testing::internal::CartesianProductGenerator4::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator4::Iterator::Current const):
        (testing::internal::CartesianProductGenerator4::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator4::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator4::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator5::CartesianProductGenerator5):
        (testing::internal::CartesianProductGenerator5::~CartesianProductGenerator5):
        (testing::internal::CartesianProductGenerator5::Begin const):
        (testing::internal::CartesianProductGenerator5::End const):
        (testing::internal::CartesianProductGenerator5::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator5::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator5::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator5::Iterator::Advance):
        (testing::internal::CartesianProductGenerator5::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator5::Iterator::Current const):
        (testing::internal::CartesianProductGenerator5::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator5::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator5::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator6::CartesianProductGenerator6):
        (testing::internal::CartesianProductGenerator6::~CartesianProductGenerator6):
        (testing::internal::CartesianProductGenerator6::Begin const):
        (testing::internal::CartesianProductGenerator6::End const):
        (testing::internal::CartesianProductGenerator6::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator6::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator6::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator6::Iterator::Advance):
        (testing::internal::CartesianProductGenerator6::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator6::Iterator::Current const):
        (testing::internal::CartesianProductGenerator6::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator6::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator6::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator7::CartesianProductGenerator7):
        (testing::internal::CartesianProductGenerator7::~CartesianProductGenerator7):
        (testing::internal::CartesianProductGenerator7::Begin const):
        (testing::internal::CartesianProductGenerator7::End const):
        (testing::internal::CartesianProductGenerator7::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator7::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator7::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator7::Iterator::Advance):
        (testing::internal::CartesianProductGenerator7::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator7::Iterator::Current const):
        (testing::internal::CartesianProductGenerator7::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator7::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator7::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator8::CartesianProductGenerator8):
        (testing::internal::CartesianProductGenerator8::~CartesianProductGenerator8):
        (testing::internal::CartesianProductGenerator8::Begin const):
        (testing::internal::CartesianProductGenerator8::End const):
        (testing::internal::CartesianProductGenerator8::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator8::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator8::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator8::Iterator::Advance):
        (testing::internal::CartesianProductGenerator8::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator8::Iterator::Current const):
        (testing::internal::CartesianProductGenerator8::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator8::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator8::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator9::CartesianProductGenerator9):
        (testing::internal::CartesianProductGenerator9::~CartesianProductGenerator9):
        (testing::internal::CartesianProductGenerator9::Begin const):
        (testing::internal::CartesianProductGenerator9::End const):
        (testing::internal::CartesianProductGenerator9::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator9::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator9::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator9::Iterator::Advance):
        (testing::internal::CartesianProductGenerator9::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator9::Iterator::Current const):
        (testing::internal::CartesianProductGenerator9::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator9::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator9::Iterator::AtEnd const):
        (testing::internal::CartesianProductGenerator10::CartesianProductGenerator10):
        (testing::internal::CartesianProductGenerator10::~CartesianProductGenerator10):
        (testing::internal::CartesianProductGenerator10::Begin const):
        (testing::internal::CartesianProductGenerator10::End const):
        (testing::internal::CartesianProductGenerator10::Iterator::Iterator):
        (testing::internal::CartesianProductGenerator10::Iterator::~Iterator):
        (testing::internal::CartesianProductGenerator10::Iterator::BaseGenerator const):
        (testing::internal::CartesianProductGenerator10::Iterator::Advance):
        (testing::internal::CartesianProductGenerator10::Iterator::Clone const):
        (testing::internal::CartesianProductGenerator10::Iterator::Current const):
        (testing::internal::CartesianProductGenerator10::Iterator::Equals const):
        (testing::internal::CartesianProductGenerator10::Iterator::ComputeCurrentValue):
        (testing::internal::CartesianProductGenerator10::Iterator::AtEnd const):
        (testing::internal::CartesianProductHolder2::CartesianProductHolder2):
        (testing::internal::CartesianProductHolder2::operator ParamGenerator< ::testing::tuple<T1, T2> > const):
        (testing::internal::CartesianProductHolder3::CartesianProductHolder3):
        (testing::internal::CartesianProductHolder3::operator ParamGenerator< ::testing::tuple<T1, T2, T3> > const):
        (testing::internal::CartesianProductHolder4::CartesianProductHolder4):
        (testing::internal::CartesianProductHolder4::operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> > const):
        (testing::internal::CartesianProductHolder5::CartesianProductHolder5):
        (testing::internal::CartesianProductHolder5::operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> > const):
        (testing::internal::CartesianProductHolder6::CartesianProductHolder6):
        (testing::internal::CartesianProductHolder6::operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> > const):
        (testing::internal::CartesianProductHolder7::CartesianProductHolder7):
        (testing::internal::CartesianProductHolder7:: const):
        (testing::internal::CartesianProductHolder8::CartesianProductHolder8):
        (testing::internal::CartesianProductHolder8:: const):
        (testing::internal::CartesianProductHolder9::CartesianProductHolder9):
        (testing::internal::CartesianProductHolder9:: const):
        (testing::internal::CartesianProductHolder10::CartesianProductHolder10):
        (testing::internal::CartesianProductHolder10:: const):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-param-util.h: Added.
        (testing::TestParamInfo::TestParamInfo):
        (testing::PrintToStringParamName::operator() const):
        (testing::internal::ParamIteratorInterface::~ParamIteratorInterface):
        (testing::internal::ParamIterator::ParamIterator):
        (testing::internal::ParamIterator::operator=):
        (testing::internal::ParamIterator::operator* const):
        (testing::internal::ParamIterator::operator-> const):
        (testing::internal::ParamIterator::operator++):
        (testing::internal::ParamIterator::operator== const):
        (testing::internal::ParamIterator::operator!= const):
        (testing::internal::ParamGeneratorInterface::~ParamGeneratorInterface):
        (testing::internal::ParamGenerator::ParamGenerator):
        (testing::internal::ParamGenerator::operator=):
        (testing::internal::ParamGenerator::begin const):
        (testing::internal::ParamGenerator::end const):
        (testing::internal::RangeGenerator::RangeGenerator):
        (testing::internal::RangeGenerator::~RangeGenerator):
        (testing::internal::RangeGenerator::Begin const):
        (testing::internal::RangeGenerator::End const):
        (testing::internal::RangeGenerator::Iterator::Iterator):
        (testing::internal::RangeGenerator::Iterator::~Iterator):
        (testing::internal::RangeGenerator::Iterator::BaseGenerator const):
        (testing::internal::RangeGenerator::Iterator::Advance):
        (testing::internal::RangeGenerator::Iterator::Clone const):
        (testing::internal::RangeGenerator::Iterator::Current const):
        (testing::internal::RangeGenerator::Iterator::Equals const):
        (testing::internal::RangeGenerator::CalculateEndIndex):
        (testing::internal::ValuesInIteratorRangeGenerator::ValuesInIteratorRangeGenerator):
        (testing::internal::ValuesInIteratorRangeGenerator::~ValuesInIteratorRangeGenerator):
        (testing::internal::ValuesInIteratorRangeGenerator::Begin const):
        (testing::internal::ValuesInIteratorRangeGenerator::End const):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::Iterator):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::~Iterator):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::BaseGenerator const):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::Advance):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::Clone const):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::Current const):
        (testing::internal::ValuesInIteratorRangeGenerator::Iterator::Equals const):
        (testing::internal::DefaultParamName):
        (testing::internal::GetParamNameGen):
        (testing::internal::ParameterizedTestFactory::ParameterizedTestFactory):
        (testing::internal::ParameterizedTestFactory::CreateTest):
        (testing::internal::TestMetaFactoryBase::~TestMetaFactoryBase):
        (testing::internal::TestMetaFactory::TestMetaFactory):
        (testing::internal::TestMetaFactory::CreateTestFactory):
        (testing::internal::ParameterizedTestCaseInfoBase::~ParameterizedTestCaseInfoBase):
        (testing::internal::ParameterizedTestCaseInfoBase::ParameterizedTestCaseInfoBase):
        (testing::internal::ParameterizedTestCaseInfo::ParameterizedTestCaseInfo):
        (testing::internal::ParameterizedTestCaseInfo::GetTestCaseName const):
        (testing::internal::ParameterizedTestCaseInfo::GetTestCaseTypeId const):
        (testing::internal::ParameterizedTestCaseInfo::AddTestPattern):
        (testing::internal::ParameterizedTestCaseInfo::AddTestCaseInstantiation):
        (testing::internal::ParameterizedTestCaseInfo::RegisterTests):
        (testing::internal::ParameterizedTestCaseInfo::TestInfo::TestInfo):
        (testing::internal::ParameterizedTestCaseInfo::InstantiationInfo::InstantiationInfo):
        (testing::internal::ParameterizedTestCaseInfo::IsValidParamName):
        (testing::internal::ParameterizedTestCaseRegistry::ParameterizedTestCaseRegistry):
        (testing::internal::ParameterizedTestCaseRegistry::~ParameterizedTestCaseRegistry):
        (testing::internal::ParameterizedTestCaseRegistry::GetTestCasePatternHolder):
        (testing::internal::ParameterizedTestCaseRegistry::RegisterTests):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-port-arch.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-port.h: Added.
        (testing::internal::scoped_ptr::scoped_ptr):
        (testing::internal::scoped_ptr::~scoped_ptr):
        (testing::internal::scoped_ptr::operator* const):
        (testing::internal::scoped_ptr::operator-> const):
        (testing::internal::scoped_ptr::get const):
        (testing::internal::scoped_ptr::release):
        (testing::internal::scoped_ptr::reset):
        (testing::internal::scoped_ptr::swap):
        (testing::internal::LogToStderr):
        (testing::internal::FlushInfoLog):
        (testing::internal::move):
        (testing::internal::ImplicitCast_):
        (testing::internal::DownCast_):
        (testing::internal::CheckedDowncastToActualType):
        (testing::internal::SleepMilliseconds):
        (testing::internal::Notification::Notification):
        (testing::internal::Notification::~Notification):
        (testing::internal::Notification::Notify):
        (testing::internal::Notification::WaitForNotification):
        (testing::internal::ThreadWithParamBase::~ThreadWithParamBase):
        (testing::internal::ThreadFuncWithCLinkage):
        (testing::internal::ThreadWithParam::ThreadWithParam):
        (testing::internal::ThreadWithParam::~ThreadWithParam):
        (testing::internal::ThreadWithParam::Join):
        (testing::internal::ThreadWithParam::Run):
        (testing::internal::GTestMutexLock::GTestMutexLock):
        (testing::internal::GTestMutexLock::~GTestMutexLock):
        (testing::internal::ThreadLocalValueHolderBase::~ThreadLocalValueHolderBase):
        (testing::internal::ThreadLocalBase::ThreadLocalBase):
        (testing::internal::ThreadLocalBase::~ThreadLocalBase):
        (testing::internal::ThreadWithParam::RunnableImpl::RunnableImpl):
        (testing::internal::ThreadWithParam::RunnableImpl::~RunnableImpl):
        (testing::internal::ThreadWithParam::RunnableImpl::Run):
        (testing::internal::ThreadLocal::ThreadLocal):
        (testing::internal::ThreadLocal::~ThreadLocal):
        (testing::internal::ThreadLocal::pointer):
        (testing::internal::ThreadLocal::pointer const):
        (testing::internal::ThreadLocal::get const):
        (testing::internal::ThreadLocal::set):
        (testing::internal::ThreadLocal::ValueHolder::ValueHolder):
        (testing::internal::ThreadLocal::ValueHolder::pointer):
        (testing::internal::ThreadLocal::GetOrCreateValue const):
        (testing::internal::ThreadLocal::NewValueForCurrentThread const):
        (testing::internal::ThreadLocal::ValueHolderFactory::ValueHolderFactory):
        (testing::internal::ThreadLocal::ValueHolderFactory::~ValueHolderFactory):
        (testing::internal::ThreadLocal::DefaultValueHolderFactory::DefaultValueHolderFactory):
        (testing::internal::ThreadLocal::DefaultValueHolderFactory::MakeNewHolder const):
        (testing::internal::ThreadLocal::InstanceValueHolderFactory::InstanceValueHolderFactory):
        (testing::internal::ThreadLocal::InstanceValueHolderFactory::MakeNewHolder const):
        (testing::internal::MutexBase::Lock):
        (testing::internal::MutexBase::Unlock):
        (testing::internal::MutexBase::AssertHeld const):
        (testing::internal::Mutex::Mutex):
        (testing::internal::Mutex::~Mutex):
        (testing::internal::DeleteThreadLocalValue):
        (testing::internal::ThreadLocal::CreateKey):
        (testing::internal::Mutex::Lock):
        (testing::internal::Mutex::Unlock):
        (testing::internal::Mutex::AssertHeld const):
        (testing::internal::IsAlpha):
        (testing::internal::IsAlNum):
        (testing::internal::IsDigit):
        (testing::internal::IsLower):
        (testing::internal::IsSpace):
        (testing::internal::IsUpper):
        (testing::internal::IsXDigit):
        (testing::internal::ToLower):
        (testing::internal::ToUpper):
        (testing::internal::StripTrailingSpaces):
        (testing::internal::posix::IsATTY):
        (testing::internal::posix::StrCaseCmp):
        (testing::internal::posix::StrDup):
        (testing::internal::posix::FileNo):
        (testing::internal::posix::Stat):
        (testing::internal::posix::RmDir):
        (testing::internal::posix::IsDir):
        (testing::internal::posix::StrNCpy):
        (testing::internal::posix::ChDir):
        (testing::internal::posix::FOpen):
        (testing::internal::posix::FReopen):
        (testing::internal::posix::FDOpen):
        (testing::internal::posix::FClose):
        (testing::internal::posix::Read):
        (testing::internal::posix::Write):
        (testing::internal::posix::Close):
        (testing::internal::posix::StrError):
        (testing::internal::posix::GetEnv):
        (testing::internal::posix::Abort):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-string.h: Added.
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-type-util.h: Added.
        (testing::internal::GetTypeName):
        * StitchMarker/folly/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest-filepath.cc: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest-internal-inl.h: Added.
        (testing::internal::GetRandomSeedFromFlag):
        (testing::internal::GetNextRandomSeed):
        (testing::internal::GTestFlagSaver::GTestFlagSaver):
        (testing::internal::GTestFlagSaver::~GTestFlagSaver):
        (testing::internal::CountIf):
        (testing::internal::ForEach):
        (testing::internal::GetElementOr):
        (testing::internal::ShuffleRange):
        (testing::internal::Shuffle):
        (testing::internal::Delete):
        (testing::internal::TestPropertyKeyIs::TestPropertyKeyIs):
        (testing::internal::TestPropertyKeyIs::operator() const):
        (testing::internal::OsStackTraceGetterInterface::OsStackTraceGetterInterface):
        (testing::internal::OsStackTraceGetterInterface::~OsStackTraceGetterInterface):
        (testing::internal::OsStackTraceGetter::OsStackTraceGetter):
        (testing::internal::GetUnitTestImpl):
        (testing::internal::TestResultAccessor::RecordProperty):
        (testing::internal::TestResultAccessor::ClearTestPartResults):
        (testing::internal::TestResultAccessor::test_part_results):
        * StitchMarker/folly/gtest/googletest/src/gtest-port.cc: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest-printers.cc: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest-test-part.cc: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest.cc: Added.
        * StitchMarker/folly/gtest/googletest/src/gtest_main.cc: Added.
        * StitchMarker/ogiroux.sh: Added. Build script.
        * StitchMarker/ogiroux/include/details/config.hpp: Added.
        * StitchMarker/ogiroux/include/semaphore: Added.
        * StitchMarker/ogiroux/lib/semaphore.cpp: Added.
        (cuda::std::experimental::v1::details::__semaphore_fixalign):
        (cuda::std::experimental::v1::details::__semaphore_readint):
        (cuda::std::experimental::v1::details::__semaphore_wait):
        (cuda::std::experimental::v1::details::__semaphore_wait_timed):
        (cuda::std::experimental::v1::details::__semaphore_wake_one):
        (cuda::std::experimental::v1::details::__semaphore_wake_all):
        * StitchMarker/ogiroux/test.cpp: Added.
        (main):
        * StitchMarker/ogiroux/test.hpp: Added.
        * StitchMarker/ogiroux/test_defs.cpp: Added.
        (start_gpu_threads):
        (stop_gpu_threads):
        (max_gpu_threads):
        (get_cpu_time):
        (user_time_consumed):
        (system_time_consumed):
        (set_affinity):
        (unfair_lock::lock):
        (unfair_lock::unlock):
        (make64):
        (work_item_struct::do_it):
        (allocate_work_item):
        (free_work_item):
        (report):
        (run_core):
        (run_scenario):
        (allocate_heap):
        (free_heap):
        (run_scenario_singlethreaded):
        (run_scenario_uncontended):
        (run_scenario_shortest):
        (run_scenario_short):
        (run_scenario_long):
        (run_scenario_phaser):
        (run_scenarios_inner):
        (run_barrier_scenarios):
        (run_mutex_scenarios):
        (run_and_report_scenarios):
        (null_mutex::lock):
        (null_mutex::unlock):
        (run_calibration):
        (print_headers):
        * StitchMarker/wtf.sh: Added. Build script.
        * StitchMarker/wtf/ASCIICType.h: Added.
        (WTF::isASCII):
        (WTF::isASCIILower):
        (WTF::toASCIILowerUnchecked):
        (WTF::isASCIIAlpha):
        (WTF::isASCIIDigit):
        (WTF::isASCIIAlphanumeric):
        (WTF::isASCIIHexDigit):
        (WTF::isASCIIBinaryDigit):
        (WTF::isASCIIOctalDigit):
        (WTF::isASCIIPrintable):
        (WTF::isASCIISpace):
        (WTF::isASCIIUpper):
        (WTF::toASCIILower):
        (WTF::toASCIIUpper):
        (WTF::toASCIIHexValue):
        (WTF::lowerNibbleToASCIIHexDigit):
        (WTF::upperNibbleToASCIIHexDigit):
        (WTF::lowerNibbleToLowercaseASCIIHexDigit):
        (WTF::upperNibbleToLowercaseASCIIHexDigit):
        (WTF::isASCIIAlphaCaselessEqual):
        * StitchMarker/wtf/Assertions.cpp: Added.
        (WTFCrashWithInfo):
        (WTF::resetAccumulatedLogs):
        (WTF::getAndResetAccumulatedLogs):
        * StitchMarker/wtf/Assertions.h: Added.
        (UNREACHABLE_FOR_PLATFORM):
        (WTF::isIntegralType):
        (compilerFenceForCrash):
        * StitchMarker/wtf/Atomics.h: Added.
        (WTF::hasFence):
        (WTF::Atomic::load const):
        (WTF::Atomic::loadRelaxed const):
        (WTF::Atomic::loadFullyFenced const):
        (WTF::Atomic::store):
        (WTF::Atomic::storeRelaxed):
        (WTF::Atomic::storeFullyFenced):
        (WTF::Atomic::compareExchangeWeak):
        (WTF::Atomic::compareExchangeWeakRelaxed):
        (WTF::Atomic::compareExchangeStrong):
        (WTF::Atomic::exchangeAdd):
        (WTF::Atomic::exchangeAnd):
        (WTF::Atomic::exchangeOr):
        (WTF::Atomic::exchangeSub):
        (WTF::Atomic::exchangeXor):
        (WTF::Atomic::exchange):
        (WTF::Atomic::transaction):
        (WTF::Atomic::transactionRelaxed):
        (WTF::Atomic::Atomic):
        (WTF::atomicLoad):
        (WTF::atomicLoadFullyFenced):
        (WTF::atomicStore):
        (WTF::atomicStoreFullyFenced):
        (WTF::atomicCompareExchangeWeak):
        (WTF::atomicCompareExchangeWeakRelaxed):
        (WTF::atomicCompareExchangeStrong):
        (WTF::atomicExchangeAdd):
        (WTF::atomicExchangeAnd):
        (WTF::atomicExchangeOr):
        (WTF::atomicExchangeSub):
        (WTF::atomicExchangeXor):
        (WTF::atomicExchange):
        (WTF::compilerFence):
        (WTF::arm_dmb):
        (WTF::arm_dmb_st):
        (WTF::arm_isb):
        (WTF::loadLoadFence):
        (WTF::loadStoreFence):
        (WTF::storeLoadFence):
        (WTF::storeStoreFence):
        (WTF::memoryBarrierAfterLock):
        (WTF::memoryBarrierBeforeUnlock):
        (WTF::crossModifyingCodeFence):
        (WTF::x86_ortop):
        (WTF::x86_cpuid):
        (WTF::nullDependency):
        (WTF::dependency):
        (WTF::DependencyWith::DependencyWith):
        (WTF::dependencyWith):
        (WTF::consume):
        (WTF::ensurePointer):
        * StitchMarker/wtf/CheckedArithmetic.h: Added.
        (WTF::CrashOnOverflow::overflowed):
        (WTF::CrashOnOverflow::clearOverflow):
        (WTF::CrashOnOverflow::crash):
        (WTF::CrashOnOverflow::hasOverflowed const):
        (WTF::RecordOverflow::RecordOverflow):
        (WTF::RecordOverflow::overflowed):
        (WTF::RecordOverflow::clearOverflow):
        (WTF::RecordOverflow::crash):
        (WTF::RecordOverflow::hasOverflowed const):
        (WTF::isInBounds):
        (WTF::convertSafely):
        (WTF::safeAdd):
        (WTF::safeSub):
        (WTF::safeMultiply):
        (WTF::safeEquals):
        (WTF::Checked::Checked):
        (WTF::Checked::operator=):
        (WTF::Checked::operator++):
        (WTF::Checked::operator--):
        (WTF::Checked::operator! const):
        (WTF::Checked::operator bool const):
        (WTF::Checked::unsafeGet const):
        (WTF::Checked::operator+=):
        (WTF::Checked::operator-=):
        (WTF::Checked::operator*=):
        (WTF::Checked::operator==):
        (WTF::Checked::operator!=):
        (WTF::Checked::operator< const):
        (WTF::Checked::operator<= const):
        (WTF::Checked::operator> const):
        (WTF::Checked::operator>= const):
        (WTF::operator+):
        (WTF::operator-):
        (WTF::operator*):
        (WTF::checkedSum):
        (WTF::sumOverflows):
        (WTF::differenceOverflows):
        (WTF::checkedProduct):
        (WTF::productOverflows):
        * StitchMarker/wtf/ClockType.cpp: Added.
        (WTF::printInternal):
        * StitchMarker/wtf/ClockType.h: Added.
        * StitchMarker/wtf/CommaPrinter.h: Added.
        (WTF::CommaPrinter::CommaPrinter):
        (WTF::CommaPrinter::dump const):
        (WTF::CommaPrinter::didPrint const):
        * StitchMarker/wtf/Compiler.h: Added.
        * StitchMarker/wtf/Condition.h: Added.
        (WTF::ConditionBase::waitUntil):
        (WTF::ConditionBase::waitFor):
        (WTF::ConditionBase::wait):
        (WTF::ConditionBase::notifyOne):
        (WTF::ConditionBase::notifyAll):
        (WTF::Condition::Condition):
        * StitchMarker/wtf/CryptographicallyRandomNumber.h: Added.
        * StitchMarker/wtf/CurrentTime.cpp: Added.
        (WTF::lowResUTCTime):
        (WTF::highResUpTime):
        (WTF::qpcAvailable):
        (WTF::currentTime):
        (WTF::monotonicallyIncreasingTime):
        (WTF::currentCPUTime):
        (WTF::sleep):
        * StitchMarker/wtf/CurrentTime.h: Added.
        (WTF::currentTimeMS):
        (WTF::monotonicallyIncreasingTimeMS):
        (WTF::sleepMS):
        * StitchMarker/wtf/DataLog.cpp: Added.
        (WTF::initializeLogFileOnce):
        (WTF::initializeLogFile):
        (WTF::setDataFile):
        (WTF::dataFile):
        (WTF::dataLogFV):
        (WTF::dataLogF):
        (WTF::dataLogFString):
        * StitchMarker/wtf/DataLog.h: Added.
        (WTF::dataLog):
        (WTF::dataLogLn):
        (WTF::dataLogIf):
        (WTF::dataLogLnIf):
        * StitchMarker/wtf/DateMath.cpp: Added.
        (WTF::startsWithLettersIgnoringASCIICase):
        (WTF::getLocalTime):
        (WTF::isLeapYear):
        (WTF::daysInYear):
        (WTF::daysFrom1970ToYear):
        (WTF::msToDays):
        (WTF::appendTwoDigitNumber):
        (WTF::msToYear):
        (WTF::dayInYear):
        (WTF::msToMilliseconds):
        (WTF::msToMinutes):
        (WTF::msToHours):
        (WTF::monthFromDayInYear):
        (WTF::checkMonth):
        (WTF::dayInMonthFromDayInYear):
        (WTF::dateToDaysFrom1970):
        (WTF::maximumYearForDST):
        (WTF::minimumYearForDST):
        (WTF::equivalentYearForDST):
        (WTF::timeZoneInformationForYearFunction):
        (WTF::calculateUTCOffset):
        (WTF::UnixTimeToFileTime):
        (WTF::calculateDSTOffset):
        (WTF::calculateLocalTimeOffset):
        (WTF::initializeDates):
        (WTF::ymdhmsToSeconds):
        (WTF::skipSpacesAndComments):
        (WTF::findMonth):
        (WTF::parseInt):
        (WTF::parseLong):
        (WTF::parseES5DatePortion):
        (WTF::parseES5TimePortion):
        (WTF::parseES5DateFromNullTerminatedCharacters):
        (WTF::parseDateFromNullTerminatedCharacters):
        (WTF::timeClip):
        (WTF::makeRFC2822DateString):
        * StitchMarker/wtf/DateMath.h: Added.
        (WTF::LocalTimeOffset::LocalTimeOffset):
        (WTF::LocalTimeOffset::operator==):
        (WTF::LocalTimeOffset::operator!=):
        (WTF::jsCurrentTime):
        * StitchMarker/wtf/Deque.h: Added.
        (WTF::Deque::size const):
        (WTF::Deque::isEmpty const):
        (WTF::Deque::begin):
        (WTF::Deque::end):
        (WTF::Deque::begin const):
        (WTF::Deque::end const):
        (WTF::Deque::rbegin):
        (WTF::Deque::rend):
        (WTF::Deque::rbegin const):
        (WTF::Deque::rend const):
        (WTF::Deque::first):
        (WTF::Deque::first const):
        (WTF::Deque::last):
        (WTF::Deque::last const):
        (WTF::Deque::append):
        (WTF::DequeIteratorBase::assign):
        (WTF::DequeIterator::DequeIterator):
        (WTF::DequeIterator::operator=):
        (WTF::DequeIterator::operator* const):
        (WTF::DequeIterator::operator-> const):
        (WTF::DequeIterator::operator== const):
        (WTF::DequeIterator::operator!= const):
        (WTF::DequeIterator::operator++):
        (WTF::DequeIterator::operator--):
        (WTF::DequeConstIterator::DequeConstIterator):
        (WTF::DequeConstIterator::operator=):
        (WTF::DequeConstIterator::operator* const):
        (WTF::DequeConstIterator::operator-> const):
        (WTF::DequeConstIterator::operator== const):
        (WTF::DequeConstIterator::operator!= const):
        (WTF::DequeConstIterator::operator++):
        (WTF::DequeConstIterator::operator--):
        (WTF::inlineCapacity>::checkValidity const):
        (WTF::inlineCapacity>::checkIndexValidity const):
        (WTF::inlineCapacity>::invalidateIterators):
        (WTF::inlineCapacity>::Deque):
        (WTF::=):
        (WTF::inlineCapacity>::destroyAll):
        (WTF::inlineCapacity>::~Deque):
        (WTF::inlineCapacity>::swap):
        (WTF::inlineCapacity>::clear):
        (WTF::inlineCapacity>::findIf):
        (WTF::inlineCapacity>::expandCapacityIfNeeded):
        (WTF::inlineCapacity>::expandCapacity):
        (WTF::inlineCapacity>::takeFirst):
        (WTF::inlineCapacity>::takeLast):
        (WTF::inlineCapacity>::append):
        (WTF::inlineCapacity>::prepend):
        (WTF::inlineCapacity>::removeFirst):
        (WTF::inlineCapacity>::removeLast):
        (WTF::inlineCapacity>::remove):
        (WTF::inlineCapacity>::removeAllMatching):
        (WTF::inlineCapacity>::appendAndBubble):
        (WTF::inlineCapacity>::addToIteratorsList):
        (WTF::inlineCapacity>::removeFromIteratorsList):
        (WTF::inlineCapacity>::DequeIteratorBase):
        (WTF::inlineCapacity>::~DequeIteratorBase):
        (WTF::inlineCapacity>::isEqual const):
        (WTF::inlineCapacity>::increment):
        (WTF::inlineCapacity>::decrement):
        (WTF::inlineCapacity>::after const):
        (WTF::inlineCapacity>::before const):
        * StitchMarker/wtf/Expected.h: Added.
        (WTF::UnexpectedType::UnexpectedType):
        (WTF::UnexpectedType::value const):
        (WTF::UnexpectedType::value):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::operator<):
        (WTF::operator>):
        (WTF::operator<=):
        (WTF::operator>=):
        (WTF::makeUnexpected):
        (WTF::ExpectedDetail::Throw):
        (WTF::ExpectedDetail::destroy):
        (WTF::ExpectedDetail::std::is_trivially_destructible<T>::value):
        (WTF::ExpectedDetail::ConstexprBase::ConstexprBase):
        (WTF::ExpectedDetail::Base::Base):
        (WTF::ExpectedDetail::Base::~Base):
        (WTF::Expected::Expected):
        (WTF::Expected::operator=):
        (WTF::Expected::swap):
        (WTF::Expected::operator-> const):
        (WTF::Expected::operator->):
        (WTF::Expected::operator* const):
        (WTF::Expected::operator*):
        (WTF::Expected::operator bool const):
        (WTF::Expected::hasValue const):
        (WTF::Expected::value const):
        (WTF::Expected::value):
        (WTF::Expected::error const):
        (WTF::Expected::error):
        (WTF::Expected::getUnexpected const):
        (WTF::Expected::valueOr const):
        (WTF::Expected::valueOr):
        (WTF::swap):
        (WTF::makeExpected):
        (WTF::makeExpectedFromError):
        * StitchMarker/wtf/ExportMacros.h: Added.
        * StitchMarker/wtf/FastMalloc.cpp: Added.
        (WTF::fastSetMaxSingleAllocationSize):
        (WTF::fastZeroedMalloc):
        (WTF::fastStrDup):
        (WTF::tryFastZeroedMalloc):
        (WTF::isFastMallocEnabled):
        (WTF::fastMallocGoodSize):
        (WTF::fastAlignedMalloc):
        (WTF::tryFastAlignedMalloc):
        (WTF::fastAlignedFree):
        (WTF::tryFastMalloc):
        (WTF::fastMalloc):
        (WTF::tryFastCalloc):
        (WTF::fastCalloc):
        (WTF::fastFree):
        (WTF::fastRealloc):
        (WTF::releaseFastMallocFreeMemory):
        (WTF::releaseFastMallocFreeMemoryForThisThread):
        (WTF::fastMallocStatistics):
        (WTF::fastMallocSize):
        * StitchMarker/wtf/FastMalloc.h: Added.
        (WTF::TryMallocReturnValue::TryMallocReturnValue):
        (WTF::TryMallocReturnValue::~TryMallocReturnValue):
        (WTF::TryMallocReturnValue::getValue):
        (WTF::FastAllocator::FastAllocator):
        (WTF::FastAllocator::allocate):
        (WTF::FastAllocator::deallocate):
        (WTF::operator==):
        (WTF::operator!=):
        * StitchMarker/wtf/FastTLS.h: Added.
        (WTF::fastTLSOffsetForKey):
        * StitchMarker/wtf/FeatureDefines.h: Added.
        * StitchMarker/wtf/FilePrintStream.cpp: Added.
        (WTF::FilePrintStream::FilePrintStream):
        (WTF::FilePrintStream::~FilePrintStream):
        (WTF::FilePrintStream::open):
        (WTF::FilePrintStream::vprintf):
        (WTF::FilePrintStream::flush):
        * StitchMarker/wtf/FilePrintStream.h: Added.
        (WTF::FilePrintStream::file):
        * StitchMarker/wtf/Forward.h: Added.
        * StitchMarker/wtf/Function.h: Added.
        (WTF::Function<Out):
        * StitchMarker/wtf/FunctionDispatcher.cpp: Added.
        (WTF::FunctionDispatcher::FunctionDispatcher):
        (WTF::FunctionDispatcher::~FunctionDispatcher):
        * StitchMarker/wtf/FunctionDispatcher.h: Added.
        * StitchMarker/wtf/GetPtr.h: Added.
        (WTF::getPtr):
        * StitchMarker/wtf/HashFunctions.h: Added.
        (WTF::intHash):
        (WTF::pairIntHash):
        (WTF::IntHash::hash):
        (WTF::IntHash::equal):
        (WTF::FloatHash::hash):
        (WTF::FloatHash::equal):
        (WTF::PairHash::hash):
        (WTF::PairHash::equal):
        (WTF::IntPairHash::hash):
        (WTF::IntPairHash::equal):
        (WTF::TupleHash::hash):
        (WTF::TupleHash::equal):
        (WTF::TupleHash::allTrue):
        * StitchMarker/wtf/HashIterators.h: Added.
        (WTF:: const const):
        (WTF::HashTableConstKeysIterator::HashTableConstKeysIterator):
        (WTF::HashTableConstKeysIterator::get const):
        (WTF::HashTableConstKeysIterator::operator* const):
        (WTF::HashTableConstKeysIterator::operator-> const):
        (WTF::HashTableConstKeysIterator::operator++):
        (WTF::HashTableConstValuesIterator::HashTableConstValuesIterator):
        (WTF::HashTableConstValuesIterator::get const):
        (WTF::HashTableConstValuesIterator::operator* const):
        (WTF::HashTableConstValuesIterator::operator-> const):
        (WTF::HashTableConstValuesIterator::operator++):
        (WTF::HashTableKeysIterator::HashTableKeysIterator):
        (WTF::HashTableKeysIterator::get const):
        (WTF::HashTableKeysIterator::operator* const):
        (WTF::HashTableKeysIterator::operator-> const):
        (WTF::HashTableKeysIterator::operator++):
        (WTF::HashTableKeysIterator::operator HashTableConstKeysIterator<HashTableType, KeyType, MappedType>):
        (WTF::HashTableValuesIterator::HashTableValuesIterator):
        (WTF::HashTableValuesIterator::get const):
        (WTF::HashTableValuesIterator::operator* const):
        (WTF::HashTableValuesIterator::operator-> const):
        (WTF::HashTableValuesIterator::operator++):
        (WTF::HashTableValuesIterator::operator HashTableConstValuesIterator<HashTableType, KeyType, MappedType>):
        (WTF::operator==):
        (WTF::operator!=):
        * StitchMarker/wtf/HashMap.h: Added.
        (WTF::KeyValuePairKeyExtractor::extract):
        (WTF::HashMapTranslator::hash):
        (WTF::HashMapTranslator::equal):
        (WTF::HashMapTranslator::translate):
        (WTF::HashMapEnsureTranslator::hash):
        (WTF::HashMapEnsureTranslator::equal):
        (WTF::HashMapEnsureTranslator::translate):
        (WTF::HashMapTranslatorAdapter::hash):
        (WTF::HashMapTranslatorAdapter::equal):
        (WTF::HashMapTranslatorAdapter::translate):
        (WTF::X>::swap):
        (WTF::X>::size const):
        (WTF::X>::capacity const):
        (WTF::X>::isEmpty const):
        (WTF::X>::begin):
        (WTF::X>::end):
        (WTF::X>::begin const):
        (WTF::X>::end const):
        (WTF::X>::find):
        (WTF::X>::find const):
        (WTF::X>::contains const):
        (WTF::X>::get const):
        (WTF::MappedTraitsArg>::inlineSet):
        (WTF::MappedTraitsArg>::inlineAdd):
        (WTF::MappedTraitsArg>::inlineEnsure):
        (WTF::MappedTraitsArg>::set):
        (WTF::MappedTraitsArg>::add):
        (WTF::MappedTraitsArg>::fastAdd):
        (WTF::MappedTraitsArg>::ensure):
        (WTF::MappedTraits>::get const):
        (WTF::MappedTraits>::fastGet const):
        (WTF::X>::remove):
        (WTF::X>::removeIf):
        (WTF::X>::clear):
        (WTF::MappedTraits>::take):
        (WTF::X>::inlineGet const):
        (WTF::X>::take):
        (WTF::X>::checkConsistency const):
        (WTF::X>::isValidKey):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::copyToVector):
        (WTF::copyKeysToVector):
        (WTF::copyValuesToVector):
        * StitchMarker/wtf/HashSet.h: Added.
        (WTF::IdentityExtractor::extract):
        (WTF::HashSetTranslator::hash):
        (WTF::HashSetTranslator::equal):
        (WTF::HashSetTranslator::translate):
        (WTF::HashSetTranslatorAdapter::hash):
        (WTF::HashSetTranslatorAdapter::equal):
        (WTF::HashSetTranslatorAdapter::translate):
        (WTF::V>::swap):
        (WTF::V>::size const):
        (WTF::V>::capacity const):
        (WTF::V>::isEmpty const):
        (WTF::V>::begin const):
        (WTF::V>::end const):
        (WTF::V>::find const):
        (WTF::V>::contains const):
        (WTF::Traits>::find const):
        (WTF::Traits>::contains const):
        (WTF::V>::add):
        (WTF::V>::addVoid):
        (WTF::Traits>::add):
        (WTF::V>::remove):
        (WTF::V>::removeIf):
        (WTF::V>::clear):
        (WTF::V>::take):
        (WTF::V>::takeAny):
        (WTF::Traits>::remove):
        (WTF::Traits>::take):
        (WTF::V>::isValidValue):
        (WTF::copyToVector):
        (WTF::= const):
        * StitchMarker/wtf/HashTable.h: Added.
        (WTF::addIterator):
        (WTF::removeIterator):
        (WTF::HashTableConstIterator::skipEmptyBuckets):
        (WTF::HashTableConstIterator::HashTableConstIterator):
        (WTF::HashTableConstIterator::~HashTableConstIterator):
        (WTF::HashTableConstIterator::operator=):
        (WTF::HashTableConstIterator::get const):
        (WTF::HashTableConstIterator::operator* const):
        (WTF::HashTableConstIterator::operator-> const):
        (WTF::HashTableConstIterator::operator++):
        (WTF::HashTableConstIterator::operator== const):
        (WTF::HashTableConstIterator::operator!= const):
        (WTF::HashTableConstIterator::checkValidity const):
        (WTF::HashTableIterator::HashTableIterator):
        (WTF::HashTableIterator::get const):
        (WTF::HashTableIterator::operator* const):
        (WTF::HashTableIterator::operator-> const):
        (WTF::HashTableIterator::operator++):
        (WTF::HashTableIterator::operator== const):
        (WTF::HashTableIterator::operator!= const):
        (WTF::HashTableIterator::operator const_iterator const):
        (WTF::IdentityHashTranslator::hash):
        (WTF::IdentityHashTranslator::equal):
        (WTF::IdentityHashTranslator::translate):
        (WTF::HashTableAddResult::HashTableAddResult):
        (WTF::HashTableAddResult::operator bool const):
        (WTF::HashTable::Stats::Stats):
        (WTF::HashTable::Stats::recordCollisionAtCount):
        (WTF::HashTable::Stats::dumpStats):
        (WTF::HashTable::~HashTable):
        (WTF::HashTable::begin):
        (WTF::HashTable::end):
        (WTF::HashTable::begin const):
        (WTF::HashTable::end const):
        (WTF::HashTable::size const):
        (WTF::HashTable::capacity const):
        (WTF::HashTable::isEmpty const):
        (WTF::HashTable::add):
        (WTF::HashTable::find):
        (WTF::HashTable::find const):
        (WTF::HashTable::contains const):
        (WTF::HashTable::isEmptyBucket):
        (WTF::HashTable::isDeletedBucket):
        (WTF::HashTable::isEmptyOrDeletedBucket):
        (WTF::HashTable::lookup):
        (WTF::HashTable::checkTableConsistency):
        (WTF::HashTable::internalCheckTableConsistency const):
        (WTF::HashTable::internalCheckTableConsistencyExceptSize const):
        (WTF::HashTable::internalCheckTableConsistencyExceptSize):
        (WTF::HashTable::internalCheckTableConsistency):
        (WTF::HashTable::lookupForWriting):
        (WTF::HashTable::shouldExpand const):
        (WTF::HashTable::mustRehashInPlace const):
        (WTF::HashTable::shouldShrink const):
        (WTF::HashTable::shrink):
        (WTF::HashTable::deleteBucket):
        (WTF::HashTable::makeLookupResult):
        (WTF::HashTable::makeIterator):
        (WTF::HashTable::makeConstIterator const):
        (WTF::HashTable::makeKnownGoodIterator):
        (WTF::HashTable::makeKnownGoodConstIterator const):
        (WTF::HashTable::checkTableConsistencyExceptSize):
        (WTF::HashTable::invalidateIterators):
        (WTF::KeyTraits>::HashTable):
        (WTF::doubleHash):
        (WTF::KeyTraits>::checkKey):
        (WTF::KeyTraits>::lookup):
        (WTF::KeyTraits>::inlineLookup):
        (WTF::KeyTraits>::lookupForWriting):
        (WTF::KeyTraits>::fullLookupForWriting):
        (WTF::KeyTraits>::addUniqueForInitialization):
        (WTF::HashTableBucketInitializer<false>::initialize):
        (WTF::HashTableBucketInitializer<true>::initialize):
        (WTF::KeyTraits>::initializeBucket):
        (WTF::KeyTraits>::add):
        (WTF::KeyTraits>::addPassingHashCode):
        (WTF::KeyTraits>::reinsert):
        (WTF::KeyTraits>::find):
        (WTF::KeyTraits>::find const):
        (WTF::KeyTraits>::contains const):
        (WTF::KeyTraits>::removeAndInvalidateWithoutEntryConsistencyCheck):
        (WTF::KeyTraits>::removeAndInvalidate):
        (WTF::KeyTraits>::remove):
        (WTF::KeyTraits>::removeWithoutEntryConsistencyCheck):
        (WTF::KeyTraits>::removeIf):
        (WTF::KeyTraits>::allocateTable):
        (WTF::KeyTraits>::deallocateTable):
        (WTF::KeyTraits>::expand):
        (WTF::KeyTraits>::rehash):
        (WTF::KeyTraits>::clear):
        (WTF::KeyTraits>::swap):
        (WTF::=):
        (WTF::KeyTraits>::checkTableConsistency const):
        (WTF::KeyTraits>::checkTableConsistencyExceptSize const):
        (WTF::KeyTraits>::invalidateIterators):
        (WTF::HashTableConstIteratorAdapter::HashTableConstIteratorAdapter):
        (WTF::HashTableConstIteratorAdapter::get const):
        (WTF::HashTableConstIteratorAdapter::operator* const):
        (WTF::HashTableConstIteratorAdapter::operator-> const):
        (WTF::HashTableConstIteratorAdapter::operator++):
        (WTF::HashTableIteratorAdapter::HashTableIteratorAdapter):
        (WTF::HashTableIteratorAdapter::get const):
        (WTF::HashTableIteratorAdapter::operator* const):
        (WTF::HashTableIteratorAdapter::operator-> const):
        (WTF::HashTableIteratorAdapter::operator++):
        (WTF::HashTableIteratorAdapter::operator HashTableConstIteratorAdapter<HashTableType, ValueType>):
        (WTF::operator==):
        (WTF::operator!=):
        * StitchMarker/wtf/HashTraits.h: Added.
        (WTF::GenericHashTraits::emptyValue):
        (WTF::GenericHashTraits::assignToEmpty):
        (WTF::GenericHashTraits::peek):
        (WTF::GenericHashTraits::take):
        (WTF::FloatHashTraits::emptyValue):
        (WTF::FloatHashTraits::constructDeletedValue):
        (WTF::FloatHashTraits::isDeletedValue):
        (WTF::UnsignedWithZeroKeyHashTraits::emptyValue):
        (WTF::UnsignedWithZeroKeyHashTraits::constructDeletedValue):
        (WTF::UnsignedWithZeroKeyHashTraits::isDeletedValue):
        (WTF::SignedWithZeroKeyHashTraits::emptyValue):
        (WTF::SignedWithZeroKeyHashTraits::constructDeletedValue):
        (WTF::SignedWithZeroKeyHashTraits::isDeletedValue):
        (WTF::StrongEnumHashTraits::emptyValue):
        (WTF::StrongEnumHashTraits::constructDeletedValue):
        (WTF::StrongEnumHashTraits::isDeletedValue):
        (WTF::HashTraits<P::constructDeletedValue):
        (WTF::HashTraits<P::isDeletedValue):
        (WTF::SimpleClassHashTraits::constructDeletedValue):
        (WTF::SimpleClassHashTraits::isDeletedValue):
        (WTF::HashTraits<RefPtr<P>>::emptyValue):
        (WTF::HashTraits<RefPtr<P>>::peek):
        (WTF::HashTraits<RefPtr<P>>::customDeleteBucket):
        (WTF::HashTraits<Ref<P>>::emptyValue):
        (WTF::HashTraits<Ref<P>>::isEmptyValue):
        (WTF::HashTraits<Ref<P>>::assignToEmpty):
        (WTF::HashTraits<Ref<P>>::peek):
        (WTF::HashTraits<Ref<P>>::take):
        (WTF::isHashTraitsEmptyValue):
        (WTF::hashTraitsDeleteBucket):
        (WTF::PairHashTraits::emptyValue):
        (WTF::PairHashTraits::constructDeletedValue):
        (WTF::PairHashTraits::isDeletedValue):
        (WTF::TupleHashTraits::allTrue):
        (WTF::TupleHashTraits::emptyValue):
        (WTF::TupleHashTraits::constructDeletedValue):
        (WTF::TupleHashTraits::isDeletedValue):
        (WTF::KeyValuePair::KeyValuePair):
        (WTF::KeyValuePairHashTraits::emptyValue):
        (WTF::KeyValuePairHashTraits::constructDeletedValue):
        (WTF::KeyValuePairHashTraits::isDeletedValue):
        (WTF::KeyValuePairHashTraits::customDeleteBucket):
        (WTF::NullableHashTraits::emptyValue):
        (WTF::CustomHashTraits::constructDeletedValue):
        (WTF::CustomHashTraits::isDeletedValue):
        (WTF::CustomHashTraits::emptyValue):
        (WTF::CustomHashTraits::isEmptyValue):
        * StitchMarker/wtf/Hasher.h: Added.
        (WTF::StringHasher::StringHasher):
        (WTF::StringHasher::addCharactersAssumingAligned):
        (WTF::StringHasher::addCharacter):
        (WTF::StringHasher::addCharacters):
        (WTF::StringHasher::Converter):
        (WTF::StringHasher::hashWithTop8BitsMasked const):
        (WTF::StringHasher::hash const):
        (WTF::StringHasher::computeHashAndMaskTop8Bits):
        (WTF::StringHasher::computeHash):
        (WTF::StringHasher::hashMemory):
        (WTF::StringHasher::finalize):
        (WTF::StringHasher::finalizeAndMaskTop8Bits):
        (WTF::StringHasher::computeLiteralHash):
        (WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
        (WTF::StringHasher::defaultConverter):
        (WTF::StringHasher::avalancheBits3):
        (WTF::StringHasher::avalancheBits2):
        (WTF::StringHasher::avalancheBits1):
        (WTF::StringHasher::avalancheBits0):
        (WTF::StringHasher::avalancheBits):
        (WTF::StringHasher::avoidZero):
        (WTF::StringHasher::processPendingCharacter const):
        (WTF::StringHasher::calculateWithRemainingLastCharacter1):
        (WTF::StringHasher::calculateWithRemainingLastCharacter0):
        (WTF::StringHasher::calculateWithRemainingLastCharacter):
        (WTF::StringHasher::calculate1):
        (WTF::StringHasher::calculate0):
        (WTF::StringHasher::calculate):
        (WTF::StringHasher::computeLiteralHashImpl):
        (WTF::IntegerHasher::add):
        (WTF::IntegerHasher::hash const):
        * StitchMarker/wtf/HexNumber.h: Added.
        (WTF::Internal::hexDigitsForMode):
        (WTF::appendByteAsHex):
        (WTF::placeByteAsHexCompressIfPossible):
        (WTF::placeByteAsHex):
        (WTF::appendUnsignedAsHex):
        (WTF::appendUnsigned64AsHex):
        (WTF::appendUnsignedAsHexFixedSize):
        * StitchMarker/wtf/IteratorRange.h: Added.
        (WTF::IteratorRange::IteratorRange):
        (WTF::IteratorRange::begin const):
        (WTF::IteratorRange::end const):
        (WTF::makeIteratorRange):
        * StitchMarker/wtf/ListHashSet.h: Added.
        (WTF::ListHashSet::begin):
        (WTF::ListHashSet::end):
        (WTF::ListHashSet::begin const):
        (WTF::ListHashSet::end const):
        (WTF::ListHashSet::rbegin):
        (WTF::ListHashSet::rend):
        (WTF::ListHashSet::rbegin const):
        (WTF::ListHashSet::rend const):
        (WTF::ListHashSetNode::ListHashSetNode):
        (WTF::ListHashSetNodeHashFunctions::hash):
        (WTF::ListHashSetNodeHashFunctions::equal):
        (WTF::ListHashSetIterator::ListHashSetIterator):
        (WTF::ListHashSetIterator::get const):
        (WTF::ListHashSetIterator::operator* const):
        (WTF::ListHashSetIterator::operator-> const):
        (WTF::ListHashSetIterator::operator++):
        (WTF::ListHashSetIterator::operator--):
        (WTF::ListHashSetIterator::operator== const):
        (WTF::ListHashSetIterator::operator!= const):
        (WTF::ListHashSetIterator::operator const_iterator const):
        (WTF::ListHashSetIterator::node):
        (WTF::ListHashSetConstIterator::ListHashSetConstIterator):
        (WTF::ListHashSetConstIterator::get const):
        (WTF::ListHashSetConstIterator::operator* const):
        (WTF::ListHashSetConstIterator::operator-> const):
        (WTF::ListHashSetConstIterator::operator++):
        (WTF::ListHashSetConstIterator::operator--):
        (WTF::ListHashSetConstIterator::operator== const):
        (WTF::ListHashSetConstIterator::operator!= const):
        (WTF::ListHashSetConstIterator::node):
        (WTF::ListHashSetTranslator::hash):
        (WTF::ListHashSetTranslator::equal):
        (WTF::ListHashSetTranslator::translate):
        (WTF::U>::ListHashSet):
        (WTF::=):
        (WTF::U>::swap):
        (WTF::U>::~ListHashSet):
        (WTF::U>::size const):
        (WTF::U>::capacity const):
        (WTF::U>::isEmpty const):
        (WTF::U>::first):
        (WTF::U>::removeFirst):
        (WTF::U>::takeFirst):
        (WTF::U>::first const):
        (WTF::U>::last):
        (WTF::U>::last const):
        (WTF::U>::removeLast):
        (WTF::U>::takeLast):
        (WTF::U>::find):
        (WTF::U>::find const):
        (WTF::ListHashSetTranslatorAdapter::hash):
        (WTF::ListHashSetTranslatorAdapter::equal):
        (WTF::U>::contains const):
        (WTF::U>::add):
        (WTF::U>::appendOrMoveToLast):
        (WTF::U>::prependOrMoveToFirst):
        (WTF::U>::insertBefore):
        (WTF::U>::remove):
        (WTF::U>::clear):
        (WTF::U>::unlink):
        (WTF::U>::unlinkAndDelete):
        (WTF::U>::appendNode):
        (WTF::U>::prependNode):
        (WTF::U>::insertNodeBefore):
        (WTF::U>::deleteAllNodes):
        (WTF::U>::makeIterator):
        (WTF::U>::makeConstIterator const):
        * StitchMarker/wtf/Lock.cpp: Added.
        (WTF::LockBase::lockSlow):
        (WTF::LockBase::unlockSlow):
        (WTF::LockBase::unlockFairlySlow):
        (WTF::LockBase::safepointSlow):
        * StitchMarker/wtf/Lock.h: Added.
        (WTF::LockBase::lock):
        (WTF::LockBase::tryLock):
        (WTF::LockBase::try_lock):
        (WTF::LockBase::unlock):
        (WTF::LockBase::unlockFairly):
        (WTF::LockBase::safepoint):
        (WTF::LockBase::isHeld const):
        (WTF::LockBase::isLocked const):
        (WTF::LockBase::isFullyReset const):
        (WTF::Lock::Lock):
        * StitchMarker/wtf/LockAlgorithm.h: Added.
        (WTF::LockAlgorithm::lockFastAssumingZero):
        (WTF::LockAlgorithm::lockFast):
        (WTF::LockAlgorithm::lock):
        (WTF::LockAlgorithm::tryLock):
        (WTF::LockAlgorithm::unlockFastAssumingZero):
        (WTF::LockAlgorithm::unlockFast):
        (WTF::LockAlgorithm::unlock):
        (WTF::LockAlgorithm::unlockFairly):
        (WTF::LockAlgorithm::safepointFast):
        (WTF::LockAlgorithm::safepoint):
        (WTF::LockAlgorithm::isLocked):
        (WTF::LockAlgorithm::safepointSlow):
        * StitchMarker/wtf/LockAlgorithmInlines.h: Added.
        (WTF::hasParkedBit>::lockSlow):
        (WTF::hasParkedBit>::unlockSlow):
        * StitchMarker/wtf/LockedPrintStream.cpp: Added.
        (WTF::LockedPrintStream::LockedPrintStream):
        (WTF::LockedPrintStream::~LockedPrintStream):
        (WTF::LockedPrintStream::vprintf):
        (WTF::LockedPrintStream::flush):
        (WTF::LockedPrintStream::begin):
        (WTF::LockedPrintStream::end):
        * StitchMarker/wtf/LockedPrintStream.h: Added.
        * StitchMarker/wtf/Locker.h: Added.
        (WTF::AbstractLocker::AbstractLocker):
        (WTF::Locker::Locker):
        (WTF::Locker::~Locker):
        (WTF::Locker::tryLock):
        (WTF::Locker::operator bool const):
        (WTF::Locker::unlockEarly):
        (WTF::Locker::operator=):
        (WTF::Locker::lock):
        (WTF::holdLock):
        (WTF::tryHoldLock):
        * StitchMarker/wtf/LoggingAccumulator.h: Added.
        * StitchMarker/wtf/MainThread.cpp: Added.
        (WTF::functionQueue):
        (WTF::initializeMainThread):
        (WTF::isMainThread):
        (WTF::initializeMainThreadToProcessMainThread):
        (WTF::initializeWebThread):
        (WTF::canAccessThreadLocalDataForThread):
        (WTF::dispatchFunctionsFromMainThread):
        (WTF::callOnMainThread):
        (WTF::setMainThreadCallbacksPaused):
        (WTF::initializeGCThreads):
        (WTF::registerGCThread):
        (WTF::isMainThreadOrGCThread):
        (WTF::mayBeGCThread):
        * StitchMarker/wtf/MainThread.h: Added.
        (WTF::isWebThread):
        (WTF::isUIThread):
        * StitchMarker/wtf/MallocPtr.h: Added.
        (WTF::MallocPtr::MallocPtr):
        (WTF::MallocPtr::~MallocPtr):
        (WTF::MallocPtr::get const):
        (WTF::MallocPtr::operator! const):
        (WTF::MallocPtr::operator* const):
        (WTF::MallocPtr::operator-> const):
        (WTF::MallocPtr::operator=):
        (WTF::MallocPtr::swap):
        (WTF::MallocPtr::malloc):
        (WTF::MallocPtr::realloc):
        (WTF::adoptMallocPtr):
        * StitchMarker/wtf/MathExtras.h: Added.
        (std::isfinite):
        (std::signbit):
        (std::isinf):
        (wtf_atan2):
        (deg2rad):
        (rad2deg):
        (deg2grad):
        (grad2deg):
        (turn2deg):
        (deg2turn):
        (rad2grad):
        (grad2rad):
        (defaultMinimumForClamp):
        (defaultMaximumForClamp):
        (clampTo):
        (clampToInteger):
        (clampToUnsigned):
        (clampToFloat):
        (clampToPositiveInteger):
        (clampToAccepting64):
        (isWithinIntRange):
        (normalizedFloat):
        (hasOneBitSet):
        (hasZeroOrOneBitsSet):
        (hasTwoOrMoreBitsSet):
        (getLSBSet):
        (divideRoundedUp):
        (timesThreePlusOneDividedByTwo):
        (isNotZeroAndOrdered):
        (isZeroOrUnordered):
        (isGreaterThanNonZeroPowerOfTwo):
        (isLessThan):
        (isLessThanEqual):
        (isGreaterThan):
        (isGreaterThanEqual):
        (wtf_pow):
        (decomposeDouble):
        (doubleToInteger):
        (WTF::roundUpToPowerOfTwo):
        (WTF::fastLog2):
        (WTF::safeFPDivision):
        (WTF::areEssentiallyEqual):
        (WTF::nanPropagatingMin):
        (WTF::nanPropagatingMax):
        (WTF::isIntegral):
        (WTF::incrementWithSaturation):
        (WTF::leftShiftWithSaturation):
        (WTF::nonEmptyRangesOverlap):
        (WTF::rangesOverlap):
        * StitchMarker/wtf/MonotonicTime.cpp: Added.
        (WTF::MonotonicTime::now):
        (WTF::MonotonicTime::approximateWallTime const):
        (WTF::MonotonicTime::dump const):
        * StitchMarker/wtf/MonotonicTime.h: Added.
        (WTF::MonotonicTime::MonotonicTime):
        (WTF::MonotonicTime::fromRawSeconds):
        (WTF::MonotonicTime::infinity):
        (WTF::MonotonicTime::nan):
        (WTF::MonotonicTime::secondsSinceEpoch const):
        (WTF::MonotonicTime::approximateMonotonicTime const):
        (WTF::MonotonicTime::operator bool const):
        (WTF::MonotonicTime::operator+ const):
        (WTF::MonotonicTime::operator- const):
        (WTF::MonotonicTime::operator% const):
        (WTF::MonotonicTime::operator+=):
        (WTF::MonotonicTime::operator-=):
        (WTF::MonotonicTime::operator== const):
        (WTF::MonotonicTime::operator!= const):
        (WTF::MonotonicTime::operator< const):
        (WTF::MonotonicTime::operator> const):
        (WTF::MonotonicTime::operator<= const):
        (WTF::MonotonicTime::operator>= const):
        (std::isnan):
        (std::isinf):
        (std::isfinite):
        * StitchMarker/wtf/NeverDestroyed.h: Added.
        (WTF::NeverDestroyed::NeverDestroyed):
        (WTF::NeverDestroyed::operator T&):
        (WTF::NeverDestroyed::get):
        (WTF::NeverDestroyed::operator const T& const):
        (WTF::NeverDestroyed::get const):
        (WTF::NeverDestroyed::storagePointer const):
        (WTF::NeverDestroyed::MaybeRelax::MaybeRelax):
        (WTF::LazyNeverDestroyed::construct):
        (WTF::LazyNeverDestroyed::operator T&):
        (WTF::LazyNeverDestroyed::get):
        (WTF::LazyNeverDestroyed::operator->):
        (WTF::LazyNeverDestroyed::operator const T& const):
        (WTF::LazyNeverDestroyed::get const):
        (WTF::LazyNeverDestroyed::operator-> const):
        (WTF::LazyNeverDestroyed::storagePointer const):
        (WTF::LazyNeverDestroyed::MaybeRelax::MaybeRelax):
        (WTF::makeNeverDestroyed):
        * StitchMarker/wtf/Noncopyable.h: Added.
        * StitchMarker/wtf/NotFound.h: Added.
        * StitchMarker/wtf/Optional.h: Added.
        (std::detail_::is_assignable::has_assign):
        (std::detail_::is_assignable::sizeof):
        (std::detail_::has_overloaded_addressof::has_overload):
        (std::detail_::has_overloaded_addressof::sizeof):
        (std::detail_::TR2_OPTIONAL_REQUIRES):
        (std::detail_::convert):
        (std::nullopt_t::nullopt_t):
        (std::bad_optional_access::bad_optional_access):
        (std::optional_base::optional_base):
        (std::optional_base::TR2_OPTIONAL_REQUIRES):
        (std::optional_base::~optional_base):
        (std::constexpr_optional_base::constexpr_optional_base):
        (std::constexpr_optional_base::TR2_OPTIONAL_REQUIRES):
        (std::optional::dataptr):
        (std::optional::dataptr const):
        (std::optional::contained_val const):
        (std::optional::contained_val):
        (std::optional::__NOEXCEPT_):
        (std::optional::optional):
        (std::optional::TR2_OPTIONAL_REQUIRES):
        (std::optional::operator=):
        (std::optional::emplace):
        (std::optional::operator -> const):
        (std::optional::operator ->):
        (std::optional::operator * const):
        (std::optional::operator *):
        (std::optional::value const):
        (std::optional::value):
        (std::optional::value_or const):
        (std::optional::value_or):
        (std::optional<T::operator-> const):
        (std::optional<T::operator* const):
        (std::optional<T::value const):
        (std::optional<T::value_or const):
        (std::operator==):
        (std::operator!=):
        (std::operator<):
        (std::operator>):
        (std::operator<=):
        (std::operator>=):
        (std::__NOEXCEPT_):
        (std::make_optional):
        (WTF::valueOrCompute):
        (std::hash<std::optional<T>>::operator() const):
        * StitchMarker/wtf/ParkingLot.cpp: Added.
        (WTF::ParkingLot::parkConditionallyImpl):
        (WTF::ParkingLot::unparkOne):
        (WTF::ParkingLot::unparkOneImpl):
        (WTF::ParkingLot::unparkCount):
        (WTF::ParkingLot::unparkAll):
        (WTF::ParkingLot::forEachImpl):
        * StitchMarker/wtf/ParkingLot.h: Added.
        (WTF::ParkingLot::parkConditionally):
        (WTF::ParkingLot::compareAndPark):
        (WTF::ParkingLot::unparkOne):
        (WTF::ParkingLot::forEach):
        * StitchMarker/wtf/Platform.h: Added.
        * StitchMarker/wtf/PlatformRegisters.h: Added.
        (WTF::registersFromUContext):
        * StitchMarker/wtf/PrintStream.cpp: Added.
        (WTF::PrintStream::PrintStream):
        (WTF::PrintStream::~PrintStream):
        (WTF::PrintStream::printf):
        (WTF::PrintStream::printfVariableFormat):
        (WTF::PrintStream::flush):
        (WTF::PrintStream::begin):
        (WTF::PrintStream::end):
        (WTF::printInternal):
        (WTF::dumpCharacter):
        * StitchMarker/wtf/PrintStream.h: Added.
        (WTF::boolForPrinting):
        (WTF::PrintStream::atomically):
        (WTF::PrintStream::print):
        (WTF::PrintStream::println):
        (WTF::PrintStream::printImpl):
        (WTF::printInternal):
        (WTF::PointerDump::PointerDump):
        (WTF::PointerDump::dump const):
        (WTF::pointerDump):
        (WTF::ValueInContext::ValueInContext):
        (WTF::ValueInContext::dump const):
        (WTF::inContext):
        (WTF::PointerDumpInContext::PointerDumpInContext):
        (WTF::PointerDumpInContext::dump const):
        (WTF::pointerDumpInContext):
        (WTF::ValueIgnoringContext::ValueIgnoringContext):
        (WTF::ValueIgnoringContext::dump const):
        (WTF::ignoringContext):
        (WTF::>::unpack):
        (WTF::FormatImpl::FormatImpl):
        (WTF::FormatImpl::dump const):
        * StitchMarker/wtf/ProcessID.h: Added.
        (WTF::getCurrentProcessID):
        * StitchMarker/wtf/RandomNumberSeed.h: Added.
        (WTF::initializeRandomNumberGenerator):
        * StitchMarker/wtf/RawPointer.h: Added.
        (WTF::RawPointer::RawPointer):
        (WTF::RawPointer::value const):
        * StitchMarker/wtf/RecursiveLockAdapter.h: Added.
        (WTF::RecursiveLockAdapter::RecursiveLockAdapter):
        (WTF::RecursiveLockAdapter::lock):
        (WTF::RecursiveLockAdapter::unlock):
        (WTF::RecursiveLockAdapter::tryLock):
        (WTF::RecursiveLockAdapter::isLocked const):
        * StitchMarker/wtf/Ref.h: Added.
        (WTF::adopted):
        (WTF::Ref::~Ref):
        (WTF::Ref::Ref):
        (WTF::Ref::isHashTableDeletedValue const):
        (WTF::Ref::hashTableDeletedValue):
        (WTF::Ref::isHashTableEmptyValue const):
        (WTF::Ref::hashTableEmptyValue):
        (WTF::Ref::ptrAllowingHashTableEmptyValue const):
        (WTF::Ref::ptrAllowingHashTableEmptyValue):
        (WTF::Ref::assignToHashTableEmptyValue):
        (WTF::Ref::operator-> const):
        (WTF::Ref::get const):
        (WTF::Ref::operator T& const):
        (WTF::Ref::operator! const):
        (WTF::=):
        (WTF::Ref<T>::swap):
        (WTF::swap):
        (WTF::Ref<T>::replace):
        (WTF::static_reference_cast):
        (WTF::GetPtrHelper<Ref<T>>::getPtr):
        (WTF::adoptRef):
        (WTF::makeRef):
        (WTF::is):
        * StitchMarker/wtf/RefCounted.h: Added.
        (WTF::RefCountedBase::ref const):
        (WTF::RefCountedBase::hasOneRef const):
        (WTF::RefCountedBase::refCount const):
        (WTF::RefCountedBase::relaxAdoptionRequirement):
        (WTF::RefCountedBase::RefCountedBase):
        (WTF::RefCountedBase::~RefCountedBase):
        (WTF::RefCountedBase::derefBase const):
        (WTF::RefCountedBase::deletionHasBegun const):
        (WTF::adopted):
        (WTF::RefCounted::deref const):
        (WTF::RefCounted::RefCounted):
        (WTF::RefCounted::~RefCounted):
        * StitchMarker/wtf/RefPtr.h: Added.
        (WTF::refIfNotNull):
        (WTF::derefIfNotNull):
        (WTF::RefPtr::RefPtr):
        (WTF::RefPtr::isHashTableDeletedValue const):
        (WTF::RefPtr::~RefPtr):
        (WTF::RefPtr::get const):
        (WTF::RefPtr::releaseNonNull):
        (WTF::RefPtr::releaseConstNonNull):
        (WTF::RefPtr::operator* const):
        (WTF::RefPtr::operator-> const):
        (WTF::RefPtr::operator! const):
        (WTF::RefPtr::operator UnspecifiedBoolType const):
        (WTF::RefPtr::hashTableDeletedValue):
        (WTF::RefPtr<T>::RefPtr):
        (WTF::RefPtr<T>::leakRef):
        (WTF::=):
        (WTF::RefPtr<T>::swap):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::static_pointer_cast):
        (WTF::adoptRef):
        (WTF::makeRefPtr):
        * StitchMarker/wtf/RetainPtr.h: Added.
        (WTF::RetainPtr::RetainPtr):
        (WTF::RetainPtr::isHashTableDeletedValue const):
        (WTF::RetainPtr::get const):
        (WTF::RetainPtr::operator-> const):
        (WTF::RetainPtr::operator PtrType const):
        (WTF::RetainPtr::operator bool const):
        (WTF::RetainPtr::operator! const):
        (WTF::RetainPtr::operator UnspecifiedBoolType const):
        (WTF::RetainPtr::hashTableDeletedValue):
        (WTF::RetainPtr::fromStorageTypeHelper const):
        (WTF::RetainPtr::fromStorageType const):
        (WTF::RetainPtr::toStorageType const):
        (WTF::RetainPtr<T>::~RetainPtr):
        (WTF::RetainPtr<T>::RetainPtr):
        (WTF::RetainPtr<T>::clear):
        (WTF::RetainPtr<T>::leakRef):
        (WTF::RetainPtr<T>::autorelease):
        (WTF::=):
        (WTF::RetainPtr<T>::swap):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::adoptCF):
        (WTF::adoptNS):
        (WTF::retainPtr):
        (WTF::RetainPtrObjectHashTraits::emptyValue):
        (WTF::RetainPtrObjectHash::hash):
        (WTF::RetainPtrObjectHash::equal):
        (WTF::dynamic_objc_cast):
        * StitchMarker/wtf/RunLoop.cpp: Added.
        (WTF::RunLoop::Holder::Holder):
        (WTF::RunLoop::Holder::runLoop):
        (WTF::RunLoop::initializeMainRunLoop):
        (WTF::RunLoop::current):
        (WTF::RunLoop::main):
        (WTF::RunLoop::isMain):
        (WTF::RunLoop::performWork):
        (WTF::RunLoop::dispatch):
        * StitchMarker/wtf/RunLoop.h: Added.
        (WTF::RunLoop::mainContext const):
        (WTF::RunLoop::TimerBase::startRepeating):
        (WTF::RunLoop::TimerBase::startOneShot):
        (WTF::RunLoop::TimerBase::startInternal):
        (WTF::RunLoop::Timer::Timer):
        * StitchMarker/wtf/ScopedLambda.h: Added.
        (WTF::ScopedLambda<ResultType):
        (WTF::scopedLambda):
        (WTF::scopedLambdaRef):
        * StitchMarker/wtf/Seconds.cpp: Added.
        (WTF::Seconds::operator+ const):
        (WTF::Seconds::operator- const):
        (WTF::Seconds::dump const):
        (WTF::sleep):
        * StitchMarker/wtf/Seconds.h: Added.
        (WTF::Seconds::Seconds):
        (WTF::Seconds::value const):
        (WTF::Seconds::minutes const):
        (WTF::Seconds::seconds const):
        (WTF::Seconds::milliseconds const):
        (WTF::Seconds::microseconds const):
        (WTF::Seconds::nanoseconds const):
        (WTF::Seconds::minutesAs const):
        (WTF::Seconds::secondsAs const):
        (WTF::Seconds::millisecondsAs const):
        (WTF::Seconds::microsecondsAs const):
        (WTF::Seconds::nanosecondsAs const):
        (WTF::Seconds::fromMinutes):
        (WTF::Seconds::fromHours):
        (WTF::Seconds::fromMilliseconds):
        (WTF::Seconds::fromMicroseconds):
        (WTF::Seconds::fromNanoseconds):
        (WTF::Seconds::infinity):
        (WTF::Seconds::operator bool const):
        (WTF::Seconds::operator+ const):
        (WTF::Seconds::operator- const):
        (WTF::Seconds::operator* const):
        (WTF::Seconds::operator/ const):
        (WTF::Seconds::operator% const):
        (WTF::Seconds::operator+=):
        (WTF::Seconds::operator-=):
        (WTF::Seconds::operator*=):
        (WTF::Seconds::operator/=):
        (WTF::Seconds::operator%=):
        (WTF::Seconds::operator== const):
        (WTF::Seconds::operator!= const):
        (WTF::Seconds::operator< const):
        (WTF::Seconds::operator> const):
        (WTF::Seconds::operator<= const):
        (WTF::Seconds::operator>= const):
        (WTF::seconds_literals::operator _min):
        (WTF::seconds_literals::operator _h):
        (WTF::seconds_literals::operator _s):
        (WTF::seconds_literals::operator _ms):
        (WTF::seconds_literals::operator _us):
        (WTF::seconds_literals::operator _ns):
        (std::isnan):
        (std::isinf):
        (std::isfinite):
        * StitchMarker/wtf/StackBounds.cpp: Added.
        (WTF::StackBounds::newThreadStackBounds):
        (WTF::StackBounds::currentThreadStackBoundsInternal):
        * StitchMarker/wtf/StackBounds.h: Added.
        (WTF::StackBounds::emptyBounds):
        (WTF::StackBounds::currentThreadStackBounds):
        (WTF::StackBounds::origin const):
        (WTF::StackBounds::end const):
        (WTF::StackBounds::size const):
        (WTF::StackBounds::isEmpty const):
        (WTF::StackBounds::contains const):
        (WTF::StackBounds::recursionLimit const):
        (WTF::StackBounds::isGrowingDownward const):
        (WTF::StackBounds::StackBounds):
        (WTF::StackBounds::checkConsistency const):
        * StitchMarker/wtf/StackStats.h: Added.
        (WTF::StackStats::CheckPoint::CheckPoint):
        (WTF::StackStats::PerThreadStats::PerThreadStats):
        (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
        (WTF::StackStats::probe):
        * StitchMarker/wtf/StackTrace.cpp: Added.
        (WTFGetBacktrace):
        (WTF::StackTrace::instanceSize):
        (WTF::StackTrace::captureStackTrace):
        (WTF::StackTrace::demangle):
        (WTF::StackTrace::dump const):
        * StitchMarker/wtf/StackTrace.h: Added.
        (WTF::StackTrace::StackTrace):
        (WTF::StackTrace::size const):
        (WTF::StackTrace::stack const):
        (WTF::StackTrace::DemangleEntry::mangledName const):
        (WTF::StackTrace::DemangleEntry::demangledName const):
        (WTF::StackTrace::DemangleEntry::DemangleEntry):
        * StitchMarker/wtf/StdLibExtras.h: Added.
        (isPointerTypeAlignmentOkay):
        (reinterpret_cast_ptr):
        (WTF::isPointerAligned):
        (WTF::is8ByteAligned):
        (WTF::bitwise_cast):
        (WTF::safeCast):
        (WTF::bitCount):
        (WTF::roundUpToMultipleOfImpl0):
        (WTF::roundUpToMultipleOfImpl):
        (WTF::roundUpToMultipleOf):
        (WTF::binarySearchImpl):
        (WTF::binarySearch):
        (WTF::tryBinarySearch):
        (WTF::approximateBinarySearch):
        (WTF::insertIntoBoundedVector):
        (WTF::isStatelessLambda):
        (WTF::callStatelessLambda):
        (WTF::checkAndSet):
        (WTF::findBitInWord):
        (WTF::Visitor::Visitor):
        (WTF::Visitor<A>::Visitor):
        (WTF::mergeDeduplicatedSorted):
        (operator new):
        (std::make_unique):
        (std::exchange):
        (std::move):
        * StitchMarker/wtf/StringExtras.h: Added.
        (strncasecmp):
        (strcasecmp):
        (strnstr):
        * StitchMarker/wtf/StringPrintStream.h: Added.
        (WTF::StringPrintStream::length const):
        (WTF::toCString):
        (WTF::toString):
        * StitchMarker/wtf/SystemFree.h: Added.
        (WTF::SystemFree::operator() const):
        (WTF::SystemFree<T::operator() const):
        * StitchMarker/wtf/ThreadGroup.h: Added.
        (WTF::ThreadGroup::create):
        (WTF::ThreadGroup::threads const):
        (WTF::ThreadGroup::getLock):
        (WTF::ThreadGroup::weakFromThis):
        * StitchMarker/wtf/ThreadHolder.cpp: Added.
        (WTF::ThreadHolder::~ThreadHolder):
        * StitchMarker/wtf/ThreadHolder.h: Added.
        (WTF::ThreadHolder::thread):
        (WTF::ThreadHolder::ThreadHolder):
        * StitchMarker/wtf/ThreadHolderPthreads.cpp: Added.
        (WTF::ThreadHolder::initializeOnce):
        (WTF::ThreadHolder::current):
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::destruct):
        * StitchMarker/wtf/ThreadMessage.h: Added.
        (WTF::sendMessage):
        * StitchMarker/wtf/ThreadSafeRefCounted.h: Added.
        (WTF::ThreadSafeRefCountedBase::ref const):
        (WTF::ThreadSafeRefCountedBase::hasOneRef const):
        (WTF::ThreadSafeRefCountedBase::refCount const):
        (WTF::ThreadSafeRefCountedBase::derefBase const):
        (WTF::ThreadSafeRefCounted::deref const):
        * StitchMarker/wtf/ThreadSpecific.h: Added.
        (WTF::ThreadSpecific::Data::Data):
        (WTF::threadSpecificKeyCreate):
        (WTF::threadSpecificKeyDelete):
        (WTF::threadSpecificSet):
        (WTF::threadSpecificGet):
        (WTF::canBeGCThread>::ThreadSpecific):
        (WTF::canBeGCThread>::get):
        (WTF::canBeGCThread>::set):
        (WTF::canBeGCThread>::~ThreadSpecific):
        (WTF::canBeGCThread>::destroy):
        (WTF::canBeGCThread>::isSet):
        (WTF::T):
        (WTF::canBeGCThread>::operator):
        (WTF::canBeGCThread>::replace):
        * StitchMarker/wtf/Threading.cpp: Added.
        (WTF::Thread::NewThreadContext::NewThreadContext):
        (WTF::Thread::normalizeThreadName):
        (WTF::Thread::entryPoint):
        (WTF::Thread::create):
        (WTF::Thread::currentMayBeNull):
        (WTF::shouldRemoveThreadFromThreadGroup):
        (WTF::Thread::didExit):
        (WTF::Thread::addToThreadGroup):
        (WTF::Thread::removeFromThreadGroup):
        (WTF::Thread::setCurrentThreadIsUserInteractive):
        (WTF::Thread::setCurrentThreadIsUserInitiated):
        (WTF::Thread::setGlobalMaxQOSClass):
        (WTF::Thread::adjustedQOSClass):
        (WTF::Thread::dump const):
        (WTF::initializeThreading):
        * StitchMarker/wtf/Threading.h: Added.
        (WTF::Thread::id const):
        (WTF::Thread::operator==):
        (WTF::Thread::operator!=):
        (WTF::Thread::stack const):
        (WTF::Thread::machThread):
        (WTF::Thread::joinableState):
        (WTF::Thread::didBecomeDetached):
        (WTF::Thread::didJoin):
        (WTF::Thread::hasExited):
        (WTF::currentThread):
        * StitchMarker/wtf/ThreadingPrimitives.h: Added.
        (WTF::Mutex::impl):
        * StitchMarker/wtf/ThreadingPthreads.cpp: Added.
        (WTF::Thread::Thread):
        (WTF::Thread::~Thread):
        (WTF::getApproximateStackPointer):
        (WTF::isOnAlternativeSignalStack):
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::initializePlatformThreading):
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::establishHandle):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::current):
        (WTF::Thread::currentID):
        (WTF::Thread::signal):
        (WTF::Thread::suspend):
        (WTF::Thread::resume):
        (WTF::threadStateMetadata):
        (WTF::Thread::getRegisters):
        (WTF::Thread::establishPlatformSpecificHandle):
        (WTF::Mutex::Mutex):
        (WTF::Mutex::~Mutex):
        (WTF::Mutex::lock):
        (WTF::Mutex::tryLock):
        (WTF::Mutex::unlock):
        (WTF::ThreadCondition::ThreadCondition):
        (WTF::ThreadCondition::~ThreadCondition):
        (WTF::ThreadCondition::wait):
        (WTF::ThreadCondition::timedWait):
        (WTF::ThreadCondition::signal):
        (WTF::ThreadCondition::broadcast):
        (WTF::Thread::yield):
        * StitchMarker/wtf/TimeWithDynamicClockType.cpp: Added.
        (WTF::TimeWithDynamicClockType::now):
        (WTF::TimeWithDynamicClockType::nowWithSameClock const):
        (WTF::TimeWithDynamicClockType::wallTime const):
        (WTF::TimeWithDynamicClockType::monotonicTime const):
        (WTF::TimeWithDynamicClockType::approximateWallTime const):
        (WTF::TimeWithDynamicClockType::approximateMonotonicTime const):
        (WTF::TimeWithDynamicClockType::operator- const):
        (WTF::TimeWithDynamicClockType::operator< const):
        (WTF::TimeWithDynamicClockType::operator> const):
        (WTF::TimeWithDynamicClockType::operator<= const):
        (WTF::TimeWithDynamicClockType::operator>= const):
        (WTF::TimeWithDynamicClockType::dump const):
        (WTF::sleep):
        (WTF::hasElapsed):
        * StitchMarker/wtf/TimeWithDynamicClockType.h: Added.
        (WTF::TimeWithDynamicClockType::TimeWithDynamicClockType):
        (WTF::TimeWithDynamicClockType::fromRawSeconds):
        (WTF::TimeWithDynamicClockType::secondsSinceEpoch const):
        (WTF::TimeWithDynamicClockType::clockType const):
        (WTF::TimeWithDynamicClockType::withSameClockAndRawSeconds const):
        (WTF::TimeWithDynamicClockType::operator bool const):
        (WTF::TimeWithDynamicClockType::operator+ const):
        (WTF::TimeWithDynamicClockType::operator- const):
        (WTF::TimeWithDynamicClockType::operator+=):
        (WTF::TimeWithDynamicClockType::operator-=):
        (WTF::TimeWithDynamicClockType::operator== const):
        (WTF::TimeWithDynamicClockType::operator!= const):
        (std::isnan):
        (std::isinf):
        (std::isfinite):
        * StitchMarker/wtf/TypeCasts.h: Added.
        (WTF::TypeCastTraits::isOfType):
        (WTF::is):
        (WTF::downcast):
        * StitchMarker/wtf/ValueCheck.h: Added.
        (WTF::ValueCheck::checkConsistency):
        (WTF::ValueCheck<P::checkConsistency):
        * StitchMarker/wtf/Variant.h: Added.
        (WTF::in_place):
        (WTF::__throw_bad_variant_access):
        (WTF::=):
        (WTF::__variant_storage::__get):
        (WTF::__variant_storage::__get_rref):
        (WTF::__variant_storage::__destroy):
        (WTF::__storage_wrapper::__construct):
        (WTF::__storage_wrapper::__storage_wrapper):
        (WTF::__storage_wrapper::__get):
        (WTF::__storage_wrapper::__get const):
        (WTF::__storage_wrapper::__destroy):
        (WTF::__storage_wrapper<_Type::__storage_wrapper):
        (WTF::__storage_wrapper<_Type::__get):
        (WTF::__storage_wrapper<_Type::__get const):
        (WTF::__variant_base::~__variant_base):
        (WTF::__backup_storage_ops::__move_construct_func):
        (WTF::__backup_storage_ops::__destroy_func):
        (WTF::__backup_storage::__backup_storage):
        (WTF::__backup_storage::__destroy):
        (WTF::__backup_storage::~__backup_storage):
        (WTF::Variant<>::swap):
        (WTF::__NOEXCEPT_):
        (WTF::__variant_accessor::get):
        (WTF::get):
        (WTF::get_if):
        (WTF::__visitor_table::__trampoline_func):
        (WTF::visit):
        (WTF::__arg_selector):
        (WTF::__visit_helper2::__visit):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::operator<):
        (WTF::operator>):
        (WTF::operator>=):
        (WTF::operator<=):
        (WTF::__hash_visitor::operator()):
        (WTF::switchOn):
        * StitchMarker/wtf/Vector.h: Added.
        (WTF::VectorTypeOperations::destruct):
        (WTF::VectorTypeOperations::initialize):
        (WTF::VectorTypeOperations::move):
        (WTF::VectorTypeOperations::moveOverlapping):
        (WTF::VectorTypeOperations::uninitializedCopy):
        (WTF::VectorTypeOperations::uninitializedFill):
        (WTF::VectorTypeOperations::compare):
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::shouldReallocateBuffer const):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::VectorBufferBase::buffer):
        (WTF::VectorBufferBase::buffer const):
        (WTF::VectorBufferBase::bufferMemoryOffset):
        (WTF::VectorBufferBase::capacity const):
        (WTF::VectorBufferBase::releaseBuffer):
        (WTF::VectorBufferBase::VectorBufferBase):
        (WTF::VectorBufferBase::~VectorBufferBase):
        (WTF::VectorBuffer::VectorBuffer):
        (WTF::VectorBuffer::~VectorBuffer):
        (WTF::VectorBuffer::allocateBuffer):
        (WTF::VectorBuffer::tryAllocateBuffer):
        (WTF::VectorBuffer::deallocateBuffer):
        (WTF::VectorBuffer::shouldReallocateBuffer const):
        (WTF::VectorBuffer::reallocateBuffer):
        (WTF::VectorBuffer::swap):
        (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
        (WTF::VectorBuffer::endOfBuffer):
        (WTF::VectorBuffer::releaseBuffer):
        (WTF::VectorBuffer::swapInlineBuffer):
        (WTF::VectorBuffer::swapInlineBuffers):
        (WTF::VectorBuffer::inlineBuffer):
        (WTF::VectorBuffer::inlineBuffer const):
        (WTF::UnsafeVectorOverflow::overflowed):
        (WTF::Vector::Vector):
        (WTF::Vector::~Vector):
        (WTF::Vector::size const):
        (WTF::Vector::sizeMemoryOffset):
        (WTF::Vector::capacity const):
        (WTF::Vector::isEmpty const):
        (WTF::Vector::at):
        (WTF::Vector::at const):
        (WTF::Vector::operator[]):
        (WTF::Vector::operator[] const):
        (WTF::Vector::data):
        (WTF::Vector::data const):
        (WTF::Vector::dataMemoryOffset):
        (WTF::Vector::begin):
        (WTF::Vector::end):
        (WTF::Vector::begin const):
        (WTF::Vector::end const):
        (WTF::Vector::rbegin):
        (WTF::Vector::rend):
        (WTF::Vector::rbegin const):
        (WTF::Vector::rend const):
        (WTF::Vector::first):
        (WTF::Vector::first const):
        (WTF::Vector::last):
        (WTF::Vector::last const):
        (WTF::Vector::takeLast):
        (WTF::Vector::shrinkToFit):
        (WTF::Vector::clear):
        (WTF::Vector::append):
        (WTF::Vector::uncheckedAppend):
        (WTF::Vector::removeLast):
        (WTF::Vector::fill):
        (WTF::Vector::swap):
        (WTF::Vector::asanSetBufferSizeToFullCapacity):
        (WTF::minCapacity>::Vector):
        (WTF::=):
        (WTF::typelessPointersAreEqual):
        (WTF::minCapacity>::contains const):
        (WTF::minCapacity>::findMatching const):
        (WTF::minCapacity>::find const):
        (WTF::minCapacity>::reverseFind const):
        (WTF::minCapacity>::appendIfNotContains):
        (WTF::minCapacity>::fill):
        (WTF::minCapacity>::appendRange):
        (WTF::minCapacity>::expandCapacity):
        (WTF::minCapacity>::tryExpandCapacity):
        (WTF::minCapacity>::resize):
        (WTF::minCapacity>::resizeToFit):
        (WTF::minCapacity>::shrink):
        (WTF::minCapacity>::grow):
        (WTF::minCapacity>::asanSetInitialBufferSizeTo):
        (WTF::minCapacity>::asanSetBufferSizeToFullCapacity):
        (WTF::minCapacity>::asanBufferSizeWillChangeTo):
        (WTF::minCapacity>::reserveCapacity):
        (WTF::minCapacity>::tryReserveCapacity):
        (WTF::minCapacity>::reserveInitialCapacity):
        (WTF::minCapacity>::shrinkCapacity):
        (WTF::minCapacity>::append):
        (WTF::minCapacity>::tryAppend):
        (WTF::minCapacity>::constructAndAppend):
        (WTF::minCapacity>::tryConstructAndAppend):
        (WTF::minCapacity>::appendSlowCase):
        (WTF::minCapacity>::constructAndAppendSlowCase):
        (WTF::minCapacity>::tryConstructAndAppendSlowCase):
        (WTF::minCapacity>::uncheckedAppend):
        (WTF::minCapacity>::appendVector):
        (WTF::minCapacity>::insert):
        (WTF::minCapacity>::insertVector):
        (WTF::minCapacity>::remove):
        (WTF::minCapacity>::removeFirst):
        (WTF::minCapacity>::removeFirstMatching):
        (WTF::minCapacity>::removeAll):
        (WTF::minCapacity>::removeAllMatching):
        (WTF::minCapacity>::reverse):
        (WTF::minCapacity>::map const):
        (WTF::minCapacity>::releaseBuffer):
        (WTF::minCapacity>::checkConsistency):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::ValueCheck<Vector<T>>::checkConsistency):
        (WTF::removeRepeatedElements):
        * StitchMarker/wtf/VectorTraits.h: Added.
        * StitchMarker/wtf/WTFThreadData.cpp: Added.
        (WTF::WTFThreadData::WTFThreadData):
        (WTF::WTFThreadData::~WTFThreadData):
        (WTF::WTFThreadData::createAndRegisterForGetspecificDirect):
        * StitchMarker/wtf/WTFThreadData.h: Added.
        (WTF::WTFThreadData::atomicStringTable):
        (WTF::WTFThreadData::setCurrentAtomicStringTable):
        (WTF::WTFThreadData::stack):
        (WTF::WTFThreadData::stackStats):
        (WTF::WTFThreadData::savedStackPointerAtVMEntry):
        (WTF::WTFThreadData::setSavedStackPointerAtVMEntry):
        (WTF::WTFThreadData::savedLastStackTop):
        (WTF::WTFThreadData::setSavedLastStackTop):
        (WTF::wtfThreadData):
        * StitchMarker/wtf/WallTime.cpp: Added.
        (WTF::WallTime::now):
        (WTF::WallTime::approximateMonotonicTime const):
        (WTF::WallTime::dump const):
        * StitchMarker/wtf/WallTime.h: Added.
        (WTF::WallTime::WallTime):
        (WTF::WallTime::fromRawSeconds):
        (WTF::WallTime::infinity):
        (WTF::WallTime::secondsSinceEpoch const):
        (WTF::WallTime::approximateWallTime const):
        (WTF::WallTime::operator bool const):
        (WTF::WallTime::operator+ const):
        (WTF::WallTime::operator- const):
        (WTF::WallTime::operator+=):
        (WTF::WallTime::operator-=):
        (WTF::WallTime::operator== const):
        (WTF::WallTime::operator!= const):
        (WTF::WallTime::operator< const):
        (WTF::WallTime::operator> const):
        (WTF::WallTime::operator<= const):
        (WTF::WallTime::operator>= const):
        (std::isnan):
        (std::isinf):
        (std::isfinite):
        * StitchMarker/wtf/WeakRandom.h: Added.
        (WTF::WeakRandom::WeakRandom):
        (WTF::WeakRandom::setSeed):
        (WTF::WeakRandom::seed const):
        (WTF::WeakRandom::get):
        (WTF::WeakRandom::getUint32):
        (WTF::WeakRandom::lowOffset):
        (WTF::WeakRandom::highOffset):
        (WTF::WeakRandom::advance):
        * StitchMarker/wtf/WordLock.cpp: Added.
        (WTF::WordLockBase::lockSlow):
        (WTF::WordLockBase::unlockSlow):
        * StitchMarker/wtf/WordLock.h: Added.
        (WTF::WordLockBase::lock):
        (WTF::WordLockBase::unlock):
        (WTF::WordLockBase::isHeld const):
        (WTF::WordLockBase::isLocked const):
        (WTF::WordLockBase::isFullyReset const):
        (WTF::WordLock::WordLock):
        * StitchMarker/wtf/benchmarks/ConditionSpeedTest.cpp: Added.
        (main):
        * StitchMarker/wtf/benchmarks/LockFairnessTest.cpp: Added.
        (main):
        * StitchMarker/wtf/benchmarks/LockSpeedTest.cpp: Added.
        (main):
        * StitchMarker/wtf/benchmarks/ToyLocks.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Algorithm.h: Added.
        (bmalloc::max):
        (bmalloc::min):
        (bmalloc::mask):
        (bmalloc::test):
        (bmalloc::isPowerOfTwo):
        (bmalloc::roundUpToMultipleOf):
        (bmalloc::roundDownToMultipleOf):
        (bmalloc::divideRoundingUp):
        (bmalloc::roundUpToMultipleOfNonPowerOfTwo):
        (bmalloc::sizeOf):
        (bmalloc::bitCount):
        (bmalloc::clzl):
        (bmalloc::clzl<1>):
        (bmalloc::__builtin_clzl):
        (bmalloc::log2):
        * StitchMarker/wtf/dependencies/bmalloc/AllocationKind.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Allocator.cpp: Added.
        (bmalloc::Allocator::Allocator):
        (bmalloc::Allocator::~Allocator):
        (bmalloc::Allocator::tryAllocate):
        (bmalloc::Allocator::allocate):
        (bmalloc::Allocator::allocateImpl):
        (bmalloc::Allocator::reallocate):
        (bmalloc::Allocator::scavenge):
        (bmalloc::Allocator::refillAllocatorSlowCase):
        (bmalloc::Allocator::refillAllocator):
        (bmalloc::Allocator::allocateLarge):
        (bmalloc::Allocator::allocateLogSizeClass):
        (bmalloc::Allocator::allocateSlowCase):
        * StitchMarker/wtf/dependencies/bmalloc/Allocator.h: Added.
        (bmalloc::Allocator::allocateFastCase):
        (bmalloc::Allocator::allocate):
        * StitchMarker/wtf/dependencies/bmalloc/AsyncTask.h: Added.
        (bmalloc::AsyncTask::willRun):
        (bmalloc::AsyncTask::willRunSoon):
        (bmalloc::Function>::AsyncTask):
        (bmalloc::Function>::~AsyncTask):
        (bmalloc::Function>::run):
        (bmalloc::Function>::runSoon):
        (bmalloc::Function>::threadEntryPoint):
        (bmalloc::Function>::threadRunLoop):
        * StitchMarker/wtf/dependencies/bmalloc/AvailableMemory.h: Added.
        (bmalloc::MemoryStatus::MemoryStatus):
        (bmalloc::memoryFootprint):
        (bmalloc::percentAvailableMemoryInUse):
        (bmalloc::isUnderMemoryPressure):
        * StitchMarker/wtf/dependencies/bmalloc/BAssert.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/BExport.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/BPlatform.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/BumpAllocator.h: Added.
        (bmalloc::BumpAllocator::size):
        (bmalloc::BumpAllocator::isNull):
        (bmalloc::BumpAllocator::canAllocate):
        (bmalloc::BumpAllocator::BumpAllocator):
        (bmalloc::BumpAllocator::init):
        (bmalloc::BumpAllocator::allocate):
        (bmalloc::BumpAllocator::refill):
        (bmalloc::BumpAllocator::clear):
        * StitchMarker/wtf/dependencies/bmalloc/BumpRange.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Cache.cpp: Added.
        (bmalloc::Cache::scavenge):
        (bmalloc::Cache::Cache):
        (bmalloc::Cache::tryAllocateSlowCaseNullCache):
        (bmalloc::Cache::allocateSlowCaseNullCache):
        (bmalloc::Cache::deallocateSlowCaseNullCache):
        (bmalloc::Cache::reallocateSlowCaseNullCache):
        * StitchMarker/wtf/dependencies/bmalloc/Cache.h: Added.
        (bmalloc::Cache::allocator):
        (bmalloc::Cache::deallocator):
        (bmalloc::Cache::tryAllocate):
        (bmalloc::Cache::allocate):
        (bmalloc::Cache::deallocate):
        (bmalloc::Cache::reallocate):
        * StitchMarker/wtf/dependencies/bmalloc/Chunk.h: Added.
        (bmalloc::Chunk::ref):
        (bmalloc::Chunk::deref):
        (bmalloc::Chunk::refCount):
        (bmalloc::Chunk::bytes):
        (bmalloc::Chunk::lines):
        (bmalloc::Chunk::pages):
        (bmalloc::Chunk::freePages):
        (bmalloc::ChunkHash::hash):
        (bmalloc::forEachPage):
        (bmalloc::Chunk::Chunk):
        (bmalloc::Chunk::get):
        (bmalloc::Chunk::offset):
        (bmalloc::Chunk::address):
        (bmalloc::Chunk::page):
        (bmalloc::Chunk::line):
        (bmalloc::SmallLine::begin):
        (bmalloc::SmallLine::end):
        (bmalloc::SmallPage::begin):
        (bmalloc::Object::Object):
        (bmalloc::Object::address):
        (bmalloc::Object::line):
        (bmalloc::Object::page):
        * StitchMarker/wtf/dependencies/bmalloc/Deallocator.cpp: Added.
        (bmalloc::Deallocator::Deallocator):
        (bmalloc::Deallocator::~Deallocator):
        (bmalloc::Deallocator::scavenge):
        (bmalloc::Deallocator::processObjectLog):
        (bmalloc::Deallocator::deallocateSlowCase):
        * StitchMarker/wtf/dependencies/bmalloc/Deallocator.h: Added.
        (bmalloc::Deallocator::lineCache):
        (bmalloc::Deallocator::deallocateFastCase):
        (bmalloc::Deallocator::deallocate):
        * StitchMarker/wtf/dependencies/bmalloc/DebugHeap.cpp: Added.
        (bmalloc::DebugHeap::DebugHeap):
        (bmalloc::DebugHeap::malloc):
        (bmalloc::DebugHeap::memalign):
        (bmalloc::DebugHeap::realloc):
        (bmalloc::DebugHeap::free):
        * StitchMarker/wtf/dependencies/bmalloc/DebugHeap.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Environment.cpp: Added.
        (bmalloc::isMallocEnvironmentVariableSet):
        (bmalloc::isLibgmallocEnabled):
        (bmalloc::isSanitizerEnabled):
        (bmalloc::Environment::Environment):
        (bmalloc::Environment::computeIsDebugHeapEnabled):
        * StitchMarker/wtf/dependencies/bmalloc/Environment.h: Added.
        (bmalloc::Environment::isDebugHeapEnabled):
        * StitchMarker/wtf/dependencies/bmalloc/FixedVector.h: Added.
        (bmalloc::FixedVector::begin const):
        (bmalloc::FixedVector::end const):
        (bmalloc::FixedVector::size const):
        (bmalloc::FixedVector::capacity const):
        (bmalloc::FixedVector::clear):
        (bmalloc::FixedVector::isEmpty):
        (bmalloc::Capacity>::FixedVector):
        (bmalloc::Capacity>::operator):
        (bmalloc::Capacity>::push):
        (bmalloc::Capacity>::pop):
        (bmalloc::Capacity>::shrink):
        * StitchMarker/wtf/dependencies/bmalloc/Gigacage.cpp: Added.
        (Gigacage::Callback::Callback):
        (Gigacage::Callback::function):
        (Gigacage::Callbacks::Callbacks):
        (Gigacage::ensureGigacage):
        (Gigacage::disableGigacage):
        (Gigacage::addDisableCallback):
        (Gigacage::removeDisableCallback):
        (Gigacage::shouldBeEnabled):
        * StitchMarker/wtf/dependencies/bmalloc/Gigacage.h: Added.
        (Gigacage::caged):
        (Gigacage::isCaged):
        * StitchMarker/wtf/dependencies/bmalloc/Heap.cpp: Added.
        (bmalloc::Heap::Heap):
        (bmalloc::Heap::usingGigacage):
        (bmalloc::Heap::initializeLineMetadata):
        (bmalloc::Heap::initializePageMetadata):
        (bmalloc::Heap::concurrentScavenge):
        (bmalloc::Heap::scavenge):
        (bmalloc::Heap::scheduleScavengerIfUnderMemoryPressure):
        (bmalloc::Heap::scheduleScavenger):
        (bmalloc::Heap::deallocateLineCache):
        (bmalloc::Heap::allocateSmallChunk):
        (bmalloc::Heap::deallocateSmallChunk):
        (bmalloc::Heap::allocateSmallPage):
        (bmalloc::Heap::deallocateSmallLine):
        (bmalloc::Heap::allocateSmallBumpRangesByMetadata):
        (bmalloc::Heap::allocateSmallBumpRangesByObject):
        (bmalloc::Heap::splitAndAllocate):
        (bmalloc::Heap::tryAllocateLarge):
        (bmalloc::Heap::allocateLarge):
        (bmalloc::Heap::isLarge):
        (bmalloc::Heap::largeSize):
        (bmalloc::Heap::shrinkLarge):
        (bmalloc::Heap::deallocateLarge):
        * StitchMarker/wtf/dependencies/bmalloc/Heap.h: Added.
        (bmalloc::Heap::mutex):
        (bmalloc::Heap::kind const):
        (bmalloc::Heap::debugHeap):
        (bmalloc::Heap::LargeObjectHash::hash):
        (bmalloc::Heap::allocateSmallBumpRanges):
        (bmalloc::Heap::derefSmallLine):
        * StitchMarker/wtf/dependencies/bmalloc/HeapKind.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Inline.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/LargeMap.cpp: Added.
        (bmalloc::LargeMap::remove):
        (bmalloc::LargeMap::add):
        * StitchMarker/wtf/dependencies/bmalloc/LargeMap.h: Added.
        (bmalloc::LargeMap::begin):
        (bmalloc::LargeMap::end):
        (bmalloc::LargeMap::ranges):
        * StitchMarker/wtf/dependencies/bmalloc/LargeRange.h: Added.
        (bmalloc::LargeRange::LargeRange):
        (bmalloc::LargeRange::physicalSize const):
        (bmalloc::LargeRange::setPhysicalSize):
        (bmalloc::LargeRange::operator< const):
        (bmalloc::canMerge):
        (bmalloc::merge):
        (bmalloc::LargeRange::split const):
        * StitchMarker/wtf/dependencies/bmalloc/LineMetadata.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/List.h: Added.
        (bmalloc::ListNode::ListNode):
        (bmalloc::List::iterator::iterator):
        (bmalloc::List::iterator::operator*):
        (bmalloc::List::iterator::operator->):
        (bmalloc::List::iterator::operator!=):
        (bmalloc::List::iterator::operator++):
        (bmalloc::List::List):
        (bmalloc::List::isEmpty):
        (bmalloc::List::head):
        (bmalloc::List::tail):
        (bmalloc::List::begin):
        (bmalloc::List::end):
        (bmalloc::List::push):
        (bmalloc::List::pushFront):
        (bmalloc::List::pop):
        (bmalloc::List::popFront):
        (bmalloc::List::insertAfter):
        (bmalloc::List::remove):
        * StitchMarker/wtf/dependencies/bmalloc/Logging.cpp: Added.
        (bmalloc::logVMFailure):
        (bmalloc::reportAssertionFailureWithMessage):
        * StitchMarker/wtf/dependencies/bmalloc/Logging.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Map.h: Added.
        (bmalloc::Map::size):
        (bmalloc::Map::capacity):
        (bmalloc::Map::get):
        (bmalloc::Map::set):
        (bmalloc::Map::remove):
        (bmalloc::Map::shouldGrow):
        (bmalloc::Map::shouldShrink):
        (bmalloc::Map::find):
        (bmalloc::Hash>::rehash):
        * StitchMarker/wtf/dependencies/bmalloc/Mutex.h: Added.
        (bmalloc::Mutex::Mutex):
        * StitchMarker/wtf/dependencies/bmalloc/Object.h: Added.
        (bmalloc::Object::Object):
        (bmalloc::Object::chunk):
        (bmalloc::Object::offset):
        (bmalloc::Object::operator+):
        (bmalloc::Object::operator-):
        (bmalloc::Object::operator<=):
        * StitchMarker/wtf/dependencies/bmalloc/ObjectType.cpp: Added.
        (bmalloc::objectType):
        * StitchMarker/wtf/dependencies/bmalloc/ObjectType.h: Added.
        (bmalloc::mightBeLarge):
        * StitchMarker/wtf/dependencies/bmalloc/PerHeapKind.h: Added.
        (bmalloc::PerHeapKindBase::PerHeapKindBase):
        (bmalloc::PerHeapKindBase::size):
        (bmalloc::PerHeapKindBase::at):
        (bmalloc::PerHeapKindBase::at const):
        (bmalloc::PerHeapKindBase::operator[]):
        (bmalloc::PerHeapKindBase::operator[] const):
        (bmalloc::StaticPerHeapKind::StaticPerHeapKind):
        (bmalloc::PerHeapKind::PerHeapKind):
        (bmalloc::PerHeapKind::~PerHeapKind):
        * StitchMarker/wtf/dependencies/bmalloc/PerProcess.h: Added.
        (bmalloc::PerProcess::mutex):
        (bmalloc::PerProcess<T>::getFastCase):
        (bmalloc::PerProcess<T>::get):
        (bmalloc::PerProcess<T>::getSlowCase):
        * StitchMarker/wtf/dependencies/bmalloc/PerThread.h: Added.
        (bmalloc::PerThreadStorage<PerHeapKind<Cache>>::get):
        (bmalloc::PerThreadStorage<PerHeapKind<Cache>>::init):
        (bmalloc::PerThreadStorage::get):
        (bmalloc::PerThreadStorage::init):
        (bmalloc::PerThread<T>::getFastCase):
        (bmalloc::PerThread<T>::get):
        (bmalloc::PerThread<T>::destructor):
        (bmalloc::PerThread<T>::getSlowCase):
        * StitchMarker/wtf/dependencies/bmalloc/Range.h: Added.
        (bmalloc::Range::Range):
        (bmalloc::Range::begin const):
        (bmalloc::Range::end const):
        (bmalloc::Range::size const):
        (bmalloc::Range::operator! const):
        (bmalloc::Range::operator bool const):
        (bmalloc::Range::operator< const):
        (bmalloc::canMerge):
        (bmalloc::merge):
        * StitchMarker/wtf/dependencies/bmalloc/Scavenger.cpp: Added.
        (bmalloc::Scavenger::Scavenger):
        (bmalloc::Scavenger::scavenge):
        * StitchMarker/wtf/dependencies/bmalloc/Scavenger.h: Added.
        (bmalloc::Scavenger::setScavengerThreadQOSClass):
        (bmalloc::Scavenger::requestedScavengerThreadQOSClass const):
        * StitchMarker/wtf/dependencies/bmalloc/ScopeExit.h: Added.
        (bmalloc::ScopeExit::ScopeExit):
        (bmalloc::ScopeExit::~ScopeExit):
        (bmalloc::makeScopeExit):
        * StitchMarker/wtf/dependencies/bmalloc/Sizes.h: Added.
        (bmalloc::Sizes::maskSizeClass):
        (bmalloc::Sizes::maskObjectSize):
        (bmalloc::Sizes::logSizeClass):
        (bmalloc::Sizes::logObjectSize):
        (bmalloc::Sizes::sizeClass):
        (bmalloc::Sizes::objectSize):
        (bmalloc::Sizes::pageSize):
        * StitchMarker/wtf/dependencies/bmalloc/SmallLine.h: Added.
        (bmalloc::SmallLine::refCount):
        (bmalloc::SmallLine::ref):
        (bmalloc::SmallLine::deref):
        * StitchMarker/wtf/dependencies/bmalloc/SmallPage.h: Added.
        (bmalloc::SmallPage::refCount):
        (bmalloc::SmallPage::sizeClass):
        (bmalloc::SmallPage::setSizeClass):
        (bmalloc::SmallPage::hasFreeLines const):
        (bmalloc::SmallPage::setHasFreeLines):
        (bmalloc::SmallPage::hasPhysicalPages):
        (bmalloc::SmallPage::setHasPhysicalPages):
        (bmalloc::SmallPage::slide const):
        (bmalloc::SmallPage::setSlide):
        (bmalloc::SmallPage::ref):
        (bmalloc::SmallPage::deref):
        * StitchMarker/wtf/dependencies/bmalloc/StaticMutex.cpp: Added.
        (bmalloc::StaticMutex::lockSlowCase):
        * StitchMarker/wtf/dependencies/bmalloc/StaticMutex.h: Added.
        (bmalloc::sleep):
        (bmalloc::waitUntilFalse):
        (bmalloc::StaticMutex::init):
        (bmalloc::StaticMutex::try_lock):
        (bmalloc::StaticMutex::lock):
        (bmalloc::StaticMutex::unlock):
        * StitchMarker/wtf/dependencies/bmalloc/Syscall.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/VMAllocate.h: Added.
        (bmalloc::vmPageSize):
        (bmalloc::vmPageShift):
        (bmalloc::vmSize):
        (bmalloc::vmValidate):
        (bmalloc::vmPageSizePhysical):
        (bmalloc::vmValidatePhysical):
        (bmalloc::tryVMAllocate):
        (bmalloc::vmAllocate):
        (bmalloc::vmDeallocate):
        (bmalloc::vmRevokePermissions):
        (bmalloc::vmDeallocatePhysicalPages):
        (bmalloc::vmAllocatePhysicalPages):
        (bmalloc::vmDeallocatePhysicalPagesSloppy):
        (bmalloc::vmAllocatePhysicalPagesSloppy):
        * StitchMarker/wtf/dependencies/bmalloc/VMHeap.cpp: Added.
        (bmalloc::VMHeap::VMHeap):
        (bmalloc::VMHeap::tryAllocateLargeChunk):
        * StitchMarker/wtf/dependencies/bmalloc/VMHeap.h: Added.
        * StitchMarker/wtf/dependencies/bmalloc/Vector.h: Added.
        (bmalloc::Vector::begin):
        (bmalloc::Vector::end):
        (bmalloc::Vector::size):
        (bmalloc::Vector::capacity):
        (bmalloc::Vector::last):
        (bmalloc::Vector::pop):
        (bmalloc::Vector::initialCapacity):
        (bmalloc::Vector<T>::Vector):
        (bmalloc::Vector<T>::~Vector):
        (bmalloc::Vector<T>::operator):
        (bmalloc::Vector<T>::push):
        (bmalloc::Vector<T>::pop):
        (bmalloc::Vector<T>::insert):
        (bmalloc::Vector<T>::remove):
        (bmalloc::Vector<T>::grow):
        (bmalloc::Vector<T>::shrink):
        (bmalloc::Vector<T>::resize):
        (bmalloc::Vector<T>::reallocateBuffer):
        (bmalloc::Vector<T>::shrinkCapacity):
        (bmalloc::Vector<T>::growCapacity):
        (bmalloc::Vector<T>::shrinkToFit):
        * StitchMarker/wtf/dependencies/bmalloc/Zone.cpp: Added.
        (bmalloc::remoteRead):
        (bmalloc::good_size):
        (bmalloc::check):
        (bmalloc::print):
        (bmalloc::log):
        (bmalloc::force_lock):
        (bmalloc::force_unlock):
        (bmalloc::statistics):
        (bmalloc::zoneSize):
        (bmalloc::enumerator):
        (bmalloc::Zone::Zone):
        * StitchMarker/wtf/dependencies/bmalloc/Zone.h: Added.
        (bmalloc::Zone::ranges):
        (bmalloc::Zone::addRange):
        * StitchMarker/wtf/dependencies/bmalloc/bmalloc.h: Added.
        (bmalloc::api::tryMalloc):
        (bmalloc::api::malloc):
        (bmalloc::api::tryMemalign):
        (bmalloc::api::memalign):
        (bmalloc::api::realloc):
        (bmalloc::api::tryLargeMemalignVirtual):
        (bmalloc::api::free):
        (bmalloc::api::freeLargeVirtual):
        (bmalloc::api::scavengeThisThread):
        (bmalloc::api::scavenge):
        (bmalloc::api::isEnabled):
        (bmalloc::api::availableMemory):
        (bmalloc::api::memoryFootprint):
        (bmalloc::api::percentAvailableMemoryInUse):
        (bmalloc::api::setScavengerThreadQOSClass):
        * StitchMarker/wtf/dependencies/config.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/bytestream.h: Added.
        (StringByteSink::StringByteSink):
        (StringByteSink::Append):
        * StitchMarker/wtf/dependencies/icu/unicode/chariter.h: Added.
        (ForwardCharacterIterator::operator!= const):
        (CharacterIterator::setToStart):
        (CharacterIterator::setToEnd):
        (CharacterIterator::startIndex const):
        (CharacterIterator::endIndex const):
        (CharacterIterator::getIndex const):
        (CharacterIterator::getLength const):
        * StitchMarker/wtf/dependencies/icu/unicode/localpointer.h: Added.
        (LocalPointerBase::LocalPointerBase):
        (LocalPointerBase::~LocalPointerBase):
        (LocalPointerBase::isNull const):
        (LocalPointerBase::isValid const):
        (LocalPointerBase::operator== const):
        (LocalPointerBase::operator!= const):
        (LocalPointerBase::getAlias const):
        (LocalPointerBase::operator* const):
        (LocalPointerBase::operator-> const):
        (LocalPointerBase::orphan):
        (LocalPointerBase::adoptInstead):
        (LocalPointer::LocalPointer):
        (LocalPointer::~LocalPointer):
        (LocalPointer::adoptInstead):
        (LocalPointer::adoptInsteadAndCheckErrorCode):
        (LocalArray::LocalArray):
        (LocalArray::~LocalArray):
        (LocalArray::adoptInstead):
        (LocalArray::operator[] const):
        * StitchMarker/wtf/dependencies/icu/unicode/parseerr.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/platform.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/ptypes.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/putil.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/rep.h: Added.
        (Replaceable::Replaceable):
        (Replaceable::length const):
        (Replaceable::charAt const):
        (Replaceable::char32At const):
        * StitchMarker/wtf/dependencies/icu/unicode/std_string.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/strenum.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/stringpiece.h: Added.
        (operator!=):
        * StitchMarker/wtf/dependencies/icu/unicode/ubrk.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/ucasemap.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uchar.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uconfig.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uenum.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uiter.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uloc.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/umachine.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/unistr.h: Added.
        (UnicodeString::pinIndex const):
        (UnicodeString::pinIndices const):
        (UnicodeString::getArrayStart):
        (UnicodeString::getArrayStart const):
        (UnicodeString::UnicodeString):
        (UnicodeString::hasShortLength const):
        (UnicodeString::getShortLength const):
        (UnicodeString::length const):
        (UnicodeString::getCapacity const):
        (UnicodeString::hashCode const):
        (UnicodeString::isBogus const):
        (UnicodeString::isWritable const):
        (UnicodeString::isBufferWritable const):
        (UnicodeString::getBuffer const):
        (UnicodeString::doCompare const):
        (UnicodeString::operator==  const):
        (UnicodeString::operator!=  const):
        (UnicodeString::operator>  const):
        (UnicodeString::operator<  const):
        (UnicodeString::operator>=  const):
        (UnicodeString::operator<=  const):
        (UnicodeString::compare const):
        (UnicodeString::compareBetween const):
        (UnicodeString::doCompareCodePointOrder const):
        (UnicodeString::compareCodePointOrder const):
        (UnicodeString::compareCodePointOrderBetween const):
        (UnicodeString::doCaseCompare const):
        (UnicodeString::caseCompare const):
        (UnicodeString::caseCompareBetween const):
        (UnicodeString::indexOf const):
        (UnicodeString::lastIndexOf const):
        (UnicodeString::startsWith const):
        (UnicodeString::endsWith const):
        (UnicodeString::replace):
        (UnicodeString::replaceBetween):
        (UnicodeString::findAndReplace):
        (UnicodeString::doExtract const):
        (UnicodeString::extract const):
        (UnicodeString::extractBetween const):
        (UnicodeString::tempSubStringBetween const):
        (UnicodeString::doCharAt const):
        (UnicodeString::charAt const):
        (UnicodeString::operator[]  const):
        (UnicodeString::isEmpty const):
        (UnicodeString::setZeroLength):
        (UnicodeString::setShortLength):
        (UnicodeString::setLength):
        (UnicodeString::setToEmpty):
        (UnicodeString::setArray):
        (UnicodeString::operator= ):
        (UnicodeString::setTo):
        (UnicodeString::append):
        (UnicodeString::operator+= ):
        (UnicodeString::insert):
        (UnicodeString::remove):
        (UnicodeString::removeBetween):
        (UnicodeString::retainBetween):
        (UnicodeString::truncate):
        (UnicodeString::reverse):
        * StitchMarker/wtf/dependencies/icu/unicode/uobject.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/urename.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/ustring.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utext.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utf.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utf16.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utf8.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utf_old.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/utypes.h: Added.
        (operator new):
        (operator new[]):
        (operator delete):
        (operator delete[]):
        (U_SUCCESS):
        (U_FAILURE):
        * StitchMarker/wtf/dependencies/icu/unicode/uvernum.h: Added.
        * StitchMarker/wtf/dependencies/icu/unicode/uversion.h: Added.
        * StitchMarker/wtf/dependencies/unicode.cpp: Added.
        * StitchMarker/wtf/dtoa.cpp: Added.
        (WTF::storeInc):
        (WTF::BigInt::BigInt):
        (WTF::BigInt::clear):
        (WTF::BigInt::size const):
        (WTF::BigInt::resize):
        (WTF::BigInt::words):
        (WTF::BigInt::words const):
        (WTF::BigInt::append):
        (WTF::multadd):
        (WTF::hi0bits):
        (WTF::lo0bits):
        (WTF::i2b):
        (WTF::mult):
        (WTF::P5Node::P5Node):
        (WTF::pow5mult):
        (WTF::lshift):
        (WTF::cmp):
        (WTF::diff):
        (WTF::d2b):
        (WTF::quorem):
        (WTF::dtoa):
        * StitchMarker/wtf/dtoa.h: Added.
        (WTF::parseDouble):
        * StitchMarker/wtf/dtoa/COPYING: Added.
        * StitchMarker/wtf/dtoa/LICENSE: Added.
        * StitchMarker/wtf/dtoa/README: Added.
        * StitchMarker/wtf/dtoa/bignum-dtoa.cc: Added.
        * StitchMarker/wtf/dtoa/bignum-dtoa.h: Added.
        * StitchMarker/wtf/dtoa/bignum.cc: Added.
        * StitchMarker/wtf/dtoa/bignum.h: Added.
        (WTF::double_conversion::Bignum::Times10):
        (WTF::double_conversion::Bignum::Equal):
        (WTF::double_conversion::Bignum::LessEqual):
        (WTF::double_conversion::Bignum::Less):
        (WTF::double_conversion::Bignum::PlusEqual):
        (WTF::double_conversion::Bignum::PlusLessEqual):
        (WTF::double_conversion::Bignum::PlusLess):
        (WTF::double_conversion::Bignum::EnsureCapacity):
        (WTF::double_conversion::Bignum::BigitLength const):
        * StitchMarker/wtf/dtoa/cached-powers.cc: Added.
        * StitchMarker/wtf/dtoa/cached-powers.h: Added.
        * StitchMarker/wtf/dtoa/diy-fp.cc: Added.
        * StitchMarker/wtf/dtoa/diy-fp.h: Added.
        (WTF::double_conversion::DiyFp::DiyFp):
        (WTF::double_conversion::DiyFp::Subtract):
        (WTF::double_conversion::DiyFp::Minus):
        (WTF::double_conversion::DiyFp::Times):
        (WTF::double_conversion::DiyFp::Normalize):
        (WTF::double_conversion::DiyFp::f const):
        (WTF::double_conversion::DiyFp::e const):
        (WTF::double_conversion::DiyFp::set_f):
        (WTF::double_conversion::DiyFp::set_e):
        * StitchMarker/wtf/dtoa/double-conversion.cc: Added.
        * StitchMarker/wtf/dtoa/double-conversion.h: Added.
        (WTF::double_conversion::DoubleToStringConverter::DoubleToStringConverter):
        * StitchMarker/wtf/dtoa/double.h: Added.
        (WTF::double_conversion::double_to_uint64):
        (WTF::double_conversion::uint64_to_double):
        (WTF::double_conversion::Double::Double):
        (WTF::double_conversion::Double::AsDiyFp const):
        (WTF::double_conversion::Double::AsNormalizedDiyFp const):
        (WTF::double_conversion::Double::AsUint64 const):
        (WTF::double_conversion::Double::NextDouble const):
        (WTF::double_conversion::Double::Exponent const):
        (WTF::double_conversion::Double::Significand const):
        (WTF::double_conversion::Double::IsDenormal const):
        (WTF::double_conversion::Double::IsSpecial const):
        (WTF::double_conversion::Double::IsNan const):
        (WTF::double_conversion::Double::IsInfinite const):
        (WTF::double_conversion::Double::Sign const):
        (WTF::double_conversion::Double::UpperBoundary const):
        (WTF::double_conversion::Double::NormalizedBoundaries const):
        (WTF::double_conversion::Double::value const):
        (WTF::double_conversion::Double::SignificandSizeForOrderOfMagnitude):
        (WTF::double_conversion::Double::Infinity):
        (WTF::double_conversion::Double::NaN):
        (WTF::double_conversion::Double::DiyFpToUint64):
        * StitchMarker/wtf/dtoa/fast-dtoa.cc: Added.
        * StitchMarker/wtf/dtoa/fast-dtoa.h: Added.
        * StitchMarker/wtf/dtoa/fixed-dtoa.cc: Added.
        * StitchMarker/wtf/dtoa/fixed-dtoa.h: Added.
        * StitchMarker/wtf/dtoa/strtod.cc: Added.
        * StitchMarker/wtf/dtoa/strtod.h: Added.
        * StitchMarker/wtf/dtoa/utils.h: Added.
        (WTF::double_conversion::Max):
        (WTF::double_conversion::Min):
        (WTF::double_conversion::StrLength):
        (WTF::double_conversion::BufferReference::BufferReference):
        (WTF::double_conversion::BufferReference::SubBufferReference):
        (WTF::double_conversion::BufferReference::length const):
        (WTF::double_conversion::BufferReference::is_empty const):
        (WTF::double_conversion::BufferReference::start const):
        (WTF::double_conversion::BufferReference::operator[] const):
        (WTF::double_conversion::BufferReference::first):
        (WTF::double_conversion::BufferReference::last):
        (WTF::double_conversion::StringBuilder::StringBuilder):
        (WTF::double_conversion::StringBuilder::~StringBuilder):
        (WTF::double_conversion::StringBuilder::size const):
        (WTF::double_conversion::StringBuilder::position const):
        (WTF::double_conversion::StringBuilder::SetPosition):
        (WTF::double_conversion::StringBuilder::Reset):
        (WTF::double_conversion::StringBuilder::AddCharacter):
        (WTF::double_conversion::StringBuilder::AddString):
        (WTF::double_conversion::StringBuilder::AddSubstring):
        (WTF::double_conversion::StringBuilder::AddPadding):
        (WTF::double_conversion::StringBuilder::Finalize):
        (WTF::double_conversion::StringBuilder::is_finalized const):
        (WTF::double_conversion::BitCast):
        * StitchMarker/wtf/generic/MainThreadGeneric.cpp: Added.
        (WTF::MainThreadDispatcher::MainThreadDispatcher):
        (WTF::MainThreadDispatcher::schedule):
        (WTF::MainThreadDispatcher::fired):
        (WTF::initializeMainThreadPlatform):
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * StitchMarker/wtf/generic/RunLoopGeneric.cpp: Added.
        (WTF::RunLoop::TimerBase::ScheduledTask::create):
        (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
        (WTF::RunLoop::TimerBase::ScheduledTask::fired):
        (WTF::RunLoop::TimerBase::ScheduledTask::scheduledTimePoint const):
        (WTF::RunLoop::TimerBase::ScheduledTask::updateReadyTime):
        (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
        (WTF::RunLoop::TimerBase::ScheduledTask::isActive const):
        (WTF::RunLoop::TimerBase::ScheduledTask::deactivate):
        (WTF::RunLoop::RunLoop):
        (WTF::RunLoop::~RunLoop):
        (WTF::RunLoop::populateTasks):
        (WTF::RunLoop::runImpl):
        (WTF::RunLoop::run):
        (WTF::RunLoop::iterate):
        (WTF::RunLoop::stop):
        (WTF::RunLoop::wakeUp):
        (WTF::RunLoop::schedule):
        (WTF::RunLoop::scheduleAndWakeUp):
        (WTF::RunLoop::dispatchAfter):
        (WTF::RunLoop::TimerBase::TimerBase):
        (WTF::RunLoop::TimerBase::~TimerBase):
        (WTF::RunLoop::TimerBase::start):
        (WTF::RunLoop::TimerBase::stop):
        (WTF::RunLoop::TimerBase::isActive const):
        (WTF::RunLoop::TimerBase::secondsUntilFire const):
        * StitchMarker/wtf/text/ASCIIFastPath.h: Added.
        (WTF::isAlignedTo):
        (WTF::isAlignedToMachineWord):
        (WTF::alignToMachineWord):
        (WTF::isAllASCII):
        (WTF::charactersAreAllASCII):
        (WTF::copyLCharsFromUCharSource):
        * StitchMarker/wtf/text/AtomicString.cpp: Added.
        (WTF::AtomicString::convertASCIICase const):
        (WTF::AtomicString::convertToASCIILowercase const):
        (WTF::AtomicString::convertToASCIIUppercase const):
        (WTF::AtomicString::number):
        (WTF::AtomicString::fromUTF8Internal):
        (WTF::AtomicString::show const):
        (WTF::AtomicString::init):
        * StitchMarker/wtf/text/AtomicString.h: Added.
        (WTF::AtomicString::AtomicString):
        (WTF::AtomicString::operator=):
        (WTF::AtomicString::isHashTableDeletedValue const):
        (WTF::AtomicString::existingHash const):
        (WTF::AtomicString::operator const String& const):
        (WTF::AtomicString::string const):
        (WTF::AtomicString::impl const):
        (WTF::AtomicString::is8Bit const):
        (WTF::AtomicString::characters8 const):
        (WTF::AtomicString::characters16 const):
        (WTF::AtomicString::length const):
        (WTF::AtomicString::operator[] const):
        (WTF::AtomicString::contains const):
        (WTF::AtomicString::containsIgnoringASCIICase const):
        (WTF::AtomicString::find const):
        (WTF::AtomicString::findIgnoringASCIICase const):
        (WTF::AtomicString::startsWith const):
        (WTF::AtomicString::startsWithIgnoringASCIICase const):
        (WTF::AtomicString::endsWith const):
        (WTF::AtomicString::endsWithIgnoringASCIICase const):
        (WTF::AtomicString::toInt const):
        (WTF::AtomicString::toDouble const):
        (WTF::AtomicString::toFloat const):
        (WTF::AtomicString::percentage const):
        (WTF::AtomicString::isNull const):
        (WTF::AtomicString::isEmpty const):
        (WTF::AtomicString::operator NSString* const):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::nullAtom):
        (WTF::emptyAtom):
        (WTF::starAtom):
        (WTF::xmlAtom):
        (WTF::xmlnsAtom):
        (WTF::AtomicString::fromUTF8):
        (WTF::equalLettersIgnoringASCIICase):
        (WTF::equalIgnoringASCIICase):
        (WTF::IntegerToStringConversionTrait<AtomicString>::flush):
        * StitchMarker/wtf/text/AtomicStringImpl.cpp: Added.
        (WTF::AtomicStringTableLocker::AtomicStringTableLocker):
        (WTF::stringTable):
        (WTF::addToStringTable):
        (WTF::CStringTranslator::hash):
        (WTF::CStringTranslator::equal):
        (WTF::CStringTranslator::translate):
        (WTF::AtomicStringImpl::add):
        (WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
        (WTF::UCharBufferTranslator::hash):
        (WTF::UCharBufferTranslator::equal):
        (WTF::UCharBufferTranslator::translate):
        (WTF::HashAndUTF8CharactersTranslator::hash):
        (WTF::HashAndUTF8CharactersTranslator::equal):
        (WTF::HashAndUTF8CharactersTranslator::translate):
        (WTF::SubstringTranslator::translate):
        (WTF::SubstringTranslator8::hash):
        (WTF::SubstringTranslator8::equal):
        (WTF::SubstringTranslator16::hash):
        (WTF::SubstringTranslator16::equal):
        (WTF::LCharBufferTranslator::hash):
        (WTF::LCharBufferTranslator::equal):
        (WTF::LCharBufferTranslator::translate):
        (WTF::BufferFromStaticDataTranslator::hash):
        (WTF::BufferFromStaticDataTranslator::equal):
        (WTF::BufferFromStaticDataTranslator::translate):
        (WTF::AtomicStringImpl::addLiteral):
        (WTF::addSymbol):
        (WTF::addStatic):
        (WTF::AtomicStringImpl::addSlowCase):
        (WTF::AtomicStringImpl::remove):
        (WTF::AtomicStringImpl::lookUpSlowCase):
        (WTF::AtomicStringImpl::addUTF8):
        (WTF::AtomicStringImpl::lookUp):
        (WTF::AtomicStringImpl::isInAtomicStringTable):
        * StitchMarker/wtf/text/AtomicStringImpl.h: Added.
        (WTF::AtomicStringImpl::lookUp):
        (WTF::AtomicStringImpl::add):
        (WTF::AtomicStringImpl::addWithStringTableProvider):
        (WTF::ValueCheck<AtomicStringImpl::checkConsistency):
        * StitchMarker/wtf/text/AtomicStringTable.cpp: Added.
        (WTF::AtomicStringTable::create):
        (WTF::AtomicStringTable::~AtomicStringTable):
        (WTF::AtomicStringTable::destroy):
        * StitchMarker/wtf/text/AtomicStringTable.h: Added.
        * StitchMarker/wtf/text/CString.cpp: Added.
        (WTF::CStringBuffer::createUninitialized):
        (WTF::CString::CString):
        (WTF::CString::init):
        (WTF::CString::mutableData):
        (WTF::CString::newUninitialized):
        (WTF::CString::copyBufferIfNeeded):
        (WTF::CString::isSafeToSendToAnotherThread const):
        (WTF::operator==):
        (WTF::CString::hash const):
        (WTF::operator<):
        (WTF::CStringHash::equal):
        * StitchMarker/wtf/text/CString.h: Added.
        (WTF::CStringBuffer::data):
        (WTF::CStringBuffer::length const):
        (WTF::CStringBuffer::CStringBuffer):
        (WTF::CStringBuffer::mutableData):
        (WTF::CString::CString):
        (WTF::CString::data const):
        (WTF::CString::length const):
        (WTF::CString::isNull const):
        (WTF::CString::buffer const):
        (WTF::CString::isHashTableDeletedValue const):
        (WTF::operator!=):
        (WTF::CStringHash::hash):
        * StitchMarker/wtf/text/ConversionMode.h: Added.
        * StitchMarker/wtf/text/IntegerToStringConversion.h: Added.
        (WTF::numberToStringImpl):
        (WTF::numberToStringSigned):
        (WTF::numberToStringUnsigned):
        (WTF::writeNumberToBufferImpl):
        (WTF::writeNumberToBufferSigned):
        (WTF::writeNumberToBufferUnsigned):
        (WTF::lengthOfNumberAsStringImpl):
        (WTF::lengthOfNumberAsStringSigned):
        (WTF::lengthOfNumberAsStringUnsigned):
        * StitchMarker/wtf/text/LChar.h: Added.
        * StitchMarker/wtf/text/LineBreakIteratorPoolICU.h: Added.
        (WTF::LineBreakIteratorPool::sharedPool):
        (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
        (WTF::LineBreakIteratorPool::take):
        (WTF::LineBreakIteratorPool::put):
        * StitchMarker/wtf/text/NullTextBreakIterator.h: Added.
        (WTF::NullTextBreakIterator::preceding const):
        (WTF::NullTextBreakIterator::following const):
        (WTF::NullTextBreakIterator::isBoundary const):
        (WTF::NullTextBreakIterator::setText):
        * StitchMarker/wtf/text/StringBuffer.h: Added.
        (WTF::StringBuffer::StringBuffer):
        (WTF::StringBuffer::~StringBuffer):
        (WTF::StringBuffer::shrink):
        (WTF::StringBuffer::resize):
        (WTF::StringBuffer::length const):
        (WTF::StringBuffer::characters):
        (WTF::StringBuffer::operator[]):
        (WTF::StringBuffer::release):
        * StitchMarker/wtf/text/StringBuilder.cpp: Added.
        (WTF::expandedCapacity):
        (WTF::StringBuilder::reifyString const):
        (WTF::StringBuilder::resize):
        (WTF::StringBuilder::allocateBuffer):
        (WTF::StringBuilder::allocateBufferUpConvert):
        (WTF::StringBuilder::reallocateBuffer<LChar>):
        (WTF::StringBuilder::reallocateBuffer<UChar>):
        (WTF::StringBuilder::reserveCapacity):
        (WTF::StringBuilder::appendUninitialized):
        (WTF::StringBuilder::appendUninitializedSlow):
        (WTF::StringBuilder::append):
        (WTF::StringBuilder::appendNumber):
        (WTF::StringBuilder::appendECMAScriptNumber):
        (WTF::StringBuilder::appendFixedWidthNumber):
        (WTF::StringBuilder::canShrink const):
        (WTF::StringBuilder::shrinkToFit):
        (WTF::appendQuotedJSONStringInternalSlow):
        (WTF::appendQuotedJSONStringInternal):
        (WTF::StringBuilder::appendQuotedJSONString):
        * StitchMarker/wtf/text/StringBuilder.h: Added.
        (WTF::StringBuilder::StringBuilder):
        (WTF::StringBuilder::append):
        (WTF::StringBuilder::appendLiteral):
        (WTF::StringBuilder::toString):
        (WTF::StringBuilder::toStringPreserveCapacity const):
        (WTF::StringBuilder::toAtomicString const):
        (WTF::StringBuilder::length const):
        (WTF::StringBuilder::isEmpty const):
        (WTF::StringBuilder::capacity const):
        (WTF::StringBuilder::operator[] const):
        (WTF::StringBuilder::characters8 const):
        (WTF::StringBuilder::characters16 const):
        (WTF::StringBuilder::is8Bit const):
        (WTF::StringBuilder::clear):
        (WTF::StringBuilder::swap):
        (WTF::StringBuilder::getBufferCharacters<LChar>):
        (WTF::StringBuilder::getBufferCharacters<UChar>):
        (WTF::equal):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::IntegerToStringConversionTrait<StringBuilder>::flush):
        * StitchMarker/wtf/text/StringCommon.h: Added.
        (WTF::loadUnaligned):
        (WTF::equal):
        (WTF::equalCommon):
        (WTF::equalIgnoringASCIICase):
        (WTF::equalIgnoringASCIICaseCommon):
        (WTF::startsWith):
        (WTF::startsWithIgnoringASCIICase):
        (WTF::endsWith):
        (WTF::endsWithIgnoringASCIICase):
        (WTF::findIgnoringASCIICase):
        (WTF::findInner):
        (WTF::find):
        (WTF::findCommon):
        (WTF::equalLettersIgnoringASCIICase):
        (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
        (WTF::equalLettersIgnoringASCIICaseCommonWithoutLength):
        (WTF::startsWithLettersIgnoringASCIICaseCommonWithoutLength):
        (WTF::equalLettersIgnoringASCIICaseCommon):
        (WTF::startsWithLettersIgnoringASCIICaseCommon):
        * StitchMarker/wtf/text/StringConcatenate.h: Added.
        (WTF::StringTypeAdapter<char>::StringTypeAdapter<char>):
        (WTF::StringTypeAdapter<char>::length):
        (WTF::StringTypeAdapter<char>::is8Bit):
        (WTF::StringTypeAdapter<char>::writeTo const):
        (WTF::StringTypeAdapter<char>::toString const):
        (WTF::StringTypeAdapter<UChar>::StringTypeAdapter<UChar>):
        (WTF::StringTypeAdapter<UChar>::length const):
        (WTF::StringTypeAdapter<UChar>::is8Bit const):
        (WTF::StringTypeAdapter<UChar>::writeTo const):
        (WTF::StringTypeAdapter<UChar>::toString const):
        (WTF::StringTypeAdapter<char::StringTypeAdapter):
        (WTF::StringTypeAdapter<ASCIILiteral>::StringTypeAdapter):
        (WTF::StringTypeAdapter<Vector<char>>::StringTypeAdapter):
        (WTF::StringTypeAdapter<Vector<char>>::length const):
        (WTF::StringTypeAdapter<Vector<char>>::is8Bit const):
        (WTF::StringTypeAdapter<Vector<char>>::writeTo const):
        (WTF::StringTypeAdapter<Vector<char>>::toString const):
        (WTF::StringTypeAdapter<String>::StringTypeAdapter<String>):
        (WTF::StringTypeAdapter<String>::length const):
        (WTF::StringTypeAdapter<String>::is8Bit const):
        (WTF::StringTypeAdapter<String>::writeTo const):
        (WTF::StringTypeAdapter<String>::toString const):
        (WTF::StringTypeAdapter<AtomicString>::StringTypeAdapter):
        (WTF::sumWithOverflow):
        (WTF::are8Bit):
        (WTF::makeStringAccumulator):
        (WTF::tryMakeStringFromAdapters):
        (WTF::tryMakeString):
        (WTF::makeString):
        * StitchMarker/wtf/text/StringHash.h: Added.
        (WTF::HashTraits<String>::isEmptyValue):
        (WTF::HashTraits<String>::customDeleteBucket):
        (WTF::StringHash::hash):
        (WTF::StringHash::equal):
        (WTF::ASCIICaseInsensitiveHash::foldCase):
        (WTF::ASCIICaseInsensitiveHash::hash):
        (WTF::ASCIICaseInsensitiveHash::equal):
        (WTF::AlreadyHashed::hash):
        (WTF::AlreadyHashed::avoidDeletedValue):
        (WTF::ASCIICaseInsensitiveStringViewHashTranslator::hash):
        (WTF::ASCIICaseInsensitiveStringViewHashTranslator::equal):
        * StitchMarker/wtf/text/StringImpl.cpp: Added.
        (WTF::StringStats::removeString):
        (WTF::StringStats::printStats):
        (WTF::StringImpl::~StringImpl):
        (WTF::StringImpl::destroy):
        (WTF::StringImpl::createFromLiteral):
        (WTF::StringImpl::createWithoutCopying):
        (WTF::StringImpl::createUninitializedInternal):
        (WTF::StringImpl::createUninitializedInternalNonEmpty):
        (WTF::StringImpl::createUninitialized):
        (WTF::StringImpl::reallocateInternal):
        (WTF::StringImpl::reallocate):
        (WTF::StringImpl::createInternal):
        (WTF::StringImpl::create):
        (WTF::StringImpl::create8BitIfPossible):
        (WTF::StringImpl::containsOnlyWhitespace):
        (WTF::StringImpl::substring):
        (WTF::StringImpl::characterStartingAt):
        (WTF::StringImpl::convertToLowercaseWithoutLocale):
        (WTF::StringImpl::convertToLowercaseWithoutLocaleStartingAtFailingIndex8Bit):
        (WTF::StringImpl::convertToUppercaseWithoutLocale):
        (WTF::needsTurkishCasingRules):
        (WTF::StringImpl::convertToLowercaseWithLocale):
        (WTF::StringImpl::convertToUppercaseWithLocale):
        (WTF::StringImpl::foldCase):
        (WTF::StringImpl::convertASCIICase):
        (WTF::StringImpl::convertToASCIILowercase):
        (WTF::StringImpl::convertToASCIIUppercase):
        (WTF::StringImpl::stripMatchedCharacters):
        (WTF::UCharPredicate::UCharPredicate):
        (WTF::UCharPredicate::operator() const):
        (WTF::SpaceOrNewlinePredicate::operator() const):
        (WTF::StringImpl::stripWhiteSpace):
        (WTF::StringImpl::removeCharacters):
        (WTF::StringImpl::simplifyMatchedCharactersToSpace):
        (WTF::StringImpl::simplifyWhiteSpace):
        (WTF::StringImpl::toIntStrict):
        (WTF::StringImpl::toUIntStrict):
        (WTF::StringImpl::toInt64Strict):
        (WTF::StringImpl::toUInt64Strict):
        (WTF::StringImpl::toIntPtrStrict):
        (WTF::StringImpl::toInt):
        (WTF::StringImpl::toUInt):
        (WTF::StringImpl::toInt64):
        (WTF::StringImpl::toUInt64):
        (WTF::StringImpl::toIntPtr):
        (WTF::StringImpl::toDouble):
        (WTF::StringImpl::toFloat):
        (WTF::equalCompatibilityCaseless):
        (WTF::StringImpl::find):
        (WTF::StringImpl::findIgnoringCase):
        (WTF::findIgnoringCaseInner):
        (WTF::StringImpl::findIgnoringASCIICase const):
        (WTF::StringImpl::reverseFind):
        (WTF::reverseFindInner):
        (WTF::reverseFindIgnoringCaseInner):
        (WTF::StringImpl::reverseFindIgnoringCase):
        (WTF::equalInner):
        (WTF::StringImpl::startsWith const):
        (WTF::StringImpl::startsWithIgnoringASCIICase const):
        (WTF::StringImpl::hasInfixStartingAt const):
        (WTF::StringImpl::endsWith):
        (WTF::StringImpl::endsWithIgnoringASCIICase const):
        (WTF::StringImpl::endsWith const):
        (WTF::StringImpl::hasInfixEndingAt const):
        (WTF::StringImpl::replace):
        (WTF::equal):
        (WTF::equalInternal):
        (WTF::equalIgnoringNullity):
        (WTF::equalIgnoringASCIICase):
        (WTF::equalIgnoringASCIICaseNonNull):
        (WTF::StringImpl::defaultWritingDirection):
        (WTF::StringImpl::adopt):
        (WTF::StringImpl::sizeInBytes const):
        (WTF::putUTF8Triple):
        (WTF::StringImpl::utf8Impl):
        (WTF::StringImpl::utf8ForCharacters):
        (WTF::StringImpl::utf8ForRange const):
        (WTF::StringImpl::utf8 const):
        (WTF::StringImpl::hashSlowCase const):
        (WTF::StringImpl::concurrentHash const):
        * StitchMarker/wtf/text/StringImpl.h: Added.
        (WTF::StringStats::add8BitString):
        (WTF::StringStats::add16BitString):
        (WTF::StringImplShape::StringImplShape):
        (WTF::StringImpl::StringImpl):
        (WTF::StringImpl::create8BitIfPossible):
        (WTF::StringImpl::create):
        (WTF::StringImpl::createSubstringSharingImpl):
        (WTF::StringImpl::createFromLiteral):
        (WTF::StringImpl::tryCreateUninitialized):
        (WTF::StringImpl::flagsOffset):
        (WTF::StringImpl::flagIs8Bit):
        (WTF::StringImpl::flagIsAtomic):
        (WTF::StringImpl::flagIsSymbol):
        (WTF::StringImpl::maskStringKind):
        (WTF::StringImpl::dataOffset):
        (WTF::StringImpl::adopt):
        (WTF::StringImpl::length const):
        (WTF::StringImpl::lengthMemoryOffset):
        (WTF::StringImpl::is8Bit const):
        (WTF::StringImpl::characters8 const):
        (WTF::StringImpl::characters16 const):
        (WTF::StringImpl::cost const):
        (WTF::StringImpl::costDuringGC):
        (WTF::StringImpl::stringKind const):
        (WTF::StringImpl::isSymbol const):
        (WTF::StringImpl::isAtomic const):
        (WTF::StringImpl::setIsAtomic):
        (WTF::StringImpl::isSubString const):
        (WTF::StringImpl::setHash const):
        (WTF::StringImpl::rawHash const):
        (WTF::StringImpl::hasHash const):
        (WTF::StringImpl::existingHash const):
        (WTF::StringImpl::hash const):
        (WTF::StringImpl::isStatic const):
        (WTF::StringImpl::refCount const):
        (WTF::StringImpl::hasOneRef const):
        (WTF::StringImpl::hasAtLeastOneRef const):
        (WTF::StringImpl::ref):
        (WTF::StringImpl::deref):
        (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
        (WTF::StringImpl::StaticStringImpl::operator StringImpl&):
        (WTF::StringImpl::empty):
        (WTF::StringImpl::copyChars):
        (WTF::StringImpl::at const):
        (WTF::StringImpl::operator[] const):
        (WTF::StringImpl::find):
        (WTF::StringImpl::findIgnoringCase):
        (WTF::StringImpl::startsWith):
        (WTF::StringImpl::startsWith const):
        (WTF::StringImpl::endsWith const):
        (WTF::StringImpl::replace):
        (WTF::StringImpl::stringStats):
        (WTF::StringImpl::allocationSize):
        (WTF::StringImpl::tailOffset):
        (WTF::StringImpl::requiresCopy const):
        (WTF::StringImpl::tailPointer const):
        (WTF::StringImpl::tailPointer):
        (WTF::StringImpl::substringBuffer const):
        (WTF::StringImpl::substringBuffer):
        (WTF::StringImpl::bufferOwnership const):
        (WTF::StringImpl::assertHashIsCorrect):
        (WTF::ValueCheck<StringImpl::checkConsistency):
        (WTF::StringImpl::constructInternal<LChar>):
        (WTF::StringImpl::constructInternal<UChar>):
        (WTF::StringImpl::characters<LChar> const):
        (WTF::StringImpl::characters<UChar> const):
        (WTF::equal):
        (WTF::find):
        (WTF::reverseFindLineTerminator):
        (WTF::reverseFind):
        (WTF::equalIgnoringNullity):
        (WTF::codePointCompare):
        (WTF::codePointCompare8):
        (WTF::codePointCompare16):
        (WTF::codePointCompare8To16):
        (WTF::isSpaceOrNewline):
        (WTF::lengthOfNullTerminatedString):
        (WTF::StringImpl::isolatedCopy const):
        (WTF::equalIgnoringASCIICase):
        (WTF::startsWithLettersIgnoringASCIICase):
        (WTF::equalLettersIgnoringASCIICase):
        * StitchMarker/wtf/text/StringOperators.h: Added.
        (WTF::StringAppend::StringAppend):
        (WTF::StringAppend::operator String const):
        (WTF::StringAppend::operator AtomicString const):
        (WTF::StringAppend::is8Bit):
        (WTF::StringAppend::writeTo):
        (WTF::StringAppend::length):
        (WTF::operator+):
        * StitchMarker/wtf/text/StringView.cpp: Added.
        (WTF::StringView::containsIgnoringASCIICase const):
        (WTF::StringView::findIgnoringASCIICase const):
        (WTF::StringView::startsWith const):
        (WTF::StringView::startsWithIgnoringASCIICase const):
        (WTF::StringView::endsWith const):
        (WTF::StringView::endsWithIgnoringASCIICase const):
        (WTF::StringView::utf8 const):
        (WTF::StringView::find const):
        (WTF::StringView::SplitResult::Iterator::findNextSubstring):
        (WTF::StringView::SplitResult::Iterator::operator++):
        (WTF::StringView::GraphemeClusters::Iterator::Impl::Impl):
        (WTF::StringView::GraphemeClusters::Iterator::Impl::operator++):
        (WTF::StringView::GraphemeClusters::Iterator::Impl::operator* const):
        (WTF::StringView::GraphemeClusters::Iterator::Impl::operator== const):
        (WTF::StringView::GraphemeClusters::Iterator::Impl::computeIndexEnd):
        (WTF::StringView::GraphemeClusters::Iterator::Iterator):
        (WTF::StringView::GraphemeClusters::Iterator::~Iterator):
        (WTF::StringView::GraphemeClusters::Iterator::operator++):
        (WTF::StringView::GraphemeClusters::Iterator::operator* const):
        (WTF::StringView::GraphemeClusters::Iterator::operator== const):
        (WTF::StringView::GraphemeClusters::Iterator::operator!= const):
        (WTF::StringView::UnderlyingString::UnderlyingString):
        (WTF::StringView::invalidate):
        (WTF::StringView::underlyingStringIsValid const):
        (WTF::StringView::adoptUnderlyingString):
        (WTF::StringView::setUnderlyingString):
        * StitchMarker/wtf/text/StringView.h: Added.
        (WTF::StringView::left const):
        (WTF::StringView::right const):
        (WTF::StringView::underlyingStringIsValid const):
        (WTF::StringView::setUnderlyingString):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::StringView::StringView):
        (WTF::StringView::~StringView):
        (WTF::StringView::operator=):
        (WTF::StringView::initialize):
        (WTF::StringView::clear):
        (WTF::StringView::empty):
        (WTF::StringView::characters8 const):
        (WTF::StringView::characters16 const):
        (WTF::StringView::UpconvertedCharacters::operator const UChar* const):
        (WTF::StringView::UpconvertedCharacters::get const):
        (WTF::StringView::upconvertedCharacters const):
        (WTF::StringView::isNull const):
        (WTF::StringView::isEmpty const):
        (WTF::StringView::length const):
        (WTF::StringView::operator bool const):
        (WTF::StringView::is8Bit const):
        (WTF::StringView::substring const):
        (WTF::StringView::operator[] const):
        (WTF::StringView::contains const):
        (WTF::StringView::getCharactersWithUpconvert const):
        (WTF::StringView::UpconvertedCharacters::UpconvertedCharacters):
        (WTF::StringView::toString const):
        (WTF::StringView::toAtomicString const):
        (WTF::StringView::toExistingAtomicString const):
        (WTF::StringView::toFloat const):
        (WTF::StringView::toInt const):
        (WTF::StringView::toIntStrict const):
        (WTF::StringView::toStringWithoutCopying const):
        (WTF::StringView::find const):
        (WTF::StringView::reverseFind const):
        (WTF::StringView::invalidate):
        (WTF::StringTypeAdapter<StringView>::StringTypeAdapter<StringView>):
        (WTF::StringTypeAdapter<StringView>::length):
        (WTF::StringTypeAdapter<StringView>::is8Bit):
        (WTF::StringTypeAdapter<StringView>::writeTo):
        (WTF::StringTypeAdapter<StringView>::toString const):
        (WTF::append):
        (WTF::equal):
        (WTF::equalIgnoringASCIICase):
        (WTF::StringView::graphemeClusters const):
        (WTF::StringView::codePoints const):
        (WTF::StringView::codeUnits const):
        (WTF::StringView::GraphemeClusters::GraphemeClusters):
        (WTF::StringView::GraphemeClusters::begin const):
        (WTF::StringView::GraphemeClusters::end const):
        (WTF::StringView::CodePoints::CodePoints):
        (WTF::StringView::CodePoints::Iterator::Iterator):
        (WTF::StringView::CodePoints::Iterator::operator++):
        (WTF::StringView::CodePoints::Iterator::operator=):
        (WTF::StringView::CodePoints::Iterator::operator* const):
        (WTF::StringView::CodePoints::Iterator::operator== const):
        (WTF::StringView::CodePoints::Iterator::operator!= const):
        (WTF::StringView::CodePoints::begin const):
        (WTF::StringView::CodePoints::end const):
        (WTF::StringView::CodeUnits::CodeUnits):
        (WTF::StringView::CodeUnits::Iterator::Iterator):
        (WTF::StringView::CodeUnits::Iterator::operator++):
        (WTF::StringView::CodeUnits::Iterator::operator* const):
        (WTF::StringView::CodeUnits::Iterator::operator== const):
        (WTF::StringView::CodeUnits::Iterator::operator!= const):
        (WTF::StringView::CodeUnits::begin const):
        (WTF::StringView::CodeUnits::end const):
        (WTF::StringView::split const):
        (WTF::StringView::SplitResult::SplitResult):
        (WTF::StringView::SplitResult::begin const):
        (WTF::StringView::SplitResult::end const):
        (WTF::StringView::SplitResult::Iterator::Iterator):
        (WTF::StringView::SplitResult::Iterator::operator* const):
        (WTF::StringView::SplitResult::Iterator::operator== const):
        (WTF::StringView::SplitResult::Iterator::operator!= const):
        (WTF::equalLettersIgnoringASCIICase):
        * StitchMarker/wtf/text/SymbolImpl.cpp: Added.
        (WTF::SymbolImpl::nextHashForSymbol):
        (WTF::SymbolImpl::create):
        (WTF::SymbolImpl::createNullSymbol):
        (WTF::PrivateSymbolImpl::create):
        (WTF::PrivateSymbolImpl::createNullSymbol):
        (WTF::RegisteredSymbolImpl::create):
        * StitchMarker/wtf/text/SymbolImpl.h: Added.
        (WTF::SymbolImpl::hashForSymbol const):
        (WTF::SymbolImpl::isNullSymbol const):
        (WTF::SymbolImpl::isRegistered const):
        (WTF::SymbolImpl::isPrivate const):
        (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
        (WTF::SymbolImpl::StaticSymbolImpl::operator SymbolImpl&):
        (WTF::SymbolImpl::SymbolImpl):
        (WTF::PrivateSymbolImpl::PrivateSymbolImpl):
        (WTF::RegisteredSymbolImpl::symbolRegistry const):
        (WTF::RegisteredSymbolImpl::clearSymbolRegistry):
        (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl):
        (WTF::StringImpl::symbolAwareHash const):
        (WTF::StringImpl::existingSymbolAwareHash const):
        (WTF::SymbolImpl::symbolRegistry const):
        (WTF::SymbolImpl::asRegisteredSymbolImpl):
        (WTF::ValueCheck<SymbolImpl::checkConsistency):
        * StitchMarker/wtf/text/SymbolRegistry.cpp: Added.
        (WTF::SymbolRegistry::~SymbolRegistry):
        (WTF::SymbolRegistry::symbolForKey):
        (WTF::SymbolRegistry::remove):
        * StitchMarker/wtf/text/SymbolRegistry.h: Added.
        (WTF::SymbolRegistryKey::hash const):
        (WTF::SymbolRegistryKey::impl const):
        (WTF::SymbolRegistryKey::isHashTableDeletedValue const):
        (WTF::SymbolRegistryKey::hashTableDeletedValue):
        (WTF::DefaultHash<SymbolRegistryKey>::Hash::hash):
        (WTF::DefaultHash<SymbolRegistryKey>::Hash::equal):
        (WTF::HashTraits<SymbolRegistryKey>::isEmptyValue):
        (WTF::SymbolRegistryKey::SymbolRegistryKey):
        * StitchMarker/wtf/text/TextBreakIterator.cpp: Added.
        (WTF::mapModeToBackingIterator):
        (WTF::TextBreakIterator::TextBreakIterator):
        (WTF::initializeIterator):
        (WTF::setTextForIterator):
        (WTF::setContextAwareTextForIterator):
        (WTF::wordBreakIterator):
        (WTF::sentenceBreakIterator):
        (WTF::acquireLineBreakIterator):
        (WTF::releaseLineBreakIterator):
        (WTF::openLineBreakIterator):
        (WTF::closeLineBreakIterator):
        (WTF::getNonSharedCharacterBreakIterator):
        (WTF::cacheNonSharedCharacterBreakIterator):
        (WTF::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
        (WTF::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator):
        (WTF::isWordTextBreak):
        (WTF::numGraphemeClusters):
        (WTF::numCharactersInGraphemeClusters):
        * StitchMarker/wtf/text/TextBreakIterator.h: Added.
        (WTF::TextBreakIterator::preceding const):
        (WTF::TextBreakIterator::following const):
        (WTF::TextBreakIterator::isBoundary const):
        (WTF::TextBreakIterator::setText):
        (WTF::TextBreakIterator::mode const):
        (WTF::TextBreakIterator::locale const):
        (WTF::TextBreakIteratorCache::singleton):
        (WTF::TextBreakIteratorCache::take):
        (WTF::TextBreakIteratorCache::put):
        (WTF::TextBreakIteratorCache::TextBreakIteratorCache):
        (WTF::CachedTextBreakIterator::CachedTextBreakIterator):
        (WTF::CachedTextBreakIterator::~CachedTextBreakIterator):
        (WTF::CachedTextBreakIterator::preceding const):
        (WTF::CachedTextBreakIterator::following const):
        (WTF::CachedTextBreakIterator::isBoundary const):
        (WTF::LazyLineBreakIterator::LazyLineBreakIterator):
        (WTF::LazyLineBreakIterator::~LazyLineBreakIterator):
        (WTF::LazyLineBreakIterator::stringView const):
        (WTF::LazyLineBreakIterator::mode const):
        (WTF::LazyLineBreakIterator::lastCharacter const):
        (WTF::LazyLineBreakIterator::secondToLastCharacter const):
        (WTF::LazyLineBreakIterator::setPriorContext):
        (WTF::LazyLineBreakIterator::updatePriorContext):
        (WTF::LazyLineBreakIterator::resetPriorContext):
        (WTF::LazyLineBreakIterator::priorContextLength const):
        (WTF::LazyLineBreakIterator::get):
        (WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
        (WTF::NonSharedCharacterBreakIterator::operator UBreakIterator* const):
        * StitchMarker/wtf/text/TextBreakIteratorInternalICU.h: Added.
        * StitchMarker/wtf/text/UniquedStringImpl.h: Added.
        (WTF::UniquedStringImpl::UniquedStringImpl):
        (WTF::ValueCheck<UniquedStringImpl::checkConsistency):
        * StitchMarker/wtf/text/WTFString.cpp: Added.
        (WTF::String::String):
        (WTF::String::append):
        (WTF::codePointCompare):
        (WTF::String::insert):
        (WTF::String::characterStartingAt const):
        (WTF::String::truncate):
        (WTF::String::removeInternal):
        (WTF::String::remove):
        (WTF::String::substring const):
        (WTF::String::substringSharingImpl const):
        (WTF::String::convertToASCIILowercase const):
        (WTF::String::convertToASCIIUppercase const):
        (WTF::String::convertToLowercaseWithoutLocale const):
        (WTF::String::convertToLowercaseWithoutLocaleStartingAtFailingIndex8Bit const):
        (WTF::String::convertToUppercaseWithoutLocale const):
        (WTF::String::convertToLowercaseWithLocale const):
        (WTF::String::convertToUppercaseWithLocale const):
        (WTF::String::stripWhiteSpace const):
        (WTF::String::simplifyWhiteSpace const):
        (WTF::String::removeCharacters const):
        (WTF::String::foldCase const):
        (WTF::String::percentage const):
        (WTF::String::charactersWithNullTermination const):
        (WTF::String::format):
        (WTF::String::number):
        (WTF::String::numberToStringECMAScript):
        (WTF::String::numberToStringFixedWidth):
        (WTF::String::toIntStrict const):
        (WTF::String::toUIntStrict const):
        (WTF::String::toInt64Strict const):
        (WTF::String::toUInt64Strict const):
        (WTF::String::toIntPtrStrict const):
        (WTF::String::toInt const):
        (WTF::String::toUInt const):
        (WTF::String::toInt64 const):
        (WTF::String::toUInt64 const):
        (WTF::String::toIntPtr const):
        (WTF::String::toDouble const):
        (WTF::String::toFloat const):
        (WTF::String::isolatedCopy const):
        (WTF::String::isolatedCopy):
        (WTF::String::isSafeToSendToAnotherThread const):
        (WTF::String::split const):
        (WTF::String::ascii const):
        (WTF::String::latin1 const):
        (WTF::String::utf8 const):
        (WTF::String::make8BitFrom16BitSource):
        (WTF::String::make16BitFrom8BitSource):
        (WTF::String::fromUTF8):
        (WTF::String::fromUTF8WithLatin1Fallback):
        (WTF::isCharacterAllowedInBase):
        (WTF::toIntegralType):
        (WTF::lengthOfCharactersAsInteger):
        (WTF::charactersToIntStrict):
        (WTF::charactersToUIntStrict):
        (WTF::charactersToInt64Strict):
        (WTF::charactersToUInt64Strict):
        (WTF::charactersToIntPtrStrict):
        (WTF::charactersToInt):
        (WTF::charactersToUInt):
        (WTF::charactersToInt64):
        (WTF::charactersToUInt64):
        (WTF::charactersToIntPtr):
        (WTF::toDoubleType):
        (WTF::charactersToDouble):
        (WTF::charactersToFloat):
        (WTF::emptyString):
        (String::show const):
        (string):
        (asciiDebug):
        * StitchMarker/wtf/text/WTFString.h: Added.
        (WTF::String::String):
        (WTF::String::operator=):
        (WTF::String::~String):
        (WTF::String::swap):
        (WTF::String::adopt):
        (WTF::String::isNull const):
        (WTF::String::isEmpty const):
        (WTF::String::impl const):
        (WTF::String::releaseImpl):
        (WTF::String::length const):
        (WTF::String::characters8 const):
        (WTF::String::characters16 const):
        (WTF::String::is8Bit const):
        (WTF::String::sizeInBytes const):
        (WTF::String::at const):
        (WTF::String::operator[] const):
        (WTF::String::find const):
        (WTF::String::findIgnoringASCIICase const):
        (WTF::String::reverseFind const):
        (WTF::String::findIgnoringCase const):
        (WTF::String::reverseFindIgnoringCase const):
        (WTF::String::contains const):
        (WTF::String::containsIgnoringASCIICase const):
        (WTF::String::startsWith const):
        (WTF::String::startsWithIgnoringASCIICase const):
        (WTF::String::hasInfixStartingAt const):
        (WTF::String::endsWith const):
        (WTF::String::endsWithIgnoringASCIICase const):
        (WTF::String::hasInfixEndingAt const):
        (WTF::String::append):
        (WTF::String::replace):
        (WTF::String::replaceWithLiteral):
        (WTF::String::left const):
        (WTF::String::right const):
        (WTF::String::createUninitialized):
        (WTF::String::split const):
        (WTF::String::make8BitFrom16BitSource):
        (WTF::String::fromUTF8):
        (WTF::String::fromUTF8WithLatin1Fallback):
        (WTF::String::defaultWritingDirection const):
        (WTF::String::containsOnlyWhitespace const):
        (WTF::String::isHashTableDeletedValue const):
        (WTF::String::existingHash const):
        (WTF::String::characterAt const):
        (WTF::String::clearImplIfNotShared):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::equalIgnoringNullity):
        (WTF::operator!):
        (WTF::swap):
        (WTF::String::characters<LChar> const):
        (WTF::String::characters<UChar> const):
        (WTF::String::containsOnlyLatin1 const):
        (WTF::String::operator NSString * const):
        (WTF::nsStringNilIfEmpty):
        (WTF::String::containsOnlyASCII const):
        (WTF::codePointCompareLessThan):
        (WTF::appendNumber):
        (WTF::isAllSpecialCharacters):
        (WTF::isSpecialCharacter const):
        (WTF::ASCIILiteral::ASCIILiteral):
        (WTF::ASCIILiteral::operator const char*):
        (WTF::equalLettersIgnoringASCIICase):
        (WTF::equalIgnoringASCIICase):
        (WTF::startsWithLettersIgnoringASCIICase):
        (WTF::IntegerToStringConversionTrait<String>::flush):
        * StitchMarker/wtf/text/icu/TextBreakIteratorICU.h: Added.
        (WTF::caretRules):
        (WTF::TextBreakIteratorICU::set8BitText):
        (WTF::TextBreakIteratorICU::TextBreakIteratorICU):
        (WTF::TextBreakIteratorICU::operator=):
        (WTF::TextBreakIteratorICU::~TextBreakIteratorICU):
        (WTF::TextBreakIteratorICU::setText):
        (WTF::TextBreakIteratorICU::preceding const):
        (WTF::TextBreakIteratorICU::following const):
        (WTF::TextBreakIteratorICU::isBoundary const):
        * StitchMarker/wtf/text/icu/UTextProvider.cpp: Added.
        (WTF::fixPointer):
        (WTF::uTextCloneImpl):
        * StitchMarker/wtf/text/icu/UTextProvider.h: Added.
        (WTF::uTextProviderContext):
        (WTF::initializeContextAwareUTextProvider):
        (WTF::uTextAccessPinIndex):
        (WTF::uTextAccessInChunkOrOutOfRange):
        * StitchMarker/wtf/text/icu/UTextProviderLatin1.cpp: Added.
        (WTF::uTextLatin1Clone):
        (WTF::uTextLatin1NativeLength):
        (WTF::uTextLatin1Access):
        (WTF::uTextLatin1Extract):
        (WTF::uTextLatin1MapOffsetToNative):
        (WTF::uTextLatin1MapNativeIndexToUTF16):
        (WTF::uTextLatin1Close):
        (WTF::openLatin1UTextProvider):
        (WTF::textLatin1ContextAwareGetCurrentContext):
        (WTF::textLatin1ContextAwareMoveInPrimaryContext):
        (WTF::textLatin1ContextAwareSwitchToPrimaryContext):
        (WTF::textLatin1ContextAwareMoveInPriorContext):
        (WTF::textLatin1ContextAwareSwitchToPriorContext):
        (WTF::uTextLatin1ContextAwareClone):
        (WTF::uTextLatin1ContextAwareNativeLength):
        (WTF::uTextLatin1ContextAwareAccess):
        (WTF::uTextLatin1ContextAwareExtract):
        (WTF::uTextLatin1ContextAwareClose):
        (WTF::openLatin1ContextAwareUTextProvider):
        * StitchMarker/wtf/text/icu/UTextProviderLatin1.h: Added.
        * StitchMarker/wtf/text/icu/UTextProviderUTF16.cpp: Added.
        (WTF::textUTF16ContextAwareGetCurrentContext):
        (WTF::textUTF16ContextAwareMoveInPrimaryContext):
        (WTF::textUTF16ContextAwareSwitchToPrimaryContext):
        (WTF::textUTF16ContextAwareMoveInPriorContext):
        (WTF::textUTF16ContextAwareSwitchToPriorContext):
        (WTF::uTextUTF16ContextAwareClone):
        (WTF::uTextUTF16ContextAwareNativeLength):
        (WTF::uTextUTF16ContextAwareAccess):
        (WTF::uTextUTF16ContextAwareExtract):
        (WTF::uTextUTF16ContextAwareClose):
        (WTF::openUTF16ContextAwareUTextProvider):
        * StitchMarker/wtf/text/icu/UTextProviderUTF16.h: Added.
        * StitchMarker/wtf/text/unix/TextBreakIteratorInternalICUUnix.cpp: Added.
        (WTF::currentSearchLocaleID):
        (WTF::currentTextBreakLocaleID):
        * StitchMarker/wtf/unicode/CharacterNames.h: Added.
        * StitchMarker/wtf/unicode/UTF8.cpp: Added.
        (WTF::Unicode::inlineUTF8SequenceLengthNonASCII):
        (WTF::Unicode::inlineUTF8SequenceLength):
        (WTF::Unicode::UTF8SequenceLength):
        (WTF::Unicode::decodeUTF8Sequence):
        (WTF::Unicode::convertLatin1ToUTF8):
        (WTF::Unicode::convertUTF16ToUTF8):
        (WTF::Unicode::isLegalUTF8):
        (WTF::Unicode::readUTF8Sequence):
        (WTF::Unicode::convertUTF8ToUTF16):
        (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
        (WTF::Unicode::equalUTF16WithUTF8):
        (WTF::Unicode::equalLatin1WithUTF8):
        * StitchMarker/wtf/unicode/UTF8.h: Added.

2017-08-22  Ryosuke Niwa  <rniwa@webkit.org>

        Commit the change meant to be included in the previous commit.

        * Speedometer/resources/main.js:
        (startBenchmark):

2017-08-22  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Make it possible to change the iteration count via query string
        https://bugs.webkit.org/show_bug.cgi?id=175811

        Reviewed by Saam Barati.

        Added the support for specifying the iteration count by "iterationCount" query parameter, and replaced "ms"
        query parameter by "unit=ms".

        Finally, reduced the number of iterations from 20 to 10 to reduce the time needed to run the benchmark
        since Speedometer 2.0 contains more than twice the number of libraries and frameworks than Speedometer 1.0.

        * Speedometer/resources/main.js:
        (window.benchmarkClient.didFinishLastIteration):
        (startBenchmark):

2017-08-22  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Add missing stylesheet to Angular example
        https://bugs.webkit.org/show_bug.cgi?id=175820

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css: Added.

2017-08-22  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Add button to select and unselect all tests to InteractiveRunner.html
        https://bugs.webkit.org/show_bug.cgi?id=175816

        Reviewed by Saam Barati.

        Added buttons to select and unselect all subtests to aid debugging.

        * Speedometer/InteractiveRunner.html:
        (createUIForSuites):

2017-08-18  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r219640): Speedometer no longer runs on Safari 7
        https://bugs.webkit.org/show_bug.cgi?id=175749

        Reviewed by Joseph Pecoraro.

        Use regular string instead of template literal to make the script compatible with older versions of Safari.

        * Speedometer/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype._runTest):

2017-08-17  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Update to modern Vue.js version
        https://bugs.webkit.org/show_bug.cgi?id=175660

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md: Documented build process.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/index.js: Forced relative URLs to avoid breaking the interactive runner.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/*: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package-lock.json: Added to pin dependencies and make builds deterministic.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package.json: Update to modern Vue.js version.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/Todos.vue: Fix markup error.

2017-08-17  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Update to modern React/Redux version
        https://bugs.webkit.org/show_bug.cgi?id=175669

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/react-redux/README.md: Documented build steps.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/*: Updated per build instructions.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/package-lock.json: Pinned dependencies to make builds deterministic.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/package.json: Fixed build command.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/public/index.html: Made title consistent.

2017-08-17  Michael Saboff  <msaboff@apple.com>

        Add a Unicode test to RexBench that matches non-BMP characters
        https://bugs.webkit.org/show_bug.cgi?id=175697

        Reviewed by JF Bastien.

        Added a new sub test that simulates 5 card stud poker.  This test uses the Unicode playing
        cards code points, U+1F0A1..U+1F0DE, as the card representation.  The scoring of hands is
        done using three regular expressions, one to check for a flush, one to check for straights
        and one to check for pairs, three of a kind and four of a kind.

        * RexBench/UniPoker: Added.
        * RexBench/UniPoker/benchmark.js: Added.
        (UniPokerBenchmark):
        (UniPokerBenchmark.prototype.setup.):
        (UniPokerBenchmark.prototype.setup.Math.random):
        (UniPokerBenchmark.prototype.setup):
        (UniPokerBenchmark.prototype.runOnce):
        (UniPokerBenchmark.prototype.validate):
        * RexBench/UniPoker/expected.js: Added.
        (PlayerExpectation):
        (PlayerExpectation.prototype.validate):
        * RexBench/UniPoker/poker.js: Added.
        (CardDeck):
        (CardDeck.prototype.newDeck):
        (CardDeck.prototype.shuffle):
        (CardDeck.prototype.dealOneCard):
        (CardDeck.cardRank):
        (CardDeck.cardName):
        (Hand):
        (Hand.prototype.clear):
        (Hand.prototype.takeCard):
        (Hand.prototype.score):
        (Hand.prototype.get rank):
        (Hand.prototype.toString):
        (Player):
        (Player.prototype.scoreHand):
        (Player.prototype.wonHand):
        (Player.prototype.get name):
        (Player.prototype.get hand):
        (Player.prototype.get wins):
        (Player.prototype.get handTypeCounts):
        (playHands):
        * RexBench/about.html:
        * RexBench/cli.js:
        * RexBench/glue.js:
        (driver.reportResult):
        * RexBench/index.html:
        * RexBench/unipoker_benchmark.js: Added.

2017-08-16  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Update Angular 1 TodoMVC example to v1.6.5
        https://bugs.webkit.org/show_bug.cgi?id=175623

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/angularjs/index.html: Made title consistent.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/package-lock.json: Added to pin dependencies.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/package.json: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md: Document the build process.

2017-08-16  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Document Backbone example
        https://bugs.webkit.org/show_bug.cgi?id=175626

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/backbone/index.html: Made title consistent.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css: Updated per build steps.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.map: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/package-lock.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/readme.md: Documented build steps.

2017-08-15  Michael Saboff  <msaboff@apple.com>

        Add Offline Assembler parsing test to RexBench
        https://bugs.webkit.org/show_bug.cgi?id=175581

        Reviewed by Saam Barati.

        This is a port of the JavaScriptCore offline assmebler's lexer, parser, AST and
        supporting code from Ruby to JavaScript turned into a benchmark.  The benchmark
        timing includes parsing through AST.  The validation processing time is not
        part of the benchmark measurement.

        The input data is the current tip of tree LLInt .asm source files.  Those file
        were converted to JavaScript using the python script, convert_asm_to_js.py.
        There is also a new JavaScript file, generate_expected.js, to create the
        expected output JavaScript file.

        * RexBench/OfflineAssembler: Added.
        * RexBench/OfflineAssembler/ast.js: Added.
        * RexBench/OfflineAssembler/instructions.js: Added.
        * RexBench/OfflineAssembler/parser.js: Added.
        * RexBench/OfflineAssembler/registers.js: Added.
        These are JavaScript translation of the Ruby Offline Assembler.  Code not
        needed for the benchmark was not translated and therefore missing.

        * RexBench/OfflineAssembler/InitBytecodes.asm: Added.
        * RexBench/OfflineAssembler/InitBytecodes.js: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter.asm: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter.js: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter32_64.asm: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter32_64.js: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter64.asm: Added.
        * RexBench/OfflineAssembler/LowLevelInterpreter64.js: Added.
        Copies of the current LLInt source and conversion to JavaScript.

        * RexBench/OfflineAssembler/file.js: Added.
        (File):
        (File.open):
        (File.prototype.read):
        Mock File class used to simulate filesystem access.

        * RexBench/OfflineAssembler/expected.js: Added.
        Expected output of the AST dumped and split into individual lines.

        * RexBench/OfflineAssembler/benchmark.js: Added.
        (OfflineAssemblerBenchmark):
        (OfflineAssemblerBenchmark.prototype.runOnce):
        (OfflineAssemblerBenchmark.prototype.validate):
        Benchmark sub class for this test.

        * RexBench/OfflineAssembler/convert_asm_to_js.py: Added.
        (convertFile):
        Converts .asm into .js files compatible to the benchmark.

        * RexBench/OfflineAssembler/generate_expected.js: Added.
        Converts AST output into the expected file format.

        * RexBench/about.html: Added description of this sub-benchmark test.

        * RexBench/cli.js:
        * RexBench/glue.js:
        * RexBench/index.html:
        * RexBench/offline_assembler_benchmark.js: Added.
        Updates to add this sub-benchmark.

2017-08-09  Myles C. Maxfield  <mmaxfield@apple.com>

        font-fallback-font-family.html is failing on perf bots
        https://bugs.webkit.org/show_bug.cgi?id=174989

        Unreviewed.

        * Layout/resources/font-fallback-font-family.html:

2017-08-09  Michael Saboff  <msaboff@apple.com>

        Unreviewed build fix.

        Added missing files.

        * RexBench/Octane2/benchmark.js: Added.
        (Octane2RegExpBenchmark):
        (Octane2RegExpBenchmark.prototype.setup.):
        (Octane2RegExpBenchmark.prototype.setup.Math.random):
        (Octane2RegExpBenchmark.prototype.setup):
        (Octane2RegExpBenchmark.prototype.runOnce):
        (Octane2RegExpBenchmark.prototype.tearDown):
        * RexBench/SunSpider/benchmark.js: Added.
        (RegexDNABenchmark):
        (RegexDNABenchmark.prototype.runOnce):
        (RegexDNABenchmark.prototype.validate):

2017-08-09  Michael Saboff  <msaboff@apple.com>

        Rex Bench doesn't work from the command line
        https://bugs.webkit.org/show_bug.cgi?id=175349

        Reviewed by Saam Barati.

        Fixed cli.js to have the same set of benchmarks and .js files as the web
        page driver.

        Refactored the way benchmarks are run using a new Benchmark base class.  That
        class will run the benchmark as well.  Eliminated the various runBenchmark()
        functions that were used for individual tests.  This refactoring was threaded
        into the web page driver as well.  Changed the iteration counts on many of the
        individual benchmarks.  Also changed the inner loop count for the flight
        planner test.

        Eliminated Octane2/base.js as it isn't needed to run Octane2/RegExp with the 
        new test harness.  Eliminated other dead code in Octane2/regexp.js.

        * RexBench/Basic/benchmark.js:
        (BasicBenchmark):
        (BasicBenchmark.prototype.runIteration): Deleted.
        (runBenchmark): Deleted.
        * RexBench/FlightPlanner/benchmark.js:
        (FlightPlannerBenchmark):
        (FlightPlannerBenchmark.prototype.runOnce):
        (this.performance.performance.now.currentTime): Deleted.
        (else.this.preciseTime.currentTime): Deleted.
        (else.currentTime): Deleted.
        (FlightPlannerBenchmark.prototype.runIteration): Deleted.
        (FlightPlannerBenchmark.prototype.checkResults): Deleted.
        (runBenchmark): Deleted.
        * RexBench/Octane2/base.js: Removed.
        * RexBench/Octane2/regexp.js:
        * RexBench/basic_benchmark.js:
        * RexBench/benchmark.js: Added.
        (this.performance.performance.now.currentTime):
        (else.this.preciseTime.currentTime):
        (else.currentTime):
        (Benchmark):
        (Benchmark.prototype.runIterations):
        (Benchmark.prototype.setup):
        (Benchmark.prototype.runOnce):
        (Benchmark.prototype.validate):
        (Benchmark.prototype.tearDown):
        * RexBench/cli.js:
        * RexBench/flightplan_benchmark.js:
        * RexBench/flightplan_unicode_benchmark.js:
        * RexBench/octane2_benchmark.js:
        * RexBench/stats.js:
        (Stats.prototype.toString.return.span.0.span.span):
        * RexBench/sunspider_benchmark.js:

2017-08-07  Michael Saboff  <msaboff@apple.com>

        Use more accurate Russian keywords for RexBench/FlightPlanner Unicode mode
        https://bugs.webkit.org/show_bug.cgi?id=175298

        Reviewed by Saam Barati.

        With the help of Alexey Proskuryakov updated the Russian keywords.

        * RexBench/FlightPlanner/use_unicode.js:

2017-08-07  Mathias Bynens  <mathias@qiwi.be>

        Speedometer: Update to modern production Ember version
        https://bugs.webkit.org/show_bug.cgi?id=175278

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/emberjs/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/index.html: Made title consistent.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/README.md: Documented build process.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/index.html: Made title consistent.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers/global.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/models/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/router.js: Update to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/routes/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js: Update to latest version
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/styles/app.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/bower.json: Update to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/config/environment.js: Update to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/dist/*: Added generated files per build instructions.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/package-lock.json: Pinned dependencies.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/package.json: Update to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/.jshintrc: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js: Updated to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js: Updated to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/index.html: Updated to latest version.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/integration/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/unit/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/.gitkeep: Added.

2017-08-07  Michael Saboff  <msaboff@apple.com>

        REGRESSION(r220307): Perf bot failure trying to run RexBench tests
        https://bugs.webkit.org/show_bug.cgi?id=175289

        Reviewed by Filip Pizlo.

        Add RexBench to the list of benchmarks we skip on the perf bots.

        * Skipped:

2017-08-04  Michael Saboff  <msaboff@apple.com>

        Create a new JavaScript RegExp benchmark
        https://bugs.webkit.org/show_bug.cgi?id=175225

        Reviewed by JF Bastien.

        This is a new benchmark for Regular Expressions.  It borrows regex-dna from
        SunSpider, the regexp test from Octane2, the BASIC parser from ARES-6/Basic,
        and adds a new flight planner benchmark that uses RegExp's for textual parsing.

        There needs to be some additions and changes to some of the textual content.
        This includes adding more BASIC programs to the Basic test and increasing 
        keyword usage in the Flight Planner to increase the 16-bit coverage.
        
        The intent is to grow this benchmark by adding a JavaScript implementation of the 
        offline assembler lexer and parser as well as adding some targeted micro benchmark
        tests.

        * RexBench: Added.
        * RexBench/Basic: Added.
        * RexBench/Basic/ast.js: Added.
        * RexBench/Basic/basic.js: Added.
        * RexBench/Basic/benchmark.js: Added.
        * RexBench/Basic/caseless_map.js: Added.
        * RexBench/Basic/lexer.js: Added.
        * RexBench/Basic/number.js: Added.
        * RexBench/Basic/parser.js: Added.
        * RexBench/Basic/random.js: Added.
        * RexBench/Basic/state.js: Added.
        * RexBench/Basic/stress-test.js: Added.
        * RexBench/Basic/util.js: Added.
        * RexBench/FlightPlanner: Added.
        * RexBench/FlightPlanner/airways.js: Added.
        * RexBench/FlightPlanner/benchmark.js: Added.
        * RexBench/FlightPlanner/convert-nfdc.py: Added.
        * RexBench/FlightPlanner/expectations.js: Added.
        * RexBench/FlightPlanner/flight_planner.js: Added.
        * RexBench/FlightPlanner/use_unicode.js: Added.
        * RexBench/FlightPlanner/waypoints.js: Added.
        * RexBench/Octane2: Added.
        * RexBench/Octane2/base.js: Added.
        * RexBench/Octane2/regexp.js: Added.
        * RexBench/SunSpider: Added.
        * RexBench/SunSpider/regex-dna.js: Added.
        * RexBench/about.html: Added.
        * RexBench/basic_benchmark.js: Added.
        * RexBench/cli.js: Added.
        * RexBench/driver.js: Added.
        * RexBench/flightplan_benchmark.js: Added.
        * RexBench/flightplan_unicode_benchmark.js: Added.
        * RexBench/glue.js: Added.
        * RexBench/index.html: Added.
        * RexBench/octane2_benchmark.js: Added.
        * RexBench/results.js: Added.
        * RexBench/stats.js: Added.
        * RexBench/styles.css: Added.
        * RexBench/sunspider_benchmark.js: Added.

2017-07-31  Mathias Bynens  <mathias@qiwi.be>

        Speedometer 2.0: Remove <base> from Angular 4 test
        https://bugs.webkit.org/show_bug.cgi?id=175004

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html: Remove <base>.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/index.html: Remove <base>.

2017-07-29  Mathias Bynens  <mathias@chromium.org>

        Speedometer 2.0: Document vanilla/es2015 build process
        https://bugs.webkit.org/show_bug.cgi?id=174894

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/vanilla-examples/es2015/README.md: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/index.html: Made title consistent.

2017-07-27  Mathias Bynens  <mathias@chromium.org>

        Speedometer 2.0: Document Angular 4 build process
        https://bugs.webkit.org/show_bug.cgi?id=174896

        Reviewed by Ryosuke Niwa.

        This patch documents the build process for the Angular 4 example, pins the dependencies (so
        that builds are deterministic), and updates the generated files accordingly.

        * Speedometer/resources/todomvc/architecture-examples/angular/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/*: Update per build instructions.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.e2e-spec.ts: Removed unused file.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.po.ts: Removed unused file.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/tsconfig.e2e.json: Removed unused file.
        * Speedometer/resources/todomvc/architecture-examples/angular/package.json: Remove unneeded scripts.
        * Speedometer/resources/todomvc/architecture-examples/angular/package-lock.json: Added to pin dependencies.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts: Updated.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts: Updated.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/index.html: Made title consistent.

2017-07-25  Mathias Bynens  <mathias@qiwi.be>

        Speedometer 2.0: Document es2015-babel-webpack build process
        https://bugs.webkit.org/show_bug.cgi?id=174252

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md: Added build docs.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/*: Update generated build files.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json: Remove unused items.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package-lock.json: Added lockfile.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/index.html: Make title consistent.

2017-07-18  Matt Kotsenas  <mattkot@microsoft.com>

        Add performance.mark()s around each test step
        https://bugs.webkit.org/show_bug.cgi?id=174530

        Reviewed by Ryosuke Niwa.

        Add `performance.mark()` around each test step to make analysis
        simpler. Now each test step can be investigated via dev tools, ETW, etc.

        * Speedometer/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype._writeMark):
        (BenchmarkRunner.prototype._runTest):
        (BenchmarkRunner.prototype._runTestAndRecordResults):

2017-07-14  Saam Barati  <sbarati@apple.com>

        Fix ambiguous description text in ARES-6 about the data the benchmark measures
        https://bugs.webkit.org/show_bug.cgi?id=174510

        Rubber stamped by Filip Pizlo.

        * ARES-6/about.html:

2017-07-07  Mathias Bynens  <mathias@qiwi.be>

        Speedometer 2.0: Fix vanilla JS example
        https://bugs.webkit.org/show_bug.cgi?id=174246

        Reviewed by Ryosuke Niwa.

        Previously, all TODO items were assigned an ID of `null`. This patch
        fixes that bug. Manually deleting items now works again.

        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/index.html: Made title consistent.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js: Fixed bug with deleting items.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md: Added docs.

2017-07-06  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Improve performance of font lookups
        https://bugs.webkit.org/show_bug.cgi?id=173960
        <rdar://problem/31996891>

        Reviewed by Darin Adler.

        * Layout/font-fallback-font-family.html: Added.
        * Layout/resources/font-fallback-font-family.html: Added.

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * MediaTime/Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * MediaTime/Configurations/DebugRelease.xcconfig:

2017-06-07  Saam Barati  <sbarati@apple.com>

        ARES-6 incorrectly measures Worst 4 Iterations
        https://bugs.webkit.org/show_bug.cgi?id=172960

        Reviewed by Mark Lam.

        Version 1.0 of ARES-6 was accidentally measuring the first
        4 iterations, instead of the worst 4. This patch fixes the
        bug and bumps the version to 1.0.1.

        * ARES-6/glue.js:
        (driver.reportResult):
        * ARES-6/results.js:
        (Results.prototype.reportResult):

2017-06-06  Saam Barati  <sbarati@apple.com>

        Add a version number to ARES-6
        https://bugs.webkit.org/show_bug.cgi?id=172962

        Reviewed by Yusuke Suzuki.

        * ARES-6/glue.js:
        (driver.reportResult):

2017-06-01  Saam Barati  <sbarati@apple.com>

        Ensure a good experience for ARES-6 error reporting
        https://bugs.webkit.org/show_bug.cgi?id=171699

        Reviewed by Filip Pizlo and Jon Davis.

        This patch fixes a bug where we would silently fail running ARES-6. The bug
        was that we were calling reportError with the wrong |this| value.
        I also cleaned up a bit of the code around error reporting. We
        now indicate which test failed, and update the status to reflect
        that a failure happened.
        
        This patch also modifies the CSS a bit to work better on smaller
        screened devices. The CSS prevents the status from having a line
        break both when an error is reported and when we're running the 
        benchmark.

        * ARES-6/driver.js:
        (Driver):
        (Driver.prototype.reportError):
        * ARES-6/results.js:
        (Results.prototype.reportError):
        (Results):
        * ARES-6/styles.css:
        (.start):
        (#status):
        (.failed):
        (#status.failed):
        (.test .failed:before):
        (#magic):
        (@media only screen and (max-width: 784px)):
        (.test):
        (p):
        (@media only screen and (max-width: 320px)):

2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r217118): Speedometer 2.0: Flight.js test is broken
        https://bugs.webkit.org/show_bug.cgi?id=172394

        Reviewed by Chris Dumez.

        Fixed the bug that we were never clearing window.checkLoadedTimeoutId.

        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js:
        (newContext.checkLoaded):

2017-05-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        Add SixSpeed benchmark to PerformanceTests
        https://bugs.webkit.org/show_bug.cgi?id=172326

        Reviewed by Sam Weinig.

        This patch imports SixSpeed benchmark into WebKit tree.
        It is a collection of ES6 microbenchmarks. While the scripts are very tiny,
        it sometimes hits our missing care for optimization. So including it is useful.

        The benchmark is released under MIT license.

        * SixSpeed/LICENSE: Added.
        * SixSpeed/REVISION: Added.
        * SixSpeed/ReadMe.md: Added.
        * SixSpeed/tests/.eslintrc: Added.
        * SixSpeed/tests/arrow-args/arrow-args.es5: Added.
        * SixSpeed/tests/arrow-args/arrow-args.es6: Added.
        * SixSpeed/tests/arrow-declare/arrow-declare.es5: Added.
        * SixSpeed/tests/arrow-declare/arrow-declare.es6: Added.
        * SixSpeed/tests/arrow/arrow.es5: Added.
        * SixSpeed/tests/arrow/arrow.es6: Added.
        * SixSpeed/tests/bindings-compound/bindings-compound.es5: Added.
        * SixSpeed/tests/bindings-compound/bindings-compound.es6: Added.
        * SixSpeed/tests/bindings/bindings.es5: Added.
        * SixSpeed/tests/bindings/bindings.es6: Added.
        * SixSpeed/tests/classes/classes.es5: Added.
        * SixSpeed/tests/classes/classes.es6: Added.
        * SixSpeed/tests/defaults/defaults.es5: Added.
        * SixSpeed/tests/defaults/defaults.es6: Added.
        * SixSpeed/tests/destructuring-simple/destructuring-simple.es5: Added.
        * SixSpeed/tests/destructuring-simple/destructuring-simple.es6: Added.
        * SixSpeed/tests/destructuring/destructuring.es5: Added.
        * SixSpeed/tests/destructuring/destructuring.es6: Added.
        * SixSpeed/tests/for-of-array/for-of-array.es5: Added.
        * SixSpeed/tests/for-of-array/for-of-array.es6: Added.
        * SixSpeed/tests/for-of-object/for-of-object.es5: Added.
        * SixSpeed/tests/for-of-object/for-of-object.es6: Added.
        * SixSpeed/tests/generator/generator.es5: Added.
        * SixSpeed/tests/generator/generator.es6: Added.
        * SixSpeed/tests/map-set-lookup/map-set-lookup.es5: Added.
        * SixSpeed/tests/map-set-lookup/map-set-lookup.es6: Added.
        * SixSpeed/tests/map-set-object/map-set-object.es5: Added.
        * SixSpeed/tests/map-set-object/map-set-object.es6: Added.
        * SixSpeed/tests/map-set/map-set.es5: Added.
        * SixSpeed/tests/map-set/map-set.es6: Added.
        * SixSpeed/tests/map-string/map-string.es5: Added.
        * SixSpeed/tests/map-string/map-string.es6: Added.
        * SixSpeed/tests/new-target/defaults.es5: Added.
        * SixSpeed/tests/new-target/defaults.es6: Added.
        * SixSpeed/tests/object-assign/object-assign.es5: Added.
        * SixSpeed/tests/object-assign/object-assign.es6: Added.
        * SixSpeed/tests/object-literal-ext/object-literal-ext.es5: Added.
        * SixSpeed/tests/object-literal-ext/object-literal-ext.es6: Added.
        * SixSpeed/tests/regex-u/regex-u.es5: Added.
        * SixSpeed/tests/regex-u/regex-u.es6: Added.
        * SixSpeed/tests/rest/rest.es5: Added.
        * SixSpeed/tests/rest/rest.es6: Added.
        * SixSpeed/tests/spread-generator/spread-generator.es5: Added.
        * SixSpeed/tests/spread-generator/spread-generator.es6: Added.
        * SixSpeed/tests/spread-literal/spread-literal.es5: Added.
        * SixSpeed/tests/spread-literal/spread-literal.es6: Added.
        * SixSpeed/tests/spread/spread.es5: Added.
        * SixSpeed/tests/spread/spread.es6: Added.
        * SixSpeed/tests/super/super.es5: Added.
        * SixSpeed/tests/super/super.es6: Added.
        * SixSpeed/tests/template_string/template_string.es5: Added.
        * SixSpeed/tests/template_string/template_string.es6: Added.
        * SixSpeed/tests/template_string_tag/template_string_tag.es5: Added.
        * SixSpeed/tests/template_string_tag/template_string_tag.es6: Added.
        * SixSpeed/wrappers/wrapper.js:
        (test):

2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Angular v1 test only deletes the second item
        https://bugs.webkit.org/show_bug.cgi?id=172353

        Reviewed by Antti Koivisto.

        Like jQuery and Inferno, run querySelector after removing each todo item.

        * Speedometer/InteractiveRunner.html: Tweaked CSS again.
        * Speedometer/resources/tests.js:

2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Elem test isn't updating DOM during the measurement
        https://bugs.webkit.org/show_bug.cgi?id=172343

        Reviewed by Antti Koivisto.

        Elem test wasn't doing much work because it simply enqueues items into the work queue, which doesn't get
        executed until the next requestAnimationFrame or setTimeout callback happens.

        Expose elm's work function as contentWindow.elemWork and make the first use of rAF a synchronous callback
        just as it would when requestAnimationFrame isn't defined, and make the second use of rAF queue up to
        an array of callbacks, and have the test runner manually invoke each callback.

        This increases the runtime of the Elm suite from 100ms to 300ms on Safari.

        * Speedometer/resources/tests.js:
        (processElmWorkQueue): Added. A helper which processes Elm's work queue and manually invokes render callbacks.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/dist/elm.js:

2017-05-18  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Flight.js test is sometime broken
        https://bugs.webkit.org/show_bug.cgi?id=172347

        Reviewed by Antti Koivisto.

        The bug was caused by the test runner only waiting for #new-todo, which happens before all other states are
        updated in the Flight.js dependency example. As done in Speedometer v1, insert a dummy element with id set
        to appIsReady and wait for this element to appear in the benchmark harness.

        * Speedometer/resources/tests.js: Wait for #appIsReady.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js: Removed the superflous call
        to console.log.
        (checkReady): Added. Insert #appIsReady if checkLoaded is no longer running at 50ms interval. Because this
        could happen asynchronously, we check the absense of checkLoadedTimeoutId Ωevery 10ms for 5 times for
        the total duration of 50ms. If checkLoadedTimeoutId was never present, we call it ready. If we ever observed
        the presence of checkLoadedTimeoutId, wait another 50ms and start over.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js:
        (.newContext.checkLoaded): Expose checkLoadedTimeoutId which is a timer ID used to check the dependency.

2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: jQuery and Inferno tests don't delete all ToDo items
        https://bugs.webkit.org/show_bug.cgi?id=172341

        Reviewed by Antti Koivisto.

        The bug was caused by the fact TodoMVC examples for jQuery and Inferno JS create a new button
        to delete the todo item each time todo items are rendered.

        Fixed the bug by dynamically look for .destroy using querySelector for each item.

        Also moved the deletion of the iframe from the end of each test suite to the beginning of each suite.
        This will make debugging the issue like this easier on InteractiveRunner.html since the iframe
        will stick around after stepping the last item in the suite.

        * Speedometer/InteractiveRunner.html: Tweaked the CSS to make buttons to "Step" and "Run" always visible
        even if the list of suites and subtests are too long to fit in the viewport.

        * Speedometer/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype.step):
        (BenchmarkRunner.prototype._runTestAndRecordResults):

        * Speedometer/resources/tests.js: Fixed the bug for jQuery and Inferno. In the case of jQuery
        we also have to fix the code for checking every ToDo item as completed as well.

2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>

        Speedometer 2.0: Vanilla JS test doesn't mark all todo items as completed
        https://bugs.webkit.org/show_bug.cgi?id=172348

        Reviewed by Antti Koivisto.

        The bug was caused by the in-memory store class using the milisecond precision timestamp as an ID.
        Because we inserts 50 items all at once, this can result in multiple data items sharing a single ID.

        Fixed the bug by using a mononotically increasing ID instead.

        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js:
        (Store.prototype.save):

2017-05-18  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION (r216694 - 216712): Performance test Speedometer/Full.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=172077

        Reviewed by Chris Dumez.

        Rename Full.html to index.html to match the convention of other benchmarks.

        * Speedometer/index.html: Renamed from PerformanceTests/Speedometer/Full.html.

2017-05-18  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: check-in missing React TodoMVC dependency
        https://bugs.webkit.org/show_bug.cgi?id=172213

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/todomvc/architecture-examples/react/index.html: fix director.min.js path.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/director.min.js: Added.

2017-05-17  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: adjust Ember TodoMVC to use full path
        https://bugs.webkit.org/show_bug.cgi?id=172211

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/tests.js: use full path to Ember TodoMVC app.

2017-05-16  Addy Osmani  <addyosmani@gmail.com>

        Update to Speedometer 2.0 w/updated frameworks + new workloads
        https://bugs.webkit.org/show_bug.cgi?id=170513

        Reviewed by Ryosuke Niwa.

        Refresh test runner and fix apps to work with it.

        * Speedometer/InteractiveRunner.html:
        (parseQueryString): Adds support for startAutomatically query parameter.
        * Speedometer/resources/tests.js:
        (triggerEnter): Refactor event triggering behavior for tests.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html:
        (CSS): Drop reference to extraneous stylesheet in Angular TodoMVC.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js:
        * Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:
        (base): Enable Ember TodoMVC to be run from any directory/level.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js:
        (localStorageMemory): Correct import path and switch to window.localStorageMemory to fix Ember failures.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js:
        * Speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html:
        * Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/LICENSE: Added.
        (LICENSE): Add missing metadata and LICENSE files as part of director.js package for jQuery TodoMVC
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/bower.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.js: Add missing 
        director.js dependency for jQuery TodoMVC implementation.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/ender.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/package.json: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/index.html: Fix path to built Elm TodoMVC scripts.

2017-05-12  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add a React.js TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171444

        Reviewed by Ryosuke Niwa.

        Adds a more recent React.js TodoMVC implemenation to Speedometer

        * Speedometer/resources/todomvc/architecture-examples/react/build.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/js/app.jsx: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/license.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/LICENSE: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bind.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bower.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/dedupe.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/LICENSE: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/bower.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/director/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/LICENSE: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/dist/react-dom-server.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/dist/react-dom.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/LICENSE: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react-with-addons.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react.min.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/react/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/npm-shrinkwrap.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react/yarn.lock: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the Ember.js TodoMVC to a more recent version
        https://bugs.webkit.org/show_bug.cgi?id=171342

        Reviewed by Ryosuke Niwa.

        Update the Ember TodoMVC app in Speedometer to latest

        * Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/assets/vendor.css: Renamed from PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/assets/vendor.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower.json: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/crossdomain.xml: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/app.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/models/todo.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/router.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/readme.md: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/robots.txt: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.bowerrc: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.editorconfig: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.ember-cli: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.gitignore: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.jshintrc: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.travis.yml: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/.watchmanconfig: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/app.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-item.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-list.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/active.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/application.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/controllers/completed.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/helpers/gt.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/helpers/pluralize.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers/global.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/models/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/resolver.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/router.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/routes/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/routes/application.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/styles/app.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/active.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/application.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/completed.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-item.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-list.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/templates/index.hbs: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/bower.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/config/environment.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/ember-cli-build.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/public/crossdomain.xml: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/public/robots.txt: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/testem.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/.jshintrc: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/destroy-app.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/resolver.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/integration/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/test-helper.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/tests/unit/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/source/vendor/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/test.html: Removed.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/testem.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add a React + Redux TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171329

        Reviewed by Ryosuke Niwa.

        Adds React and Redux TodoMVC implementation for Speedometer

        * Speedometer/resources/todomvc/architecture-examples/react-redux/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.d43d2909.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.946269ff.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/public/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/ActionTypes.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/TodoFilters.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/containers/App.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/react-redux/yarn.lock: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add an ES2015 (Babel + Webpack) TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171452

        Reviewed by Ryosuke Niwa.

        Adds ES2015 Babel + Webpack TodoMVC implem

        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.babelrc: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.eslintignore: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css.map: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/bootstrap.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.test.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/helpers.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/index.html: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/memory.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/model.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/template.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/todo.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/view.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/webpack.config.babel.js: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add an Inferno TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171411

        Reviewed by Ryosuke Niwa.

        Adds a Inferno implem of TodoMVC to Speedometer

        * Speedometer/resources/todomvc/architecture-examples/inferno/dist/bundle.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/src/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/src/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/src/item.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/src/model.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/src/share.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/inferno/webpack.config.js: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add an Angular 2 (4.x) TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171343

        Reviewed by Ryosuke Niwa.

        Add a TodoMVC Angular 2 (4.x) implem for the benchmark

        * Speedometer/resources/todomvc/architecture-examples/angular/.angular-cli.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/.editorconfig: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-common.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/favicon.ico: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/inline.b342d102ba4a53bf2002.bundle.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/main.779eb2f1ddbe23ac61c7.bundle.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/polyfills.2d45a4c73c85e24fe474.bundle.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/dist/vendor.b4be818cb6d8028f9192.bundle.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.e2e-spec.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/app.po.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/e2e/tsconfig.e2e.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/karma.conf.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/protractor.conf.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.spec.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.module.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.spec.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/assets/.gitkeep: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-common.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.prod.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/favicon.ico: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/main.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/polyfills.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/styles.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/test.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.app.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.spec.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/src/typings.d.ts: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/tsconfig.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angular/tslint.json: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add a Vue.js TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171325

        Reviewed by Ryosuke Niwa.

        Adds a Vue.js TodoMVC implementation to Speedometer

        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.babelrc: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.editorconfig: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintignore: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintrc.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/dev.env.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/prod.env.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.677b45842d9f8b96e5b23c18969233b7.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.b0e835874bc8949670d1.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.84b2b4fceb74ab1f91f3.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.a52517c5aa98e7fbea2e.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/App.vue: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/Todos.vue: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/todo.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/main.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/yarn.lock: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the vanilla JavaScript TodoMVC implem to a more recent version
        https://bugs.webkit.org/show_bug.cgi?id=171306

        Reviewed by Ryosuke Niwa.

        Update vanilla JS TodoMVC implementation to the latest.

        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower.json: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/index.html:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/app.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/controller.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/helpers.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/model.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/template.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/js/view.js:
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/package.json: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add an ES2015 TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171448

        Reviewed by Ryosuke Niwa.

        Adds ES2015 TodoMVC implementation for Speedometer

        * Speedometer/resources/todomvc/vanilla-examples/es2015/index.html: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/package.json: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/readme.md: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/package.json: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/readme.md: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/package.json: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/.jshintrc: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/app.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/controller.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/helpers.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/model.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/template.js: Added.
        * Speedometer/resources/todomvc/vanilla-examples/es2015/src/view.js: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add an Elm TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171464

        Reviewed by Ryosuke Niwa.

        Speedometer: Add Elm TodoMVC implementation

        * Speedometer/resources/todomvc/functional-prog-examples/elm/Todo.elm: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/Todo/Task.elm: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/dist/elm.js: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/index.html: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/package.json: Added.
        * Speedometer/resources/todomvc/functional-prog-examples/elm/readme.md: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the Backbone.js implementation to a more recent library version
        https://bugs.webkit.org/show_bug.cgi?id=171305

        Reviewed by Ryosuke Niwa.

        Updates the Backbone.js TodoMVC implementation to latest

        * Speedometer/resources/todomvc/architecture-examples/backbone/bower.json: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/backbone/index.html:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/app.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/backbone.sync.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/collections/todos.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/models/todo.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/routers/router.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/views/app-view.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/js/views/todo-view.js:
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/backbone/package.json: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Add a Preact.js TodoMVC implementation
        https://bugs.webkit.org/show_bug.cgi?id=171323

        Reviewed by Ryosuke Niwa.

        Adds Preact.js TodoMVC implementation to Speedometer

        * Speedometer/resources/todomvc/architecture-examples/preact/.babelrc: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/README.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/dist/app.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/dist/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/rollup.config.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/footer.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/item.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/model.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/app/util.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/index.html: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/src/index.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/preact/webpack.config.babel.js: Added.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the jQuery implementation to a more recent library version
        https://bugs.webkit.org/show_bug.cgi?id=171308

        Reviewed by Ryosuke Niwa.

        Updates the jQuery implementation of TodoMVC to a more recent version

        * Speedometer/resources/todomvc/architecture-examples/jquery/bower.json: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
        * Speedometer/resources/todomvc/architecture-examples/jquery/js/app.js:
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/handlebars/dist/handlebars.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/jquery/dist/jquery.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/jquery/readme.md:

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the Flight.js implementation to a more recent library version
        https://bugs.webkit.org/show_bug.cgi?id=171471

        Reviewed by Ryosuke Niwa.

        Speedometer: Update FlightJS TodoMVC implementation

        * Speedometer/resources/todomvc/dependency-examples/flight/.gitignore: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/.jshintrc: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/app/js/main.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/app/js/store.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower.json: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/stats.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/todos.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/data/todos.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/page/app.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/app.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/store.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/main_selector.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/new_item.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/stats.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/todo_list.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/toggle_all.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/with_filters.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/js/utils.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/stats.html.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/todo.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/app/templates/todo.html.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/index.html: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/index.html.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/README.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.min.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/LICENSE: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.min.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.min.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/LICENSE: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/index.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/advice.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/component.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/compose.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/debug.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/logger.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/registry.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/utils.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/README.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.min.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/memorystorage/memorystorage.js: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/LICENSE: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/README.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/bower.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/text.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/README.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/readme.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.js: Renamed from PerformanceTests/Speedometer/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/readme.md: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/flight/package.json: Added.
        * Speedometer/resources/todomvc/dependency-examples/flight/karma.conf.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/package.json: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/readme.md: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/.jshintrc: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Removed.
        * Speedometer/resources/todomvc/dependency-examples/flight/test/test-main.js: Removed.

2017-05-11  Addy Osmani  <addyosmani@gmail.com>

        Speedometer: Update the AngularJS implementation to a more recent library version
        https://bugs.webkit.org/show_bug.cgi?id=171307

        Reviewed by Ryosuke Niwa.

        Updates the AngularJS implementation of TodoMVC to 1.4.x

        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower.json: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/index.html:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/package.json: Added.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
        * Speedometer/resources/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/test/package.json: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
        * Speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html: Added.

2017-05-09  Jon Davis  <jond@apple.com>

        [ARES6] Improved the running test indicator
        https://bugs.webkit.org/show_bug.cgi?id=171400
        
        Running tests show a triangle before the test title and the titles are white.

        Reviewed by Joseph Pecoraro.

        * ARES-6/index.html:
        * ARES-6/styles.css:
        (.test .running):
        (.test .running:before):
        (.test .indicator): Deleted.
        (.test .indicator.running): Deleted.
        (@keyframes test-running): Deleted.

2017-05-04  Andy VanWagoner  <thetalecrafter@gmail.com>

        [INTL] Add PerformanceTests for Intl objects
        https://bugs.webkit.org/show_bug.cgi?id=171695

        Reviewed by Benjamin Poulain.

        * Intl/collator-compare-all-options.html: Added.
        * Intl/collator-compare-default.html: Added.
        * Intl/collator-create-all-options.html: Added.
        * Intl/collator-create-default.html: Added.
        * Intl/datetimeformat-create-all-options.html: Added.
        * Intl/datetimeformat-create-default.html: Added.
        * Intl/datetimeformat-format-all-options.html: Added.
        * Intl/datetimeformat-format-default.html: Added.
        * Intl/numberformat-create-all-options.html: Added.
        * Intl/numberformat-create-default.html: Added.
        * Intl/numberformat-format-all-options.html: Added.
        * Intl/numberformat-format-default.html: Added.

2017-04-27  Michael Saboff  <msaboff@apple.com>

        Add back tests inadvertently deleted in r205032.

        Rubber stamped by Geoffrey Garen.

        * MallocBench/run-malloc-benchmarks:

2017-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        Add performance test for FontCache::systemFallbackForCharacters()
        https://bugs.webkit.org/show_bug.cgi?id=170842

        Reviewed by Tim Horton.

        * Layout/word-joiner.html: Added.

2017-04-24  Saam Barati  <sbarati@apple.com>

        Add ML to ARES6
        https://bugs.webkit.org/show_bug.cgi?id=171206

        Rubber stamped by Filip Pizlo.

        This patch adds a new test to ARES6 called ML. ML is an implementation of
        a feedforward neural network: https://github.com/mljs/feedforward-neural-networks.
        It makes heavy use of classes, and does non-trivial matrix math using the
        ml-matrix library: https://github.com/mljs/matrix

        * ARES-6/about.html:
        * ARES-6/cli.js:
        * ARES-6/glue.js:
        * ARES-6/index.html:
        * ARES-6/ml: Added.
        * ARES-6/ml/benchmark.js: Added.
        * ARES-6/ml/index.js: Added.
        * ARES-6/ml_benchmark.js: Added.

2017-04-21  Zalan Bujtas  <zalan@apple.com>

        Simple line layout: Add performance test to measure mid-word line breaking with long text.
        https://bugs.webkit.org/show_bug.cgi?id=171136

        Reviewed by Ryosuke Niwa.

        * Layout/simple-line-layout-word-break-long-text.html: Added.

2017-04-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215366.

        This test is failing on performance bots.

        Reverted changeset:

        "Add performance test for asking the platform for a font for
        U+2060 WORD JOINER"
        https://bugs.webkit.org/show_bug.cgi?id=170842
        http://trac.webkit.org/changeset/215366

2017-04-14  Myles C. Maxfield  <mmaxfield@apple.com>

        Add performance test for asking the platform for a font for U+2060 WORD JOINER
        https://bugs.webkit.org/show_bug.cgi?id=170842

        Reviewed by Tim Horton.

        * Layout/word-joiner.html: Added.

2017-04-03  Saam Barati  <sbarati@apple.com>

        Add a new test to ARES6
        https://bugs.webkit.org/show_bug.cgi?id=170077

        Rubber stamped by Filip Pizlo.

        This patch adds a new test to ARES6. The test is called Babylon. Babylon is
        the JavaScript parser that is part of the Babel transpiler. The test runs
        the parser on 4 different JS scripts.

        * ARES-6/Babylon: Added.
        * ARES-6/Babylon/AUTHORS: Added.
        * ARES-6/Babylon/air-blob.js: Added.
        (Reg):
        (Reg.fromReg):
        (Reg.prototype.get index):
        (Reg.prototype.get type):
        (Reg.prototype.get name):
        (Reg.prototype.get isCalleeSave):
        (Reg.prototype.get isReg):
        (Reg.prototype.hash):
        (Reg.prototype.toString):
        (Reg.extract):
        (Reg.forEachFast):
        (Reg.forEach):
        (newGPR):
        (Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
        * ARES-6/Babylon/babylon-blob.js: Added.
        (export.default.Parser):
        (export.default.Parser.prototype.isReservedWord):
        (export.default.Parser.prototype.hasPlugin):
        (export.default.Parser.prototype.extend):
        (export.default.Parser.prototype.loadPlugins):
        (export.default.Parser.prototype.parse):
        * ARES-6/Babylon/basic-blob.js: Added.
        (Basic.NumberApply):
        (Basic.Variable):
        (Basic.Const):
        (Basic.NumberPow):
        (Basic.NumberMul):
        (Basic.NumberDiv):
        (Basic.NumberNeg):
        (Basic.NumberAdd):
        (Basic.NumberSub):
        (Basic.StringVar):
        (Basic.Equals):
        (Basic.NotEquals):
        (Basic.LessThan):
        (Basic.GreaterThan):
        (Basic.LessEqual):
        (Basic.GreaterEqual):
        (Basic.GoTo):
        (Basic.GoSub):
        (Basic.Def):
        (Basic.Let):
        (Basic.If):
        (Basic.Return):
        (Basic.Stop):
        (Basic.On):
        (sideState.shouldStop):
        (Basic.For):
        (Basic.Next):
        (Basic.Print):
        (Basic.Input):
        (Basic.Read):
        (Basic.Restore):
        (Basic.Dim):
        (Basic.Randomize):
        (Basic.End):
        (Basic.Program):
        * ARES-6/Babylon/benchmark.js: Added.
        (this.performance.performance.now.currentTime):
        (else.this.preciseTime.currentTime):
        (else.currentTime):
        (BabylonBenchmark.appendSource):
        (BabylonBenchmark):
        (BabylonBenchmark.prototype.runIteration.parse):
        (BabylonBenchmark.prototype.runIteration.parseExpression):
        (BabylonBenchmark.prototype.runIteration):
        (runBenchmark):
        * ARES-6/Babylon/index.js: Added.
        (isIdentifierStart):
        (isIdentifierChar):
        (isNewLine):
        (Position):
        (SourceLocation):
        (getLineInfo):
        (TokenType):
        (KeywordTokenType):
        (BinopTokenType):
        (TokContext):
        (tt.parenR.updateContext.tt.braceR.updateContext):
        (tt.name.updateContext):
        (tt.braceL.updateContext):
        (tt.dollarBraceL.updateContext):
        (tt.parenL.updateContext):
        (tt.incDec.updateContext):
        (tt._function.updateContext):
        (tt.backQuote.updateContext):
        (State.prototype.init):
        (State.prototype.curPosition):
        (State.prototype.clone):
        (State):
        (Token):
        (codePointToString):
        (Tokenizer):
        (Tokenizer.prototype.next):
        (Tokenizer.prototype.eat):
        (Tokenizer.prototype.match):
        (Tokenizer.prototype.isKeyword):
        (Tokenizer.prototype.lookahead):
        (Tokenizer.prototype.setStrict):
        (Tokenizer.prototype.curContext):
        (Tokenizer.prototype.nextToken):
        (Tokenizer.prototype.readToken):
        (Tokenizer.prototype.fullCharCodeAtPos):
        (Tokenizer.prototype.pushComment):
        (Tokenizer.prototype.skipBlockComment):
        (Tokenizer.prototype.skipLineComment):
        (Tokenizer.prototype.skipSpace):
        (Tokenizer.prototype.finishToken):
        (Tokenizer.prototype.readToken_dot):
        (Tokenizer.prototype.readToken_slash):
        (Tokenizer.prototype.readToken_mult_modulo):
        (Tokenizer.prototype.readToken_pipe_amp):
        (Tokenizer.prototype.readToken_caret):
        (Tokenizer.prototype.readToken_plus_min):
        (Tokenizer.prototype.readToken_lt_gt):
        (Tokenizer.prototype.readToken_eq_excl):
        (Tokenizer.prototype.getTokenFromCode):
        (Tokenizer.prototype.finishOp):
        (Tokenizer.prototype.readRegexp):
        (Tokenizer.prototype.readInt):
        (Tokenizer.prototype.readRadixNumber):
        (Tokenizer.prototype.readNumber):
        (Tokenizer.prototype.readCodePoint):
        (Tokenizer.prototype.readString):
        (Tokenizer.prototype.readTmplToken):
        (Tokenizer.prototype.readEscapedChar):
        (Tokenizer.prototype.readHexChar):
        (Tokenizer.prototype.readWord1):
        (Tokenizer.prototype.readWord):
        (Tokenizer.prototype.braceIsBlock):
        (Tokenizer.prototype.updateContext):
        (getOptions):
        (prototype.isReservedWord):
        (prototype.hasPlugin):
        (prototype.extend):
        (prototype.loadPlugins):
        (prototype.parse):
        (last):
        (pp.addComment):
        (pp.processComment):
        (pp.checkPropClash):
        (pp.getExpression):
        (pp.parseExpression):
        (pp.parseMaybeAssign):
        (pos.set i):
        * ARES-6/Babylon/inspector-blob.js: Added.
        (WebInspector.ScriptSyntaxTree):
        (WebInspector.ScriptSyntaxTree.prototype.get parsedSuccessfully):
        (WebInspector.ScriptSyntaxTree.prototype.forEachNode):
        (WebInspector.ScriptSyntaxTree.prototype.filter):
        (WebInspector.ScriptSyntaxTree.prototype.containersOfOffset):
        (WebInspector.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange):
        (WebInspector.ScriptSyntaxTree.prototype.filterByRange):
        (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement.removeFunctionsFilter):
        (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
        (WebInspector.ScriptSyntaxTree.functionReturnDivot):
        (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
        (WebInspector.ScriptSyntaxTree.prototype._defaultParserState):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._recurseArray):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        * ARES-6/about.html:
        * ARES-6/babylon_benchmark.js: Added.
        * ARES-6/cli.js:
        * ARES-6/glue.js:
        * ARES-6/index.html:
        * ARES-6/results.js:
        (Results.prototype.reportResult):
        (Results.prototype.reportResult.averageAbovePercentile): Deleted.
        * ARES-6/styles.css:
        (.test):
        (@media only screen and (max-width: 784px)):

2017-03-29  Zalan Bujtas <zalan@apple.com>

        [Arabic text] Add whitespace preserve/word wrap performance test.
        https://bugs.webkit.org/show_bug.cgi?id=170243

        Reviewed by Simon Fraser.

        * Layout/ArabicLineLayout-pre-and-wrap.html: Added.

2017-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Add helpers to run Six Speed to run-jsc-benchmarks
        https://bugs.webkit.org/show_bug.cgi?id=169351

        Reviewed by Saam Barati.

        * SixSpeed/wrappers/wrapper.js: Added.
        (assertEqual):
        (test):
        (jscRun):

2017-03-08  Jon Davis  <jond@apple.com>

        Fixed ARES-6 animations for other browsers

        Rubber stamped by Saam Barati.

        * ARES-6/styles.css:
        (.swoop):
        (.logo):

2017-03-07  Filip Pizlo  <fpizlo@apple.com>

        Revise the ARES-6 explainer text
        https://bugs.webkit.org/show_bug.cgi?id=169287

        Reviewed by Saam Barati.
        
        Just did some copy-editing.

        * ARES-6/about.html:

2017-03-06  Jon Davis  <jond@apple.com>

        Refined the ARES-6 experience
        https://bugs.webkit.org/show_bug.cgi?id=169205

        Reviewed by Saam Barati.

        * ARES-6/about.html: Copied from PerformanceTests/ARES-6/index.html.
        * ARES-6/driver.js:
        (Driver.prototype.start):
        (Driver.prototype._updateIterations):
        (Driver):
        * ARES-6/index.html:
        * ARES-6/stats.js:
        (Stats.prototype.toString.span.span):
        * ARES-6/styles.css:
        (body):
        (.swoop):
        (p):
        (.logo):
        (.start):
        (.test):
        (.test:nth-child(odd)):
        (.overall):
        (.about h2):
        (.button):
        (.button:hover):
        (.button.return:before):
        (@keyframes fade-in):
        (@keyframes scale-in):
        (@keyframes flicker-in):
        (@keyframes wipe-in):
        (.flip): Deleted.
        (.testing, .about): Deleted.
        (.testing): Deleted.
        (.about): Deleted.
        (#about:target): Deleted.

2017-03-06  Jeremy Jones  <jeremyj@apple.com>

        StandardCanPlayThrough.html does not work on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=169207

        Reviewed by Jer Noble.

        On iOS only, add muted=true and autoplay=allowed. The loading policy on iOS requires these attributes to load enough
        data to trigger canPlayThrough.

        * Media/StandardCanPlayThrough.html:

2017-02-13  Zalan Bujtas <zalan@apple.com>

        Simple line layout: Add performance test with text-rendering: optimizeSpeed
        https://bugs.webkit.org/show_bug.cgi?id=168248

        Reviewed by Simon Fraser.

        * Layout/simple-line-layout-with-varying-content-and-optimized-speed.html: Added.

2017-02-10  Zalan Bujtas  <zalan@apple.com>

        Mail hangs when removing multiple rows from large table.
        https://bugs.webkit.org/show_bug.cgi?id=168103
        <rdar://problem/30090186>

        Reviewed by Ryosuke Niwa.

        * DOM/large-table-edit.html: Added.

2017-02-05  Filip Pizlo  <fpizlo@apple.com>

        Beef up the ARES-6 explainer text
        https://bugs.webkit.org/show_bug.cgi?id=167867

        Reviewed by Saam Barati.
        
        Added appropriate links.

        Added text that explains the subscores.

        * ARES-6/index.html:

2017-02-06  Jer Noble  <jer.noble@apple.com>

        Playback stalls when a SourceBuffer append causes frame eviction
        https://bugs.webkit.org/show_bug.cgi?id=167834

        Reviewed by Eric Carlson.

        Add an in-page performance test measuring the amount of time required
        to append a large amount of media data to a SourceBuffer, and then to
        completely remove that data 30s at a time.

        Add a microbenchmark for MediaTime which measures the amount of time
        required to create a 1M entry std::map and traverse the map 1M times.

        * Media/MSERemoveCodedFrames.html: Added.
        * Media/media-source-loader.js:
        (MediaSourceLoader.prototype.get duration):
        * MediaTime/Configurations/Base.xcconfig: Added.
        * MediaTime/Configurations/DebugRelease.xcconfig: Added.
        * MediaTime/Makefile: Added.
        * MediaTime/MediaTime.xcodeproj/project.pbxproj: Added.
        * MediaTime/main.cpp: Added.
        (performTest):
        (test):
        (main):
        * Skipped:

2017-02-06  Saam Barati  <sbarati@apple.com>

        Make ARES-6 work from the CLI again
        https://bugs.webkit.org/show_bug.cgi?id=167895

        Reviewed by Michael Saboff.

        * ARES-6/driver.js:
        (Driver.prototype.readyTrigger):
        (Driver.prototype.disableTrigger):
        * ARES-6/stats.js:
        (Stats.prototype.toString.span.span):
        (Stats.prototype.toString.return.span):
        (Stats.prototype.toString):

2017-02-06  Ryan Haddad  <ryanhaddad@apple.com>

        Skip ARES-6 on performance bots
        https://bugs.webkit.org/show_bug.cgi?id=167863

        Unreviewed test gardening.

        ES6SampleBench was renamed to ARES-6, so this should be updated in PerformanceTests/Skipped as well.

        * Skipped:

2017-02-05  Filip Pizlo  <fpizlo@apple.com>

        Change ES6SampleBench into ARES-6
        https://bugs.webkit.org/show_bug.cgi?id=167863

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

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

2017-02-05  Zalan Bujtas  <zalan@apple.com>

        Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
        https://bugs.webkit.org/show_bug.cgi?id=167859
        <rdar://problem/30368070>

        Reviewed by Antti Koivisto.

        This is in preparation for webkit.org/b/167843.

        * Layout/simple-line-layout-with-varying-content.html: Added.

2017-01-16  Filip Pizlo  <fpizlo@apple.com>

        Add framerate baselines to the splay-detail test
        https://bugs.webkit.org/show_bug.cgi?id=167659

        Reviewed by Geoffrey Garen.

        * JetStream/Octane2/splay-detail.html:

2017-01-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [EFL][GTK] Skip some IndexedDB tests that time out on the Perf bots.

        Unreviewed performance test gardening.

        * Skipped:

2017-01-30  Zalan Bujtas  <zalan@apple.com>

        Simple line layout: Small tweaks to improve performance.
        https://bugs.webkit.org/show_bug.cgi?id=167611
        <rdar://problem/30274294>

        Reviewed by Simon Fraser.

        * Layout/simple-line-layout-non-repeating-text.html: Added.

2017-01-13  Said Abou-Hallawa  <sabouhallawa@apple.com>

        26 MotionMark performance tests failing
        https://bugs.webkit.org/show_bug.cgi?id=166854

        Reviewed by Ryosuke Niwa.
        
        Skip running MotionMark on WebKit perf bots.

        * Skipped:

2017-01-06  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Rename the directory and the files of MotionMark from Animometer to MotionMark
        https://bugs.webkit.org/show_bug.cgi?id=166659

        Reviewed by Jon Lee.
        
        Rename the directory and the files of the benchmark to its new name.

        * MotionMark/developer.html: Renamed from PerformanceTests/Animometer/developer.html.
        * MotionMark/index.html: Renamed from PerformanceTests/Animometer/index.html.
        * MotionMark/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/d3.min.js.
        * MotionMark/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/graph.js.
        * MotionMark/resources/debug-runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.css.
        * MotionMark/resources/debug-runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/animometer.js.
        * MotionMark/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/tests.js.
        * MotionMark/resources/extensions.js: Renamed from PerformanceTests/Animometer/resources/extensions.js.
        * MotionMark/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/runner/benchmark-runner.js.
        * MotionMark/resources/runner/crystal.svg: Renamed from PerformanceTests/Animometer/resources/runner/crystal.svg.
        * MotionMark/resources/runner/lines.svg: Renamed from PerformanceTests/Animometer/resources/runner/lines.svg.
        * MotionMark/resources/runner/logo.svg: Renamed from PerformanceTests/Animometer/resources/runner/logo.svg.
        * MotionMark/resources/runner/motionmark.css: Renamed from PerformanceTests/Animometer/resources/runner/animometer.css.
        * MotionMark/resources/runner/motionmark.js: Renamed from PerformanceTests/Animometer/resources/runner/animometer.js.
        * MotionMark/resources/runner/tests.js: Renamed from PerformanceTests/Animometer/resources/runner/tests.js.
        * MotionMark/resources/statistics.js: Renamed from PerformanceTests/Animometer/resources/statistics.js.
        * MotionMark/resources/strings.js: Renamed from PerformanceTests/Animometer/resources/strings.js.
        * MotionMark/tests/3d/resources/webgl.js: Renamed from PerformanceTests/Animometer/tests/3d/resources/webgl.js.
        * MotionMark/tests/3d/webgl.html: Renamed from PerformanceTests/Animometer/tests/3d/webgl.html.
        * MotionMark/tests/bouncing-particles/bouncing-canvas-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-images.html.
        * MotionMark/tests/bouncing-particles/bouncing-canvas-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html.
        * MotionMark/tests/bouncing-particles/bouncing-css-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-images.html.
        * MotionMark/tests/bouncing-particles/bouncing-css-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-css-shapes.html.
        * MotionMark/tests/bouncing-particles/bouncing-svg-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-images.html.
        * MotionMark/tests/bouncing-particles/bouncing-svg-shapes.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-svg-shapes.html.
        * MotionMark/tests/bouncing-particles/bouncing-tagged-images.html: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/bouncing-tagged-images.html.
        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-css-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-css-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-particles.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js.
        * MotionMark/tests/bouncing-particles/resources/bouncing-tagged-images.js: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js.
        * MotionMark/tests/bouncing-particles/resources/image1.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image1.jpg.
        * MotionMark/tests/bouncing-particles/resources/image2.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image2.jpg.
        * MotionMark/tests/bouncing-particles/resources/image3.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image3.jpg.
        * MotionMark/tests/bouncing-particles/resources/image4.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image4.jpg.
        * MotionMark/tests/bouncing-particles/resources/image5.jpg: Renamed from PerformanceTests/Animometer/tests/bouncing-particles/resources/image5.jpg.
        * MotionMark/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/dom/compositing-transforms.html.
        * MotionMark/tests/dom/focus.html: Renamed from PerformanceTests/Animometer/tests/dom/focus.html.
        * MotionMark/tests/dom/leaves.html: Renamed from PerformanceTests/Animometer/tests/dom/leaves.html.
        * MotionMark/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/dom/particles.html.
        * MotionMark/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/compositing-transforms.js.
        * MotionMark/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/dom-particles.js.
        * MotionMark/tests/dom/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/focus.js.
        * MotionMark/tests/dom/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/dom/resources/leaves.js.
        * MotionMark/tests/master/canvas-stage.html: Renamed from PerformanceTests/Animometer/tests/master/canvas-stage.html.
        * MotionMark/tests/master/focus.html: Renamed from PerformanceTests/Animometer/tests/master/focus.html.
        * MotionMark/tests/master/image-data.html: Renamed from PerformanceTests/Animometer/tests/master/image-data.html.
        * MotionMark/tests/master/leaves.html: Renamed from PerformanceTests/Animometer/tests/master/leaves.html.
        * MotionMark/tests/master/multiply.html: Renamed from PerformanceTests/Animometer/tests/master/multiply.html.
        * MotionMark/tests/master/resources/canvas-stage.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-stage.js.
        * MotionMark/tests/master/resources/canvas-tests.js: Renamed from PerformanceTests/Animometer/tests/master/resources/canvas-tests.js.
        * MotionMark/tests/master/resources/compass.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/compass.svg.
        * MotionMark/tests/master/resources/compass100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/compass100.png.
        * MotionMark/tests/master/resources/console.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/console.svg.
        * MotionMark/tests/master/resources/console100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/console100.png.
        * MotionMark/tests/master/resources/contribute.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute.svg.
        * MotionMark/tests/master/resources/contribute100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/contribute100.png.
        * MotionMark/tests/master/resources/debugger.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger.svg.
        * MotionMark/tests/master/resources/debugger100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/debugger100.png.
        * MotionMark/tests/master/resources/focus.js: Renamed from PerformanceTests/Animometer/tests/master/resources/focus.js.
        * MotionMark/tests/master/resources/image-data.js: Renamed from PerformanceTests/Animometer/tests/master/resources/image-data.js.
        * MotionMark/tests/master/resources/inspector.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector.svg.
        * MotionMark/tests/master/resources/inspector100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/inspector100.png.
        * MotionMark/tests/master/resources/layout.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/layout.svg.
        * MotionMark/tests/master/resources/layout100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/layout100.png.
        * MotionMark/tests/master/resources/leaves.js: Renamed from PerformanceTests/Animometer/tests/master/resources/leaves.js.
        * MotionMark/tests/master/resources/multiply.js: Renamed from PerformanceTests/Animometer/tests/master/resources/multiply.js.
        * MotionMark/tests/master/resources/particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/particles.js.
        * MotionMark/tests/master/resources/performance.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/performance.svg.
        * MotionMark/tests/master/resources/performance100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/performance100.png.
        * MotionMark/tests/master/resources/script.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/script.svg.
        * MotionMark/tests/master/resources/script100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/script100.png.
        * MotionMark/tests/master/resources/shortcuts.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts.svg.
        * MotionMark/tests/master/resources/shortcuts100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/shortcuts100.png.
        * MotionMark/tests/master/resources/standards.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/standards.svg.
        * MotionMark/tests/master/resources/standards100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/standards100.png.
        * MotionMark/tests/master/resources/storage.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/storage.svg.
        * MotionMark/tests/master/resources/storage100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/storage100.png.
        * MotionMark/tests/master/resources/styles.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/styles.svg.
        * MotionMark/tests/master/resources/styles100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/styles100.png.
        * MotionMark/tests/master/resources/svg-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/svg-particles.js.
        * MotionMark/tests/master/resources/text.js: Renamed from PerformanceTests/Animometer/tests/master/resources/text.js.
        * MotionMark/tests/master/resources/timeline.svg: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline.svg.
        * MotionMark/tests/master/resources/timeline100.png: Renamed from PerformanceTests/Animometer/tests/master/resources/timeline100.png.
        * MotionMark/tests/master/svg-particles.html: Renamed from PerformanceTests/Animometer/tests/master/svg-particles.html.
        * MotionMark/tests/master/text.html: Renamed from PerformanceTests/Animometer/tests/master/text.html.
        * MotionMark/tests/resources/main.js: Renamed from PerformanceTests/Animometer/tests/resources/main.js.
        * MotionMark/tests/resources/math.js: Renamed from PerformanceTests/Animometer/tests/resources/math.js.
        * MotionMark/tests/resources/stage.css: Renamed from PerformanceTests/Animometer/tests/resources/stage.css.
        * MotionMark/tests/resources/star.svg: Renamed from PerformanceTests/Animometer/tests/resources/star.svg.
        * MotionMark/tests/resources/yin-yang.png: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.png.
        * MotionMark/tests/resources/yin-yang.svg: Renamed from PerformanceTests/Animometer/tests/resources/yin-yang.svg.
        * MotionMark/tests/simple/resources/simple-canvas-paths.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js.
        * MotionMark/tests/simple/resources/simple-canvas.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/simple-canvas.js.
        * MotionMark/tests/simple/resources/tiled-canvas-image.js: Renamed from PerformanceTests/Animometer/tests/simple/resources/tiled-canvas-image.js.
        * MotionMark/tests/simple/simple-canvas-paths.html: Renamed from PerformanceTests/Animometer/tests/simple/simple-canvas-paths.html.
        * MotionMark/tests/simple/tiled-canvas-image.html: Renamed from PerformanceTests/Animometer/tests/simple/tiled-canvas-image.html.
        * MotionMark/tests/template/resources/template-canvas.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-canvas.js.
        * MotionMark/tests/template/resources/template-css.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-css.js.
        * MotionMark/tests/template/resources/template-svg.js: Renamed from PerformanceTests/Animometer/tests/template/resources/template-svg.js.
        * MotionMark/tests/template/template-canvas.html: Renamed from PerformanceTests/Animometer/tests/template/template-canvas.html.
        * MotionMark/tests/template/template-css.html: Renamed from PerformanceTests/Animometer/tests/template/template-css.html.
        * MotionMark/tests/template/template-svg.html: Renamed from PerformanceTests/Animometer/tests/template/template-svg.html.

2016-12-13  Brady Eidson  <beidson@apple.com>

        Add a PerfTest targeting IDBObjectStore.get().
        https://bugs.webkit.org/show_bug.cgi?id=165816

        Reviewed by Alex Christensen.

        * IndexedDB/objectstore-get.html: Added.

2016-12-13  Brady Eidson  <beidson@apple.com>

        Add a PerfTest targeting IDBIndex.get().
        https://bugs.webkit.org/show_bug.cgi?id=165803

        Reviewed by Alex Christensen.

        * IndexedDB/index-get.html: Added.

2016-12-12  Brady Eidson  <beidson@apple.com>

        More IndexedDB perf tests.
        https://bugs.webkit.org/show_bug.cgi?id=165634

        Reviewed by Sam Weinig.

        * IndexedDB/index-multientry.html:
        * IndexedDB/large-number-of-inserts-responsiveness.html: Added.
        * IndexedDB/large-number-of-inserts.html: Added.
        * IndexedDB/objectstore-cursor.html: Added. Runtime cut in 1/4th compared to r209672.

        * resources/runner.js:

2016-12-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r209672.
        https://bugs.webkit.org/show_bug.cgi?id=165766

        IndexedDB/objectstore-cursor.html perf test always times out
        (Requested by ap on #webkit).

        Reverted changeset:

        "More IndexedDB perf tests."
        https://bugs.webkit.org/show_bug.cgi?id=165634
        http://trac.webkit.org/changeset/209672

2016-12-10  Brady Eidson  <beidson@apple.com>

        More IndexedDB perf tests.
        https://bugs.webkit.org/show_bug.cgi?id=165634

        Reviewed by Sam Weinig.

        * IndexedDB/index-multientry.html:
        * IndexedDB/large-number-of-inserts-responsiveness.html: Added.
        * IndexedDB/large-number-of-inserts.html: Added.
        * IndexedDB/objectstore-cursor.html: Added.
        
        * resources/runner.js: Add "track responsiveness" functionality to PerfTestRunner.

2016-12-06  Filip Pizlo  <fpizlo@apple.com>

        Concurrent GC should be stable enough to land enabled
        https://bugs.webkit.org/show_bug.cgi?id=164990

        Reviewed by Geoffrey Garen.
        
        Made CDjs more configurable and refined the "large.js" configuration. I was using that one and
        the new "long.js" configuration to tune concurrent eden GCs.
        
        Added a new way of running Splay in browser, which using chartjs to plot the execution times of
        2000 iterations. This includes the minified chartjs.

        * JetStream/Octane2/splay-detail.html: Added.
        * JetStream/cdjs/benchmark.js:
        (benchmarkImpl):
        (benchmark):
        * JetStream/cdjs/long.js: Added.

2016-12-07  Brady Eidson  <beidson@apple.com>

        Add IDB perf tests stressing key size.
        https://bugs.webkit.org/show_bug.cgi?id=165567

        Reviewed by Alex Christensen.

        * IndexedDB/large-array-keys.html: Added.
        * IndexedDB/large-binary-keys.html: Added.
        * IndexedDB/large-string-keys.html: Added.

2016-12-05  Brady Eidson  <beidson@apple.com>

        Add an IndexedDB perf test to PerformanceTests.
        https://bugs.webkit.org/show_bug.cgi?id=165430

        Reviewed by Alex Christensen.

        * IndexedDB/index-multientry.html: Added.

2016-12-02  Filip Pizlo  <fpizlo@apple.com>

        ES6SampleBench should report an average for Steady State so that all of the numbers are comparable
        https://bugs.webkit.org/show_bug.cgi?id=165325

        Reviewed by Saam Barati.

        This makes all of the numbers that ES6SampleBench reports comparable to each other: they all speak of the time
        it took to run an iteration of something.

        * ES6SampleBench/results.js:
        (Results.prototype.reportResult):

2016-11-18  Jer Noble  <jer.noble@apple.com>

        Add some performance tests for various aspects of media loading and playback.
        https://bugs.webkit.org/show_bug.cgi?id=164977

        Reviewed by Darin Adler.

        Add new tests for a few aspects of media playback; namely: how quickly  media elements fire
        the "canplaythrough" event when all data is immediately available, how quickly HLS playback
        switches resolutions, and at what playback rate MSE-backed video can play without dropping
        frames. Skip these tests by default, as they're not runnable on all ports, and they require
        a webserver (run-webkit-httpd) to complete on macOS.

        * Media/HLSCanPlayThrough.html: Added.
        * Media/HLSGearChange.html: Added.
        * Media/MSECanPlayThrough.html: Added.
        * Media/MSEPlaybackRate.html: Added.
        * Media/StandardCanPlayThrough.html: Added.
        * Media/hls/1080p/iframe_index.m3u8: Added.
        * Media/hls/1080p/prog_index.m3u8: Added.
        * Media/hls/1080p/test.ts: Added.
        * Media/hls/480p/iframe_index.m3u8: Added.
        * Media/hls/480p/prog_index.m3u8: Added.
        * Media/hls/480p/test.ts: Added.
        * Media/hls/720p/iframe_index.m3u8: Added.
        * Media/hls/720p/prog_index.m3u8: Added.
        * Media/hls/720p/test.ts: Added.
        * Media/hls/720p/test.ts.back: Added.
        * Media/hls/index.m3u8: Added.
        * Media/media-source-loader.js: Added.
        (MediaSourceLoader):
        (MediaSourceLoader.prototype.loadManifest):
        (MediaSourceLoader.prototype.loadManifestSucceeded):
        (MediaSourceLoader.prototype.loadManifestFailed):
        (MediaSourceLoader.prototype.loadMediaData):
        (MediaSourceLoader.prototype.loadMediaDataSucceeded):
        (MediaSourceLoader.prototype.loadMediaDataFailed):
        (MediaSourceLoader.prototype.get type):
        (MediaSourceLoader.prototype.get duration):
        (MediaSourceLoader.prototype.get initSegment):
        (MediaSourceLoader.prototype.get mediaSegmentsLength):
        (MediaSourceLoader.prototype.mediaSegments):
        (MediaSourceLoader.prototype.get everyMediaSegment):
        * Media/test-fragmented-video.json: Added.
        * Media/test-fragmented-video.mp4: Added.
        * Media/test.mp4: Added.
        * Skipped:

2016-11-18  Filip Pizlo  <fpizlo@apple.com>

        Concurrent GC should be able to run splay in debug mode and earley/raytrace in release mode with no perf regression
        https://bugs.webkit.org/show_bug.cgi?id=164282

        Reviewed by Geoffrey Garen and Oliver Hunt.
        
        CDjs is a fun benchmark for stressing concurrent GCs, but to really give the GC a good
        workout you need to increase the amount of work that the test does. This adds a second
        configuration of the benchmark that has more aircraft. It uses much more memory and causes us
        to do more GCs and those GCs take longer.

        * JetStream/cdjs/benchmark.js:
        (benchmarkImpl):
        (benchmark):
        * JetStream/cdjs/large.js: Added.

2016-11-14  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, revert unintended change.

        * ES6SampleBench/Air/benchmark.js:

2016-10-03  Saam Barati  <sbarati@apple.com>

        MapHash should speculate on the type of its child node
        https://bugs.webkit.org/show_bug.cgi?id=161922

        Reviewed by Filip Pizlo.

        I gave the main generator a name so it's easier to see what
        it is when using the sampling profiler.

        * ES6SampleBench/Basic/ast.js:
        (Basic.Program):

2016-09-19  Sergio Villar Senin  <svillar@igalia.com>

        [css-grid] Remove the x2 computation of row sizes with indefinite heights
        https://bugs.webkit.org/show_bug.cgi?id=162150

        Reviewed by Darin Adler.

        Added a new test case which checks the layout performance of grids inside other grids, i.e,
        grids acting both as grid container and grid item.

        * Layout/nested-grid.html: Added.

2016-09-09  Simon Fraser  <simon.fraser@apple.com>

        Perf test Animation/css-accelerated-animation.html failing
        https://bugs.webkit.org/show_bug.cgi?id=161795

        Skip Animation/css-accelerated-animation.html since this only works as a MobileSafari
        perf test.

        * Skipped:

2016-09-08  Simon Fraser  <simon.fraser@apple.com>

        Add a content-animation test with accelerated CSS animations
        https://bugs.webkit.org/show_bug.cgi?id=161776

        Reviewed by Dean Jackson.

        Add a test that measures the frame rate of accelerated CSS animations.

        This is like css-animation.html (which animates 'left' and 'top') but animates
        transforms instead. In order to get animation in X and Y we make two nested elements
        and set transformX() on one, and transformY() on the other.

        * Animation/css-accelerated-animation.html: Added.

2016-08-23  Saam Barati  <sbarati@apple.com>

        It should be easy to run ES6SampleBench from the jsc shell
        https://bugs.webkit.org/show_bug.cgi?id=161085

        Reviewed by Yusuke Suzuki.

        This patch makes ES6 sample bench runnable through the `jsc` shell.
        To do that, you need to be in the PerformanceTests/ES6SampleBench
        directory and run `jsc cli.js`. To make this work, the benchmark
        is now aware of being run in two modes: via the browser, and via
        the shell. Each entry point will set a variable `isInBrowser`,
        and the benchmark will do different things based on if that
        variable is true or false.

        * ES6SampleBench/Air/benchmark.js:
        * ES6SampleBench/Air/stress-test.js:
        * ES6SampleBench/Basic/benchmark.js:
        (runBenchmark):
        * ES6SampleBench/Basic/stress-test.js:
        * ES6SampleBench/air_benchmark.js:
        * ES6SampleBench/basic_benchmark.js:
        * ES6SampleBench/cli.js: Added.
        (return.doRun):
        (makeBenchmarkRunner):
        * ES6SampleBench/driver.js:
        (Driver):
        (Driver.prototype._recomputeSummary):
        (Driver.prototype._iterate.window.setTimeout):
        (Driver.prototype._iterate):
        (Driver.prototype._updateIterations):
        * ES6SampleBench/glue.js:
        (reportResult):
        * ES6SampleBench/index.html:
        * ES6SampleBench/results.js:
        (Results):
        (Results.prototype.reportRunning):
        (Results.prototype.reportDone):
        (Results.prototype.reportError):
        * ES6SampleBench/stats.js:
        (Stats):
        (Stats.prototype.toString):
        (Stats.prototype._update):

2016-08-01  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an option to run the MotionMark tests with classic tile size (512x512)
        https://bugs.webkit.org/show_bug.cgi?id=160371

        Reviewed by Darin Adler.

        Setting the body to large size (3000x3000) and overflow to scroll forces
        the classic tile size (512x512). This option does not affect the canvas
        tests because the canvas is displayed on one tile regardless of its size.

        * Animometer/developer.html:
        * Animometer/resources/debug-runner/animometer.css:
        (body.showing-test-container.tiles-big):
        (body.showing-test-container.tiles-classic):
        * Animometer/resources/debug-runner/animometer.js:
        * Animometer/resources/runner/animometer.js:
        (window.benchmarkController.startBenchmark):

2016-06-29  Filip Pizlo  <fpizlo@apple.com>

        Generators violate bytecode liveness validation
        https://bugs.webkit.org/show_bug.cgi?id=159279

        Reviewed by Yusuke Suzuki.

        Add Basic to our test harness.

        Also made some cosmetic changes to the benchmark harness.

        * ES6SampleBench/Basic/basic-tests.yaml: Added.
        * ES6SampleBench/Basic/stress-test.js: Added.
        (preciseTime):
        * ES6SampleBench/driver.js:
        (Driver):
        (Driver.prototype.start):
        (Driver.prototype.reportError):
        * ES6SampleBench/glue.js:
        * ES6SampleBench/index.html:

2016-06-28  Filip Pizlo  <fpizlo@apple.com>

        ES6SampleBench should have a harness
        https://bugs.webkit.org/show_bug.cgi?id=159246

        Reviewed by Saam Barati.
        
        This adds a simple web harness for ES6SampleBench. It runs Air and Basic 10 times for 200
        iterations each and reports three metrics:
        
        First iteration: the time it takes for the first iteration to run. This is the first
        iteration after the benchmark is loaded into the iframe, so it's representative of what
        would happen if one of these workloads only ran for a short time.
        
        Worst 2%: of the last 199 iterations, the average of the worst 2% iterations. If code like
        any of these workloads was used in an important event handler, you'd want that code to run
        well in the worst case in addition to having great throughput.
        
        Steady state: the total of the last 199 iterations. This is representative of what would
        happen if you ran code like this for a long time.
        
        The total score is the geomean of the firstIteration/worstCase/steadyState numbers of the
        two benchmarks.
        
        The harness does statistics using Student's T-distribution confidence intervals.

        * ES6SampleBench/Basic/benchmark.js:
        (Benchmark):
        * ES6SampleBench/air_benchmark.js: Added.
        * ES6SampleBench/basic_benchmark.js: Added.
        * ES6SampleBench/driver.js: Added.
        (Driver):
        (Driver.prototype.addBenchmark):
        (Driver.prototype.start):
        (Driver.prototype.reportResult):
        (Driver.prototype.reportError):
        (Driver.prototype._recomputeSummary.Geomean):
        (Driver.prototype._recomputeSummary.Geomean.prototype.add):
        (Driver.prototype._recomputeSummary.Geomean.prototype.get result):
        (Driver.prototype._recomputeSummary):
        (Driver.prototype._iterate):
        (Driver.prototype._updateIterations):
        * ES6SampleBench/glue.js: Added.
        * ES6SampleBench/index.html: Added.
        * ES6SampleBench/results.js: Added.
        (Results):
        (Results.prototype.get benchmark):
        (Results.prototype.reset):
        (Results.prototype.reportRunning):
        (Results.prototype.reportDone):
        (Results.prototype.reportResult.averageAbovePercentile):
        (Results.prototype.reportResult):
        (Results.prototype.reportError):
        * ES6SampleBench/stats.js: Added.
        (Stats):
        (Stats.prototype.reset):
        (Stats.prototype.add):
        (Stats.prototype.get numIterations):
        (Stats.prototype.valueForIteration):
        (Stats.get result.tDist):
        (Stats.prototype.get result):
        (Stats.prototype.toString):
        (Stats.prototype._update):
        * ES6SampleBench/style.css: Added.
        (body):
        (body, th, tr):
        (h1, h2, h3, h4):
        (h1):
        (h2):
        (h3):
        (hr):
        (address):
        (img):
        (.underline):
        (ol.loweralpha):
        (ol.upperalpha):
        (ol.lowerroman):
        (ol.upperroman):
        (ol.arabic):
        (.banner-link:link, .banner-link:visited):
        (:link, :visited):
        (h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited):
        (.anchor:link, .anchor:visited):
        (* > .anchor:link, * > .anchor:visited):
        (span:hover .anchor):
        (a.forbidden, span.forbidden):
        (a.missing:hover):
        (a.closed:link, a.closed:visited, span.closed):
        (pre):
        (div.code):
        (div.code pre):
        (dt):
        (dd):
        (dd:last-child):
        (.site-logo):
        (.site-logo .tagline):
        (table):
        (#contents):
        (p):
        (p:last-child):
        (th):
        (td):

2016-06-28  Jon Lee  <jonlee@apple.com>

        Update focus test
        https://bugs.webkit.org/show_bug.cgi?id=159242
        rdar://problem/27070007

        Reviewed by Dean Jackson.
        Provisionally reviewed by Said Abou-Hallawa.

        Move previous test to dom suite, and update the test for better reporting of frame rate, although
        it uses a different rendering path.

        * Animometer/resources/debug-runner/tests.js: Add to dom suite.
        * Animometer/tests/dom/focus.html: Copied from PerformanceTests/Animometer/tests/master/focus.html.
        * Animometer/tests/dom/resources/focus.js: Copied from PerformanceTests/Animometer/tests/master/resources/focus.js.
        * Animometer/tests/master/focus.html: Remove center element.
        * Animometer/tests/master/resources/focus.js: Use narrower size range with smaller particles. Remove the
        container elements. Inline getBlurValue and getOpacityValue since they are only called once.

2016-06-28  Filip Pizlo  <fpizlo@apple.com>

        Move Air.js and Basic into ES6SampleBench

        Rubber stamped by Geoffrey Garen.
        
        We want to group our ES6 benchmarks together, and eventually, we want to give them a
        common harness.

        * Air.js: Removed.
        * Air.js/README.md: Removed.
        * Air.js/airjs-tests.yaml: Removed.
        * Air.js/all.js: Removed.
        * Air.js/allocate_stack.js: Removed.
        * Air.js/arg.js: Removed.
        * Air.js/basic_block.js: Removed.
        * Air.js/benchmark.js: Removed.
        * Air.js/code.js: Removed.
        * Air.js/custom.js: Removed.
        * Air.js/frequented_block.js: Removed.
        * Air.js/insertion_set.js: Removed.
        * Air.js/inst.js: Removed.
        * Air.js/liveness.js: Removed.
        * Air.js/make_dist.sh: Removed.
        * Air.js/opcode.js: Removed.
        * Air.js/payload-airjs-ACLj8C.js: Removed.
        * Air.js/payload-gbemu-executeIteration.js: Removed.
        * Air.js/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
        * Air.js/payload-typescript-scanIdentifier.js: Removed.
        * Air.js/reg.js: Removed.
        * Air.js/stack_slot.js: Removed.
        * Air.js/stress-test.js: Removed.
        * Air.js/strip-hash.rb: Removed.
        * Air.js/symbols.js: Removed.
        * Air.js/test.html: Removed.
        * Air.js/test.js: Removed.
        * Air.js/tmp.js: Removed.
        * Air.js/tmp_base.js: Removed.
        * Air.js/util.js: Removed.
        * Basic: Removed.
        * Basic/ast.js: Removed.
        * Basic/basic.js: Removed.
        * Basic/benchmark.js: Removed.
        * Basic/caseless_map.js: Removed.
        * Basic/lexer.js: Removed.
        * Basic/number.js: Removed.
        * Basic/parser.js: Removed.
        * Basic/random.js: Removed.
        * Basic/state.js: Removed.
        * Basic/test.html: Removed.
        * Basic/test.js: Removed.
        * Basic/util.js: Removed.
        * ES6SampleBench: Added.
        * ES6SampleBench/Air: Copied from PerformanceTests/Air.js.
        * ES6SampleBench/Basic: Copied from PerformanceTests/Basic.
        * Skipped:

2016-06-24  Filip Pizlo  <fpizlo@apple.com>

        Add a ES6 generator benchmark
        https://bugs.webkit.org/show_bug.cgi?id=159101

        Rubber stamped by Keith Miller.
        
        This adds a Basic interpreter loosely based on ECMA-55:
        
        http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-55,%201st%20Edition,%20January%201978.pdf
        
        It includes a lexer that is a generator, a parser that uses regular expressions, and an AST
        walk interpreter where the walking functions for statements are generators that call each
        other with yield*. This enables the interpreter to look like an AST walk even though it can
        yield at INPUT and PRINT statements.
        
        This also uses for-of, classes, Map, and WeakMap. It also uses deprecated-but-awesome RegExp
        features like RegExp.lastMatch and RegExp.rightContext. I did it that way because this is
        how I've always written lexers in dynamic languages; see offlineasm's lex() method in
        parser.rb for example.
        
        The benchmark runs a handful of simple Basic programs. The longest-running one computes
        prime numbers.
        
        Includes a command-line and web harness. On my machine it runs in 2-3 seconds.

        * Basic: Added.
        * Basic/ast.js: Added.
        (Basic.NumberApply):
        (Basic.Variable):
        (Basic.Const):
        (Basic.NumberPow):
        (Basic.NumberMul):
        (Basic.NumberDiv):
        (Basic.NumberNeg):
        (Basic.NumberAdd):
        (Basic.NumberSub):
        (Basic.StringVar):
        (Basic.Equals):
        (Basic.NotEquals):
        (Basic.LessThan):
        (Basic.GreaterThan):
        (Basic.LessEqual):
        (Basic.GreaterEqual):
        (Basic.GoTo):
        (Basic.GoSub):
        (Basic.Def):
        (Basic.Let):
        (Basic.If):
        (Basic.Return):
        (Basic.Stop):
        (Basic.On):
        (sideState.shouldStop):
        (Basic.For):
        (Basic.Next):
        (Basic.Print):
        (Basic.Input):
        (Basic.Read):
        (Basic.Restore):
        (Basic.Dim):
        (Basic.Randomize):
        (Basic.End):
        (Basic.Program):
        * Basic/basic.js: Added.
        (prepare):
        (simulate):
        * Basic/benchmark.js: Added.
        (Benchmark):
        (Benchmark.prototype.runIteration.expect):
        (Benchmark.prototype.runIteration):
        (runBenchmark):
        * Basic/caseless_map.js: Added.
        (CaselessMap):
        * Basic/lexer.js: Added.
        (lex.consumeWhitespace):
        (lex.consume):
        (lex):
        * Basic/lexer_test.js: Added.
        * Basic/number.js: Added.
        (NumberValue):
        (NumberValue.prototype.get value):
        (NumberValue.prototype.apply):
        (NumberValue.prototype.leftApply):
        (NumberValue.prototype.assign):
        (NumberArray.):
        (NumberArray):
        (NumberArray.prototype.apply):
        (NumberArray.prototype.leftApply):
        (NumberFunction):
        (NumberFunction.prototype.apply):
        (NumberFunction.prototype.leftApply):
        (NativeFunction):
        (NativeFunction.prototype.apply):
        (NativeFunction.prototype.leftApply):
        * Basic/parser.js: Added.
        (parse):
        (parse.pushToken):
        (parse.peekToken):
        (parse.consumeKind):
        (parse.consumeToken):
        (parse.parseVariable):
        (parse.parseNumericExpression.parsePrimary):
        (parse.parseNumericExpression.parseFactor):
        (parse.parseNumericExpression.parseTerm):
        (parse.parseNumericExpression):
        (parse.parseConstant):
        (parse.parseStringExpression):
        (parse.isStringExpression):
        (parse.parseRelationalExpression):
        (parse.parseNonNegativeInteger):
        (parse.parseGoToStatement):
        (parse.parseGoSubStatement):
        (parse.parseStatement):
        (parse.parseStatements):
        * Basic/random.js: Added.
        (createRNG):
        (createRNGWithFixedSeed):
        (createRNGWithRandomSeed):
        * Basic/state.js: Added.
        (State):
        (State.prototype.getValue):
        (State.prototype.getSideState):
        (State.prototype.abort):
        (State.prototype.validate):
        * Basic/test.html: Added.
        * Basic/test.js: Added.
        * Basic/util.js: Added.
        (this.performance.performance.now.currentTime):
        (else.this.preciseTime.currentTime):
        (else.currentTime):
        * Skipped: Make sure that we don't run Basic yet.

2016-06-21  Jon Lee  <jonlee@apple.com>

        Update canvas size when benchmark begins
        https://bugs.webkit.org/show_bug.cgi?id=159010

        Reviewed by Dean Jackson.

        Previously we would evaluate the media queries and assign the canvas size to the test
        on body.onload. Instead, do it once the user starts the benchmark.

        * Animometer/resources/debug-runner/animometer.js: Move benchmarkController.determineCanvasSize()
        to benchmarkController._startBenchmark.
        * Animometer/resources/runner/animometer.js: Ditto.

2016-06-21  Jon Lee  <jonlee@apple.com>

        Add new timestamp option
        https://bugs.webkit.org/show_bug.cgi?id=159006

        Reviewed by Dean Jackson.

        Add a new option to take timestamps from the rAF callback.

        * Animometer/developer.html: Added option.
        * Animometer/tests/resources/main.js:
        (Benchmark): Fall back to using the rAF timestamp if performance.now()
        is not available.
        (Benchmark._animateLoop): Update how timestamp is set. Prefer to use
        local var instead of accessing private var.

2016-06-21  Jon Lee  <jonlee@apple.com>

        Improvements to Animometer benchmark
        https://bugs.webkit.org/show_bug.cgi?id=157738

        Reviewed by Dean Jackson.
        Provisionally reviewed by Said Abou-Hallawa.

        Update tests.

        * Animometer/tests/master/text.html: Ensure only three text sizes for
        the three canvases.
        * Animometer/tests/master/focus.html: Reduce the text size to fit with smaller
        particle sizes.
        * Animometer/tests/master/resources/focus.js: Remove the quadratic distribution for
        particle sizes, and make it linear. Reduce the size variance. Shuffle the math to
        reduce some calculations per frame. Fix the placement of the particles which might
        otherwise be culled.
        * Animometer/tests/master/resources/image-data.js: Reduce the particle size
        to encourage larger scores.

2016-06-21  Jon Lee  <jonlee@apple.com>

        Improvements to Animometer benchmark
        https://bugs.webkit.org/show_bug.cgi?id=157738

        Reviewed by Dean Jackson.
        Provisionally reviewed by Said Abou-Hallawa.

        Include confidence interval for the final score, and store the canvas
        size in the serialization so that it is accurately shown in results.

        * Animometer/developer.html: Add a "confidence" div.
        * Animometer/index.html: Ditto. Convert "mean" to "confidence".
        * Animometer/resources/debug-runner/animometer.js: Look at options, and
        if the configuration is included, update the body class based on it
        (similar to what we do when we first load the page). That way, if you
        drag-and-drop previous results in, that configuration is reflected in
        the dashboard. Show the full confidence interval.

        * Animometer/resources/debug-runner/animometer.css:
        * Animometer/resources/debug-runner/animometer.js: Style update.
        * Animometer/resources/runner/animometer.css:

        * Animometer/resources/runner/animometer.js:
        (_processData): Propagate the confidence interval values out and calculate
        the lower and upper bounds. For now, shortcut the aggregate calculation,
        since we only go through one iteration.
        (this._processData.calculateScore): Propagate the confidence interval out
        to be next to the score. Depending on the controller these values are
        calculated differently.
        (this._processData._getResultsProperty): Convenience function.
        (this._processData.get score): Refactor.
        (this._processData.get scoreLowerBound): Get the aggregate lower bound.
        (this._processData.get scoreUpperBound): Get the aggregate upper bound.
        (window.sectionsManager.setSectionScore):
        (window.benchmarkController._startBenchmark): When the benchmark starts, note
        the canvas size and add it to options. That way it will be automatically be
        serialized.
        (window.benchmarkController.showResults): Include the maximum deviation
        percentage.
        * Animometer/resources/runner/lines.svg: Make the background line up with the
        skew.
        * Animometer/resources/runner/tests.js:
        (Headers.details.text): Refactor.
        * Animometer/resources/statistics.js:
        (Statistics.largestDeviationPercentage): Convenience function to calculate
        the deviation percentage on either end and return the largest deviation.
        * Animometer/resources/strings.js:

        Allow specifying a regression profile to use instead of taking the one
        with the lowest error.

        Address an issue in the focus test when the regression calculated ends
        up overestimating the change point, causing a cascade of tougher
        ramps. The reason behind this is that at max complexity of an initial
        ramp, the frame length is very high, and it influences the second
        segment of the piecewise regression strongly, causing it to be very
        steep. As a result, the first segment, expected to be flat, ends up
        covering a higher range of complexity. That makes the change point
        much higher than it should be. To avoid this, we will add a sanity
        check on the maximum value of the ramp. If the regression's projected
        value at the maximum complexity of the current ramp is very slow (less
        than 20 fps), 1) reduce the maximum complexity by 20%, and 2) do not
        include the regression's change point in the change point estimator.
        That estimator is used as the midpoint of the next ramp, and including
        the change point from a poor regression can bake in the error. The
        controller already knows how to adjust for ramps that are too easy for
        the system.

        * Animometer/resources/runner/animometer.js:
        (this._processData.findRegression): Takes a preferred profile and gives that to
        Regression.
        (this._processData.calculateScore): With the ramp controller, take the profile
        of the ramp that was used the most when calculating the ramp's regression. That
        profile is what is used for the test's score.
        * Animometer/resources/statistics.js:
        (Regression.Utilities.createClass): Update to take an options object which can
        specify a profile to calculate with. Otherwise it will continue to use both and
        select the one with the lower error.
        (_calculateRegression): Fix an issue where we claim 0 error if the regression
        calculation fails due to divide-by-zero. Instead reject that regression calculation
        by giving it Number.MAX_VALUE.
        * Animometer/resources/strings.js: New strings for marking a regression as flat
        or slope.
        * Animometer/tests/resources/main.js:
        (RampController): Rename the thresholds for clarity. Add a threshold that, if
        exceeded, will lower the maximum complexity of the next ramp.
        (tune): Relax the cdf check to consider whether the interval definitely falls in
        the desired frame length threshold.
        (processSamples): Include the profile in the ramp.

        Update ramp controller test. Increase the length of the test to 30 seconds, and extend
        the interval to 120 ms during sampling. Improve the estimation of the ramp parameters.

        * Animometer/developer.html: Change default to 30 seconds, and don't show the progress bar
        by default.
        * Animometer/resources/runner/animometer.js: Change default to 30 seconds.
        * Animometer/tests/resources/main.js: A number of improvements to the ramp controller, in
        the order in which they appear in the patch:

        - With a longer test length use longer ramps with longer intervals to get more data at each
        complexity. Keep the 100 ms interval length during the ramp up phase since we don't need to
        spend more time there to find the right order of magnitude, but increase it during the
        ramps to 120 ms.
        - The ramp linearly interpolates the complexity to render based on its timestamp, but it would
        never sample the minimum complexity. Instead of lerping max to min complexity from time
        0 to t where t is the ramp length, instead lerp from 0 to (t - intervalSampleLength) so that
        we can have at least one interval sample at the min complexity for that ramp.
        - Some regression calculations only come out with one line segment rather than the two
        we expect. This could be due to a noisy ramp or the ramp's range is too narrow. If that's the
        case, influence the minimum complexity of the next ramp towards the lowest bound of 1, so that
        we ensure that at least part of the ramp is covering a complexity range that the system can
        handle at full 60.
        - Remove an assignment to interpolatedFrameLength since that is never subsequently used.

        Update the format used to serialize the results for analysis.

        Each data point used to have named properties for fields like complexity and frame rate.
        In addition the serialized numbers had rounding errors that took up many characters.
        Update the format by introducing a new data container called SampleData, which contains a
        field map. The map maps a string to an array index. Each data point is an array, so, to
        get a stat, use the field map to get the array index into the data point. This allows future
        versions to track other data, and reduces the size of the output string by two-thirds.

        * Animometer/resources/extensions.js:
        (Utilities.toFixedNumber): Add convenience function that truncates the number to a fixed
        precision, and converts it back to a number.
        (SampleData): New class that contains sample data and a field map that maps properties to
        an array index.
        (get length): Number of data points.
        (addField): Add a field to the field map.
        (push): Add a data point.
        (sort): Sort the data.
        (slice): Return new SampleData object with sliced data.
        (forEach): Iterate over the data with provided function.
        (createDatum):
        (getFieldInDatum): Returns the data point associated with the field name by looking it up
        in the field map in the datum provided, which can be the datum object itself (an array) or
        an index into the data member variable.
        (setFieldInDatum): Sets the data point associated with the field name.
        (at): Returns the data point at the provided index.
        (toArray): Serializes the data where the field map serves as property names for each point.

        * Animometer/resources/debug-runner/graph.js:
        (updateGraphData): Remove unused _testData. Convert the data to the old array format for the
        graph to use, since the old format was much easier to work with when displaying the graphs.
        (onGraphTypeChanged): For some controllers, no alternative score or mean is provided.
        * Animometer/resources/runner/animometer.css:
        * Animometer/resources/runner/animometer.js: Refactor to use SampleData. Update JSON output
        to only go to 3 digits of precision for purposes of reducing the data size.
        * Animometer/resources/strings.js: Add new strings to put into the field maps.
        * Animometer/tests/resources/main.js: Refactor to use SampleData.

        * Animometer/developer.html:
        * Animometer/index.html: Restructure results table for both pages. Add charset attribute to
        tests.js include.
        * Animometer/resources/debug-runner/animometer.css: Clear out styles from release runner.
        * Animometer/resources/debug-runner/graph.js:
        (onGraphTypeChanged): Update score and mean if bootstrap results are available from the
        controller, since not all controllers do bootstrapping.
        * Animometer/resources/debug-runner/tests.js: Update header text.
        * Animometer/resources/runner/animometer.css: Include confidence interval in results.
        * Animometer/resources/runner/animometer.js:
        (ResultsTable._addHeader): Header contents can be HTML, so use innerHTML instead.
        (ResultsTable._addBody): Add tbody element.
        (ResultsTable._addTest): Allow a data cell to invoke a JS function to get its contents.
        (window.benchmarkController.showResults): Add table that includes tests' confidence intervals.
        * Animometer/resources/runner/tests.js:
        (Headers.details.text): Add new details table that includes bootstrap confidence interval.
        The interval can be asymmetric, but for simplicity, report the maximum deviation percentage
        on either side of the bootstrap median.
        * Animometer/resources/statistics.js:
        (bootstrap): Include the confidence percentage in the return object.

        Report canvas size in results.

        * Animometer/developer.html: Add markup to indicate whether a small, medium, or large
        canvas was used.
        * Animometer/index.html: Ditto.
        * Animometer/resources/debug-runner/animometer.js: Call determineCanvasSize().
        * Animometer/resources/runner/animometer.css: Update styles to set the canvas based on the
        body class size.
        * Animometer/resources/runner/animometer.js:
        (window.benchmarkController.initialize): Update styles to set the canvas based on the
        body class size.
        (window.benchmarkController.determineCanvasSize): Run various media queries and set the body
        class based on the size of the device.

        * Animometer/developer.html: Refactor to include the main CSS file, and redo
        the layout so that it doesn't rely on flexbox.
        * Animometer/resources/debug-runner/animometer.css:
        * Animometer/resources/debug-runner/animometer.js:
        (updateDisplay): Since various parts of the script alter the body class, we can't
        replace the className directly. Instead, remove all display-based values and then add
        the one that was selected.
        * Animometer/resources/debug-runner/graph.js:
        (updateGraphData): To set the size of the graph, use window.innerHeight.
        * Animometer/resources/runner/animometer.js:
        (window.sectionsManager.showSection): Since various parts of the script alter the body
        class, we can't replace the className directly. Remove all of the section classes
        individually and then add the one desired.
        * Animometer/tests/resources/stage.css: Remove -apple-system as a font to use in the
        stage.

2016-06-12  Filip Pizlo  <fpizlo@apple.com>

        Fix round-down goof in Air.js's ShuffleCustom.forEachArg
        https://bugs.webkit.org/show_bug.cgi?id=158674

        Reviewed by Michael Saboff.
        
        x / 3 * 3 is not how you round down to multiples of 3 in JavaScript. You need to do
        Math.floor(x / 3) * 3 instead.
        
        This is a benign change, because having extra arguments to a Shuffle is not something we
        actually take advantage of yet. But I think it's best to match the original C++ code's
        intent.

        * Air.js/custom.js:
        (const.ShuffleCustom.forEachArg):

2016-06-11  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, skip Air.js. It got unskipped when I renamed it from JSAir.

        * Skipped:

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        Make it easy to package Air.js
        https://bugs.webkit.org/show_bug.cgi?id=158652

        Reviewed by Benjamin Poulain.
        
        If you want to give Air.js to someone, you can now do:
        
        cd PerformanceTests/Air.js
        ./make_dist.sh
        
        This will create Air.js.tar.gz and a directory called Air.js. If you want to send someone
        the benchmark, just send either of those things and tell them to look at index.html.
        
        You may have to edit make_dist.sh for wherever you have Markdown.pl. You can get that from
        https://daringfireball.net/projects/markdown/

        * Air.js/make_dist.sh: Added.
        * Air.js/test.html:

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, make the link to test.html into an actual link.

        * Air.js/README.md:

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        Fix some text in Air.js/README.md
        https://bugs.webkit.org/show_bug.cgi?id=158650

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

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

        * Air.js/README.md:

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        Air.js should have some documentation
        https://bugs.webkit.org/show_bug.cgi?id=158648

        Reviewed by Keith Miller.
        
        I want to be able to point people at a document if they want to know more about this
        benchmark.

        * Air.js/README.md: Added.

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        Rename JSAir to Air.js.

        Rubber stamped by Mark Lam.

        * Air.js: Copied from PerformanceTests/JSAir.
        * Air.js/airjs-tests.yaml: Copied from PerformanceTests/JSAir/jsair-tests.yaml.
        * Air.js/benchmark.js: Copied from PerformanceTests/JSAir/benchmark.js.
        (Benchmark):
        * Air.js/jsair-tests.yaml: Removed.
        * Air.js/payload-airjs-ACLj8C.js: Copied from PerformanceTests/JSAir/payload-jsair-ACLj8C.js.
        * Air.js/payload-jsair-ACLj8C.js: Removed.
        * Air.js/stress-test.js: Copied from PerformanceTests/JSAir/stress-test.js.
        * Air.js/test.html: Copied from PerformanceTests/JSAir/test.html.
        * Air.js/test.js: Copied from PerformanceTests/JSAir/test.js.
        * JSAir: Removed.
        * JSAir/all.js: Removed.
        * JSAir/allocate_stack.js: Removed.
        * JSAir/arg.js: Removed.
        * JSAir/basic_block.js: Removed.
        * JSAir/benchmark.js: Removed.
        * JSAir/code.js: Removed.
        * JSAir/custom.js: Removed.
        * JSAir/frequented_block.js: Removed.
        * JSAir/insertion_set.js: Removed.
        * JSAir/inst.js: Removed.
        * JSAir/jsair-tests.yaml: Removed.
        * JSAir/liveness.js: Removed.
        * JSAir/opcode.js: Removed.
        * JSAir/payload-gbemu-executeIteration.js: Removed.
        * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
        * JSAir/payload-jsair-ACLj8C.js: Removed.
        * JSAir/payload-typescript-scanIdentifier.js: Removed.
        * JSAir/reg.js: Removed.
        * JSAir/stack_slot.js: Removed.
        * JSAir/stress-test.js: Removed.
        * JSAir/strip-hash.rb: Removed.
        * JSAir/symbols.js: Removed.
        * JSAir/test.html: Removed.
        * JSAir/test.js: Removed.
        * JSAir/tmp.js: Removed.
        * JSAir/tmp_base.js: Removed.
        * JSAir/util.js: Removed.

2016-06-10  Filip Pizlo  <fpizlo@apple.com>

        JSC Stress Test failing: jsair-tests.yaml/test.js.ftl-eager-no-cjit
        https://bugs.webkit.org/show_bug.cgi?id=158571

        Reviewed by Keith Miller.
        
        Introduce a different harness for run-jsc-stress-tests, which runs for a minimum of 10
        iterations and then tries to do any number of "bonus" iterations until it's been running for
        two seconds. Since this is the sort of test that isn't really meant to stress anything in
        particular, I think it's OK if it is time-limited in this way. The worst case is that some
        of its failures will be flaky, but I think that they would have been flaky anyway given the
        complexity of the test.

        * JSAir/benchmark.js:
        (Benchmark):
        (Benchmark.prototype.runIteration):
        (benchmark): Deleted.
        * JSAir/jsair-tests.yaml:
        * JSAir/stress-test.js: Added.
        (preciseTime):
        * JSAir/test.html:
        * JSAir/test.js:

2016-06-09  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, teach the perf bots not to run JSAir.

        * Skipped:

2016-06-08  Filip Pizlo  <fpizlo@apple.com>

        Use more ES6 features in JSAir
        https://bugs.webkit.org/show_bug.cgi?id=158497

        Reviewed by Keith Miller.
        
        This improves JSAir with the following ES6 features suggested by JoePeck:
        
        - String interpolation.
        - Destructuring inside PatchCustom.
        - Default arguments.
        
        All of these things are on hot paths.
        
        Note that I didn't use string interpolation everywhere that I could, only in those places
        where it made the code more readable. In Ruby, I used the style that if the interpolation
        expression has any non-trivial stuff (like a ternary operator, a chain of calls, or embedded
        strings) then it's better to use regular strcat. I think that's what I carried over to here.
        
        Note that the previous change (Add result validation to JSAir) also made the Proxy code not
        dead, though it's not necessarily on the hot path. The Proxy isn't called into frequently
        but it's used from a function that is otherwise hot, so if calling into the Proxy prevents
        that function from being optimized then it will hurt so good.
        
        I also reenabled tail calls in a few places.
        
        This change doesn't seem to change the performance of the benchmark for us. That's expected
        since these ES6 features are cheap. Note that this claim doesn't include Proxy, which was
        added in a separate change and that change did make the benchmark overall more expensive.

        * JSAir/allocate_stack.js:
        (allocateStack):
        * JSAir/arg.js:
        (Arg.createBitImm64):
        (Arg.createAddr):
        (Arg.createStack):
        (Arg.logScale):
        (Arg.createIndex):
        * JSAir/basic_block.js:
        (BasicBlock.get headerString):
        (BasicBlock.prototype.get if):
        (BasicBlock):
        * JSAir/benchmark.js:
        (benchmark):
        * JSAir/code.js:
        (Code):
        (Code.prototype.addBlock):
        (Code.prototype.addStackSlot):
        (Code.prototype.newTmp):
        (Code.prototype.get size):
        (Code.prototype.get blocks):
        (Code.prototype.get stackSlots):
        (Code.prototype.tmps):
        (Code.prototype.get callArgAreaSize):
        (Code.prototype.toString):
        * JSAir/custom.js:
        (const.PatchCustom.forEachArg):
        * JSAir/inst.js:
        (Inst):
        * JSAir/reg.js:
        (Reg.prototype.toString):
        * JSAir/util.js:
        (symbolName):
        (lowerSymbolName):

2016-06-07  Filip Pizlo  <fpizlo@apple.com>

        Add result validation to JSAir
        https://bugs.webkit.org/show_bug.cgi?id=158493

        Reviewed by Saam Barati.
        
        This adds the ability to hash a Code in a way that matches the C++ code's hashing of Code.
        This allows us to check if the Code that JSAir sees is the code that C++ saw. We use this to
        check the Code before and after allocateStack, and compare against hashes we got from C++.
        
        Doing this uncovered bugs. roundUpToMultipleOf wasn't doing anything. allocateStack was not
        allocating things correctly because I was concatting a Set to an Array, which doesn't really
        work. Now these bugs are fixed.
        
        The checking step adds to the running time so I reduced the number of iterations. The
        benchmark spends a decent amount of its time computing Code hashes; I think it's around 1/3
        total. This is probably OK. It's better to verify the results even if the running time is
        not all in the "core" of the algorithm.
        
        Also add a run-jsc-stress-tests yaml file to allow this to run as a test.

        * JSAir/allocate_stack.js:
        * JSAir/arg.js:
        (Arg.createImm):
        (Arg.createBigImm):
        (Arg.createBitImm):
        (Arg.createBitImm64):
        (Arg.createWidth):
        (Arg.createSpecial):
        (Arg.prototype.get kind):
        (Arg.prototype.get isTmp):
        (Arg.prototype.get isImm):
        (Arg.prototype.get isSomeImm):
        (Arg.prototype.get isSomeBigImm):
        (Arg.prototype.get isCondition):
        (Arg.prototype.get isWidth):
        (Arg.prototype.get isSpecial):
        (Arg.prototype.get isAlive):
        (Arg.prototype.get tmp):
        (Arg.prototype.get value):
        (Arg.prototype.get lowValue):
        (Arg.prototype.get highValue):
        (Arg.prototype.get base):
        (Arg.prototype.get isGP):
        (Arg.prototype.get isFP):
        (Arg.prototype.isValidForm):
        (Arg.prototype.get isInvertible):
        (Arg.kindCode):
        (Arg.prototype.hash):
        (Arg.prototype.toString):
        (Arg):
        * JSAir/basic_block.js:
        (BasicBlock.get successorBlocks):
        * JSAir/benchmark.js:
        (benchmark):
        * JSAir/code.js:
        (Code.prototype.setFrameSize):
        (Code.prototype.hash):
        (Code.prototype.toString):
        (Code):
        * JSAir/inst.js:
        (Inst.prototype.get hasNonArgEffects):
        (Inst.prototype.hash):
        (Inst.prototype.toString):
        (Inst):
        * JSAir/jsair-tests.yaml: Added.
        * JSAir/opcode.js:
        (Inst_forEachArg):
        (Inst_hasNonArgEffects):
        (opcodeCode):
        * JSAir/payload-gbemu-executeIteration.js:
        (createPayloadGbemuExecuteIteration):
        * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js:
        (createPayloadImagingGaussianBlurGaussianBlur):
        * JSAir/payload-jsair-ACLj8C.js:
        (createPayloadJSAirACLj8C):
        * JSAir/payload-typescript-scanIdentifier.js:
        (createPayloadTypescriptScanIdentifier):
        * JSAir/reg.js:
        (Reg.prototype.get isReg):
        (Reg.prototype.hash):
        (Reg.prototype.toString):
        * JSAir/stack_slot.js:
        (StackSlot.prototype.setOffsetFromFP):
        (StackSlot.prototype.hash):
        (StackSlot.prototype.toString):
        * JSAir/symbols.js:
        (relCondCode):
        (resCondCode):
        (doubleCondCode):
        * JSAir/test.html:
        * JSAir/tmp.js:
        (Tmp.prototype.get isReg):
        (Tmp.prototype.hash):
        (Tmp.prototype.toString):
        * JSAir/util.js:
        (roundUpToMultipleOf):
        (symbolName):

2016-06-07  Filip Pizlo  <fpizlo@apple.com>

        Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
        https://bugs.webkit.org/show_bug.cgi?id=158318

        Reviewed by Saam Barati.
        
        This adds a new benchmark for us to play with called JSAir. It's a complete ES6
        implementation of Air's allocateStack() phase along with all of Air needed to run that
        phase. This includes things like stack slots, registers, temporaries, basic blocks,
        instructions, and all of the code for iterating over, inspecting, and modifying those
        things.
        
        To make this work, JSC can now dump Air just before allocateStack() in the form of JS code
        that creates a Code object that matches exactly what C++ Air saw. This benchmark comprises
        four Air IRs:
        
        - Octane/gbemu's largest function, executeIteration.
        - Kraken/imaging-gaussian-blur's largest function in OSR entry mode, gaussuanBlur.
        - Octane/typescript's largest function that is actually hot, scanIdentifier.
        - JSAir's largest hot function, which is anonymous, so we call it by its hash (ACLj8C).
        
        This runs in about 2 seconds on my machine in JSC trunk. It includes both a commandline
        harness and a web harness. JSAir is almost exactly 100x slower in ES6 in WebKit than the
        C++ Air::allocateStack() phase on which it is based.
        
        JSAir uses the following ES6 features:
        
        - Symbol.
        - for-of.
        - arrow functions.
        - Map/Set.
        - let/const.
        - classes.
        
        All of these things are used in anger and should end up on the hot path. There is also code
        that uses Proxies, but it ends up being dead.
        
        We can improve this even more:
        I still need to add result validation: https://bugs.webkit.org/show_bug.cgi?id=158493
        I want to make it use more ES6 features: https://bugs.webkit.org/show_bug.cgi?id=158497
        
        * JSAir: Added.
        * JSAir/all.js: Added.
        * JSAir/allocate_stack.js: Added.
        (allocateStack.attemptAssignment):
        (allocateStack.assign):
        (allocateStack.interfere):
        (allocateStack.):
        (allocateStack):
        * JSAir/arg.js: Added.
        (Arg):
        (Arg.isAnyUse):
        (Arg.isColdUse):
        (Arg.isWarmUse):
        (Arg.cooled):
        (Arg.isEarlyUse):
        (Arg.isLateUse):
        (Arg.isAnyDef):
        (Arg.isEarlyDef):
        (Arg.isLateDef):
        (Arg.isZDef):
        (Arg.typeForB3Type):
        (Arg.widthForB3Type):
        (Arg.conservativeWidth):
        (Arg.minimumWidth):
        (Arg.bytes):
        (Arg.widthForBytes):
        (Arg.createTmp):
        (Arg.fromReg):
        (Arg.createImm):
        (Arg.createBigImm):
        (Arg.createBitImm):
        (Arg.createBitImm64):
        (Arg.createAddr):
        (Arg.createStack):
        (Arg.createCallArg):
        (Arg.createStackAddr):
        (Arg.isValidScale):
        (Arg.logScale):
        (Arg.createIndex):
        (Arg.createRelCond):
        (Arg.createResCond):
        (Arg.createDoubleCond):
        (Arg.createWidth):
        (Arg.prototype.get kind):
        (Arg.prototype.get isTmp):
        (Arg.prototype.get isImm):
        (Arg.prototype.get isBigImm):
        (Arg.prototype.get isBitImm):
        (Arg.prototype.get isBitImm64):
        (Arg.prototype.get isSomeImm):
        (Arg.prototype.get isAddr):
        (Arg.prototype.get isStack):
        (Arg.prototype.get isCallArg):
        (Arg.prototype.get isIndex):
        (Arg.prototype.get isMemory):
        (Arg.prototype.get isStackMemory):
        (Arg.prototype.get isRelCond):
        (Arg.prototype.get isResCond):
        (Arg.prototype.get isDoubleCond):
        (Arg.prototype.get isCondition):
        (Arg.prototype.get isWidth):
        (Arg.prototype.get isAlive):
        (Arg.prototype.get tmp):
        (Arg.prototype.get value):
        (Arg.prototype.get base):
        (Arg.prototype.get hasOffset):
        (Arg.prototype.get offset):
        (Arg.prototype.get stackSlot):
        (Arg.prototype.get index):
        (Arg.prototype.get scale):
        (Arg.prototype.get logScale):
        (Arg.prototype.get width):
        (Arg.prototype.get isGPTmp):
        (Arg.prototype.get isFPTmp):
        (Arg.prototype.get isGP):
        (Arg.prototype.get isFP):
        (Arg.prototype.get hasType):
        (Arg.prototype.get type):
        (Arg.prototype.isType):
        (Arg.prototype.isCompatibleType):
        (Arg.prototype.get isGPR):
        (Arg.prototype.get gpr):
        (Arg.prototype.get isFPR):
        (Arg.prototype.get fpr):
        (Arg.prototype.get isReg):
        (Arg.prototype.get reg):
        (Arg.isValidImmForm):
        (Arg.isValidBitImmForm):
        (Arg.isValidBitImm64Form):
        (Arg.isValidAddrForm):
        (Arg.isValidIndexForm):
        (Arg.prototype.isValidForm):
        (Arg.prototype.forEachTmpFast):
        (Arg.prototype.usesTmp):
        (Arg.prototype.forEachTmp):
        (Arg.prototype.is):
        (Arg.prototype.as):
        (Arg.prototype.forEachFast):
        (Arg.prototype.forEach):
        (Arg.extract):
        (Arg.forEachFast):
        (Arg.forEach):
        (Arg.prototype.get condition):
        (Arg.prototype.get isInvertible):
        (Arg.prototype.toString):
        * JSAir/basic_block.js: Added.
        (BasicBlock):
        (BasicBlock.prototype.get index):
        (BasicBlock.prototype.get size):
        (BasicBlock.prototype.Symbol.iterator):
        (BasicBlock.prototype.at):
        (BasicBlock.get last):
        (BasicBlock.get insts):
        (BasicBlock.get numSuccessors):
        (BasicBlock.get successors):
        (BasicBlock.get successorBlocks.):
        (BasicBlock.get successorBlocks):
        (BasicBlock.set get numPredecessors):
        (BasicBlock.get predecessors):
        (BasicBlock.get frequency):
        (BasicBlock.get headerString):
        (BasicBlock.get footerString):
        * JSAir/benchmark.js: Added.
        (benchmark):
        * JSAir/code.js: Added.
        (Code):
        (Code.prototype.addBlock):
        (Code.prototype.addStackSlot):
        (Code.prototype.newTmp):
        (Code.prototype.get size):
        (Code.prototype.at):
        (Code.prototype.Symbol.iterator):
        (Code.prototype.get blocks):
        (Code.prototype.get stackSlots):
        (Code.prototype.tmps):
        (Code.prototype.get callArgAreaSize):
        (Code.prototype.requestCallArgAreaSize):
        (Code.prototype.get frameSize):
        (Code.prototype.setFrameSize):
        (Code.prototype.toString):
        * JSAir/custom.js: Added.
        (const.ShuffleCustom.forEachArg):
        (const.ShuffleCustom.hasNonArgNonControlEffects):
        (const.PatchCustom.forEachArg):
        (const.PatchCustom.hasNonArgNonControlEffects):
        (const.CCallCustom.forEachArg):
        (const.CCallCustom.hasNonArgNonControlEffects):
        (const.ColdCCallCustom.forEachArg):
        (const.ColdCCallCustom.hasNonArgNonControlEffects):
        * JSAir/frequented_block.js: Added.
        (FrequentedBlock):
        (FrequentedBlock.prototype.toString):
        * JSAir/insertion_set.js: Added.
        (Insertion):
        (Insertion.prototype.get index):
        (Insertion.prototype.get element):
        (Insertion.prototype.lessThan):
        (InsertionSet):
        (InsertionSet.prototype.appendInsertion):
        (InsertionSet.prototype.append):
        (InsertionSet.prototype.execute):
        * JSAir/inst.js: Added.
        (Inst):
        (Inst.prototype.append):
        (Inst.prototype.clear):
        (Inst.prototype.get opcode):
        (Inst.prototype.get args):
        (Inst.prototype.visitArg):
        (Inst.prototype.forEachTmpFast):
        (Inst.prototype.forEachArg):
        (Inst.prototype.forEachTmp):
        (Inst.prototype.forEach):
        (Inst.forEachDef):
        (Inst.forEachDefWithExtraClobberedRegs):
        (Inst.prototype.get hasNonArgEffects):
        (Inst.prototype.toString):
        * JSAir/liveness.js: Added.
        (Liveness):
        (Liveness.prototype.get thing):
        (Liveness.prototype.get code):
        (Liveness.prototype.get liveAtHead):
        (Liveness.prototype.get liveAtTail):
        (Liveness.prototype.localCalc.LocalCalc):
        (Liveness.prototype.localCalc.LocalCalc.prototype.get liveSet):
        (Liveness.prototype.localCalc.LocalCalc.prototype.execute):
        (Liveness.prototype.localCalc):
        * JSAir/opcode.js: Added.
        (Inst_forEachArg):
        (Inst_hasNonArgEffects):
        * JSAir/payload-gbemu-executeIteration.js: Added.
        (createPayloadGbemuExecuteIteration):
        * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Added.
        (createPayloadImagingGaussianBlurGaussianBlur):
        * JSAir/payload-jsair-ACLj8C.js: Added.
        (createPayloadJSAirACLj8C):
        * JSAir/payload-typescript-scanIdentifier.js: Added.
        (createPayloadTypescriptScanIdentifier):
        * JSAir/reg.js: Added.
        (Reg):
        (Reg.fromReg):
        (Reg.prototype.get index):
        (Reg.prototype.get type):
        (Reg.prototype.get name):
        (Reg.prototype.get isCalleeSave):
        (Reg.prototype.get isReg):
        (Reg.prototype.toString):
        (Reg.extract):
        (Reg.forEachFast):
        (Reg.forEach):
        (newGPR):
        (Reg.gprs.Reg.fprs.Reg.calleeSaveGPRs.Reg.calleeSaveFPRs.Reg.calleeSaves):
        * JSAir/stack_slot.js: Added.
        (StackSlot):
        (StackSlot.prototype.get byteSize):
        (StackSlot.prototype.get kind):
        (StackSlot.prototype.get isLocked):
        (StackSlot.prototype.get isSpill):
        (StackSlot.prototype.get index):
        (StackSlot.prototype.ensureSize):
        (StackSlot.prototype.get alignment):
        (StackSlot.prototype.get offsetFromFP):
        (StackSlot.prototype.setOffsetFromFP):
        (StackSlot.prototype.toString):
        (StackSlot.extract):
        (StackSlot.forEachFast):
        (StackSlot.forEach):
        * JSAir/symbols.js: Added.
        * JSAir/test.html: Added.
        * JSAir/test.js: Added.
        * JSAir/tmp.js: Added.
        (Tmp):
        (Tmp.fromReg):
        (Tmp.prototype.get index):
        (Tmp.prototype.get type):
        (Tmp.prototype.get isReg):
        (Tmp.prototype.toString):
        (Tmp.extract):
        (Tmp.forEachFast):
        (Tmp.forEach):
        * JSAir/tmp_base.js: Added.
        (TmpBase.prototype.get isGP):
        (TmpBase.prototype.get isFP):
        (TmpBase.prototype.get isGPR):
        (TmpBase.prototype.get isFPR):
        (TmpBase.prototype.get reg):
        (TmpBase.prototype.get gpr):
        (TmpBase.prototype.get fpr):
        (TmpBase):
        * JSAir/util.js: Added.
        (isRepresentableAsInt32):
        (addIndexed):
        (roundUpToMultipleOf):
        (symbolName):
        (mergeIntoSet):
        (nonEmptyRangesOverlap):
        (rangesOverlap):
        (removeAllMatching):
        (swap):
        (bubble):
        (bubbleSort):
        (currentTime):
        (else.currentTime):

2016-05-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Allow JSBench to use precise time
        https://bugs.webkit.org/show_bug.cgi?id=158050

        Reviewed by Geoffrey Garen.

        * JSBench/amazon-chrome-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/amazon-chrome/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/amazon-firefox-win/urm.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/amazon-firefox/urm.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/amazon-safari/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/facebook-chrome-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/facebook-chrome/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/facebook-firefox-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/facebook-firefox/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/facebook-safari/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/google-chrome-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/google-chrome/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/google-firefox-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/google-firefox/uem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/google-safari/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/harness.js:
        (runBenchmark.window.currentTimeInMS):
        (runBenchmark.else.window.currentTimeInMS):
        * JSBench/twitter-chrome-win/rem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/twitter-chrome/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/twitter-firefox-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/twitter-firefox/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/twitter-safari/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/yahoo-chrome-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/yahoo-chrome/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/yahoo-firefox-win/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/yahoo-firefox/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):
        * JSBench/yahoo-safari/urem.js:
        (else.window.performance.window.performance.now.currentTimeInMS):
        (else.else.typeof.preciseTime.string_appeared_here.currentTimeInMS):
        (else.else.currentTimeInMS):
        (onload.cb):
        (onload):

2016-05-25  Geoffrey Garen  <ggaren@apple.com>

        replaceable own properties seem to ignore replacement after property caching
        https://bugs.webkit.org/show_bug.cgi?id=158091

        Reviewed by Darin Adler.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::doMallocOp):
        * MallocBench/MallocBench/Interpreter.h:
        * MallocBench/MallocBench/fastMallocLog.63316.ops: Added.
        * MallocBench/MallocBench/jetstream.cpp: Added.
        (benchmark_jetstream):
        * MallocBench/MallocBench/jetstream.h: Added.

2016-05-25  Keith Miller  <keith_miller@apple.com>

        Unreviewed, add JSBench to the skipped list for now since it doesn't
        work currently.

        * Skipped:

2016-05-17  Keith Miller  <keith_miller@apple.com>
        We should have JSBench in PerformanceTests
        https://bugs.webkit.org/show_bug.cgi?id=157952

        Rubber-stamped by Saam Barati.

        There are some slight changes to the layout of the test directory
        to make it work nicely with run-jsc-benchmarks. Before JSBench
        had each of the browser specific sub-tests in a sub-directory.
        These have been flattened e.g. amazon/safari/ has become
        amazon-safari/.

        * JSBench/amazon-chrome-win/urem.html: Added.
        * JSBench/amazon-chrome-win/urem.js: Added.
        * JSBench/amazon-chrome/urem.html: Added.
        * JSBench/amazon-chrome/urem.js: Added.
        * JSBench/amazon-firefox-win/urm.html: Added.
        * JSBench/amazon-firefox-win/urm.js: Added.
        * JSBench/amazon-firefox/urm.html: Added.
        * JSBench/amazon-firefox/urm.js: Added.
        * JSBench/amazon-safari/urem.html: Added.
        * JSBench/amazon-safari/urem.js: Added.
        * JSBench/browsercheck.js: Added.
        * JSBench/facebook-chrome-win/urem.html: Added.
        * JSBench/facebook-chrome-win/urem.js: Added.
        * JSBench/facebook-chrome/urem.html: Added.
        * JSBench/facebook-chrome/urem.js: Added.
        * JSBench/facebook-firefox-win/urem.html: Added.
        * JSBench/facebook-firefox-win/urem.js: Added.
        * JSBench/facebook-firefox/urem.html: Added.
        * JSBench/facebook-firefox/urem.js: Added.
        * JSBench/facebook-safari/urem.html: Added.
        * JSBench/facebook-safari/urem.js: Added.
        * JSBench/google-chrome-win/urem.html: Added.
        * JSBench/google-chrome-win/urem.js: Added.
        * JSBench/google-chrome/urem.html: Added.
        * JSBench/google-chrome/urem.js: Added.
        * JSBench/google-firefox-win/urem.html: Added.
        * JSBench/google-firefox-win/urem.js: Added.
        * JSBench/google-firefox/uem.html: Added.
        * JSBench/google-firefox/uem.js: Added.
        * JSBench/google-safari/urem.html: Added.
        * JSBench/google-safari/urem.js: Added.
        * JSBench/harness.html: Added.
        * JSBench/harness.js: Added.
        * JSBench/harness.py: Added.
        * JSBench/index.html: Added.
        * JSBench/reload.html: Added.
        * JSBench/twitter-chrome-win/rem.html: Added.
        * JSBench/twitter-chrome-win/rem.js: Added.
        * JSBench/twitter-chrome/urem.html: Added.
        * JSBench/twitter-chrome/urem.js: Added.
        * JSBench/twitter-firefox-win/urem.html: Added.
        * JSBench/twitter-firefox-win/urem.js: Added.
        * JSBench/twitter-firefox/urem.html: Added.
        * JSBench/twitter-firefox/urem.js: Added.
        * JSBench/twitter-safari/urem.html: Added.
        * JSBench/twitter-safari/urem.js: Added.
        * JSBench/yahoo-chrome-win/urem.html: Added.
        * JSBench/yahoo-chrome-win/urem.js: Added.
        * JSBench/yahoo-chrome/urem.html: Added.
        * JSBench/yahoo-chrome/urem.js: Added.
        * JSBench/yahoo-firefox-win/urem.html: Added.
        * JSBench/yahoo-firefox-win/urem.js: Added.
        * JSBench/yahoo-firefox/urem.html: Added.
        * JSBench/yahoo-firefox/urem.js: Added.
        * JSBench/yahoo-safari/urem.html: Added.
        * JSBench/yahoo-safari/urem.js: Added.

2016-05-20  Ryosuke Niwa  <rniwa@webkit.org>

        run-benchmark's results should contain Animometer's debug output
        https://bugs.webkit.org/show_bug.cgi?id=157941

        Reviewed by Stephanie Lewis.

        Made developer.html support the JSON generated by run-benchmark which stores everything under debugOutput.

        * Animometer/resources/debug-runner/animometer.js:
        (Utilities.initialize): Unwrap debugOutput in the case run-benchmark's result JSON is used.

2016-05-18  Timothy Hatcher  <timothy@apple.com>

        Make Animometer work in all browsers
        https://bugs.webkit.org/show_bug.cgi?id=157855
        rdar://problem/26338521

        Reviewed by Jon Lee.

        * Animometer/resources/runner/logo.svg: Use a symbol instead
        of putting the id on the root svg. This works in all browsers.

2016-05-07  Timothy Hatcher  <timothy@apple.com>

        Update Animometer design
        https://bugs.webkit.org/show_bug.cgi?id=157449

        Reviewed by Darin Adler.

        * Animometer/developer.html: Stop including runner/animometer.css.
        * Animometer/index.html: Udpated elements to fit new styles.

        * Animometer/resources/debug-runner/animometer.css:
        Copy the old runner/animometer.css to here so the debug runner is unaffected.

        * Animometer/resources/runner/animometer.css:
        New styles for the design. Drop flex box for broad browser support.

        * Animometer/resources/runner/animometer.js:
        (ResultsTable.clear): Use textContent.
        (window.sectionsManager.showSection): Add class to the body.
        (window.sectionsManager.setSectionScore): Use textContent, not innerHTML.

        * Animometer/resources/runner/crystal.svg: Added.
        * Animometer/resources/runner/lines.svg: Added.
        * Animometer/resources/runner/logo.svg: Added.

        * Animometer/resources/runner/tests.js: Shorten test name and title case them.

2016-05-06  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Unprefix CSS Grid Layout properties
        https://bugs.webkit.org/show_bug.cgi?id=157137

        Reviewed by Simon Fraser.

        Remove "-webkit" prefix from all the grid layout properties,
        including the display value.
        Update the source code to remove the prefix where it was used too.

        * Layout/auto-grid-lots-of-data.html:
        * Layout/fixed-grid-lots-of-data.html:
        * Layout/fixed-grid-lots-of-stretched-data.html:

2016-04-25  Geoffrey Garen  <ggaren@apple.com>

        bmalloc: Misc improvements to MallocBench
        https://bugs.webkit.org/show_bug.cgi?id=157004

        Reviewed by Darin Adler.

        * MallocBench/run-malloc-benchmarks: Added --memory and --memory_warning
        modes for focused memory testing.

        * MallocBench/MallocBench/Benchmark.cpp:
        (Benchmark::printReport): Clarified output.

        (Benchmark::currentMemoryBytes): Added compressed memory because top
        does the same. (It always happens to zero in the benchmarks we run. But
        this is good for sanity.)

        * MallocBench/MallocBench/CommandLine.cpp: Moved up to 8 runs to reduce
        variance.

        * MallocBench/MallocBench/alloc_free.cpp:
        (benchmark_alloc_free): Cycle a single allocation in order to stress
        the effect of merging on calls to madvise.

        * MallocBench/MallocBench/big.cpp:
        (benchmark_big): Graduated to 8kB-128kB because medium tests up to 8 and
        our large allocator doesn't kick in until 64kB.

        * MallocBench/MallocBench/medium.cpp:
        (benchmark_medium): Test all the way down to 1kB because our large
        allocator used to service 1kB allocations and 1kB is an interesting
        middle size where memory is unusually large but allocation throughput
        still matters.

        * MallocBench/MallocBench/stress.cpp:
        (benchmark_stress): Reduced the churn count to match stress_aligned
        because this test was taking too long to complete.

        * MallocBench/MallocBench/stress_aligned.cpp:
        (benchmark_stress_aligned): Our new large allocator can handle even
        more absurdly large values.

2016-04-25  Simon Fraser  <simon.fraser@apple.com>

        Add a content animation test that uses SVG animation.
        https://bugs.webkit.org/show_bug.cgi?id=156827

        * Animation/svg-animation.html: Added.
        * Skipped:

2016-04-22  Simon Fraser  <simon.fraser@apple.com>

        Skip two content animation tests which are only meant for iOS testing.

        * Animation/css-animation.html: Added.
        * Animation/raf-animation.html: Added.

        * Skipped:

2016-04-20  Simon Fraser  <simon.fraser@apple.com>

        Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
        https://bugs.webkit.org/show_bug.cgi?id=156827

        Add two files missing from the previous commit.

        * Animation/css-animation.html: Added.
        * Animation/raf-animation.html: Added.

2016-04-20  Simon Fraser  <simon.fraser@apple.com>

        Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
        https://bugs.webkit.org/show_bug.cgi?id=156827

        Reviewed by Stephanie Lewis.

        Two new files for the content-animation suite.

        After patching for use in the benchmark, these tests are a little different to other benchmarks.
        The test content itself does not collect performance data; the tests spit out a boilerplate JSON
        result with a placeholder for framerate, which is collected in native code.

        When run as a benchmark, test completion involves a couple of bounces between the test and MobileSafari.
        Test completion is initiated by a setTimeout() in the test, at which point location.hash is set to "#done".
        MobileSafari detects that, and asynchronously dumps performance data. Once this is complete, MobileSafari
        changes the URL has to "#submit", which triggers the XHR to the test relay that indicates the test is
        complete.

        * Animation/css-animation.html: Added.
        * Animation/raf-animation.html: Added.

2016-04-15  Jon Lee  <jonlee@apple.com>

        Animometer test could report a NaN
        https://bugs.webkit.org/show_bug.cgi?id=156646

        Reviewed by Darin Adler.
        Provisionally reviewed by Said Abou-Hallawa.

        * Animometer/tests/resources/main.js:
        (didFinishInterval): The ramp controller has a first phase where it ramps up the complexity and
        reacts based on how well the system handles the load. The assumption was that it would handle at least
        1 particle easily. That is not always the case. As a result, an interpolation calculation could
        end up setting an upper bound of NaN.

        This occurs because we never get out of the first tier, so this._lastTierComplexity is undefined.
        Now that we guarantee a minimum complexity of 1, modify the conditional to check for this._lastTierComplexity
        before interpolating the upper bound of the first ramp. In the case where the system struggles with
        1 particle, set it to currentComplexity.

2016-04-09  Jon Lee  <jonlee@apple.com>

        Update Animometer to accommodate different screens
        https://bugs.webkit.org/show_bug.cgi?id=156449

        Reviewed by Darin Adler.
        Provisionally reviewed by Said Abou-Hallawa.

        * Animometer/index.html: Wrap button in a container to add padding at the bottom.
        * Animometer/resources/debug-runner/animometer.css:
        (@media screen and (min-device-width: 1800px)): Deleted.
        (@media screen and (min-width: 1800px)): Cannot use min-device-width since it may match incorrectly.
        (screen and (max-device-height: 414px) and (orientation: landscape)): Some devices swap device width
        and height with orientation change.
        * Animometer/resources/runner/animometer.css: Similar.
        (screen and (min-device-width: 1024px) and (orientation: landscape)):
        (screen and (max-device-height: 414px) and (orientation: landscape)):
        (.frame-container): On smaller iPhones, adding 1px prevents the navigation bars from appearing.
        (@media screen and (min-device-width: 768px) and (max-device-width: 1024px)): Deleted.
        (@media (min-device-height: 768px) and (max-device-height: 1024px)): Target iPad Airs and similar.
        (@media screen and (min-device-width: 1024px) and (max-device-width: 1366px)): Deleted.
        (@media screen and (max-device-width: 1024px) and (min-device-height: 1366px)): Target iPad Pro.
        (#results footer): Add padding below the button for testing again.
        * Animometer/tests/master/multiply.html: Remove the center text.
        * Animometer/tests/master/resources/text.js: Update the test so that in every frame the text moves.
        * Animometer/tests/master/text.html: Update the text sizing depending on the size of the device.

2016-04-08  Jon Lee  <jonlee@apple.com>

        Have Animometer benchmark always start with complexity of 1
        https://bugs.webkit.org/show_bug.cgi?id=156432

        Reviewed by Ryosuke Niwa.

        * Animometer/tests/resources/main.js: Update the default Controller and RampController to
        set its minimum complexities to 1 instead of 0.

2016-04-08  Jon Lee  <jonlee@apple.com>

        Fix SVG benchmark test
        https://bugs.webkit.org/show_bug.cgi?id=156410

        Reviewed by Dean Jackson.

        * Animometer/resources/extensions.js: Update Point.zero to be a static Point.
        * Animometer/tests/simple/resources/tiled-canvas-image.js:
        (Stage.call._setupTiles): Refactor.
        * Animometer/tests/master/resources/particles.js:
        (Particle.prototype.reset): Use Point.center.
        (complexity): We are not using a gradient background anymore, so remove the +1.
        * Animometer/tests/master/resources/svg-particles.js: Update to use SVG transform
        instead of CSS transform.

2016-04-06  Jon Lee  <jonlee@apple.com>

        Update master benchmark with SVG test
        https://bugs.webkit.org/show_bug.cgi?id=156273

        Reviewed by Dean Jackson.
        Provisionally reviewed by Said Abou-Hallawa.

        Switch masks tests for SVG path test.

        * Animometer/resources/debug-runner/tests.js: Move mask test here.
        * Animometer/resources/runner/tests.js: Add SVG test here.
        * Animometer/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/master/particles.html.
        * Animometer/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/dom-particles.js.

        * Animometer/tests/master/resources/particles.js: Add minPosition for bounds checking. Prevents particle from being
        partially obscured.
        * Animometer/tests/master/resources/svg-particles.js: Added.
        (Particle): The particle is either a path object or a rect using a path as a clip. The
        same path is used either way. For each particle create a linear gradient with a random
        rotation.
        (SVGParticlesStage): Look in #shapes to see how many different kinds of paths are available.
        This makes the test more generic in case other shapes need to be tested.
        * Animometer/tests/master/svg-particles.html: Added. Have two defs, one that houses each
        particle's gradient, and one that holds the shape templates.

2016-03-27  Hunseop Jeong  <hs85.jeong@samsung.com>

        [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
        https://bugs.webkit.org/show_bug.cgi?id=148470 

        Reviewed by Darin Adler.

        * Skipped: Unskip the Bindings/event-target-wrapper test.

2016-03-23  Jon Lee  <jonlee@apple.com>

        Update focus and leaves tests
        https://bugs.webkit.org/show_bug.cgi?id=155825

        Reviewed by Simon Fraser.

        Particles would improperly disappear, before they were fully off stage. Update the calculation.
        * Animometer/tests/dom/resources/leaves.js:
        * Animometer/tests/master/resources/leaves.js:

        * Animometer/tests/master/focus.html: Update the center element styling.
        * Animometer/tests/master/resources/focus.js:
        (FocusElement.Utilities.createClass): Give enough space in the container for each particle for the blur
        to spread. It should be about 3x more space than the blur radius on each side.
        (Stage.call.initialize): Ditto for the center element.

2016-03-23  Jon Lee  <jonlee@apple.com>

        Update support for other platforms
        https://bugs.webkit.org/show_bug.cgi?id=155824

        Reviewed by Simon Fraser.

        * Animometer/resources/debug-runner/animometer.css: Remove extraneous media query. All of it should
        be handled in the release stylesheet.
        * Animometer/resources/debug-runner/animometer.js: Add support for browsers that return an HTMLCollection
        when retrieving radio elements with a name, instead of the selected value.
        * Animometer/resources/runner/animometer.css: Adjust the queries for devices of varying widths.
        (.frame-container): Move overflow:hidden to #stage.
        * Animometer/tests/master/resources/stage.css: Consolidate into tests/resources/stage.css.
        * Animometer/tests/resources/stage.css:
        (body): Remove overflow:hidden.
        (#stage): Set overflow:hidden here.
        (#center-text): Moved from master/resources/stage.css.

        Update stylesheet hrefs.
        * Animometer/tests/master/canvas-stage.html:
        * Animometer/tests/master/focus.html:
        * Animometer/tests/master/leaves.html:
        * Animometer/tests/master/multiply.html:
        * Animometer/tests/master/particles.html:
        * Animometer/tests/master/text.html: Adjust text size to fit in the device screen.

2016-03-23  Jon Lee  <jonlee@apple.com>

        Make the benchmark require device to be in landscape orientation
        https://bugs.webkit.org/show_bug.cgi?id=155822
        rdar://problem/25258650

        Reviewed by Ryosuke Niwa.

        Check that the device is in landscape orientation. If not, disable the button to start it,
        and show a warning message.

        * Animometer/developer.html: Add a message about how the browser should be set up. Include a
        warning message that appears if the orientation is incorrect on mobile devices.
        * Animometer/index.html: Ditto.

        * Animometer/resources/debug-runner/animometer.css: Migrate the .hidden rule into the release
        stylesheet. Update the style to accommodate the new UI.
        * Animometer/resources/runner/animometer.css:

        * Animometer/resources/runner/animometer.js:
        (window.benchmarkController.initialize): Add the orientation listener is needed.
        (window.benchmarkController.addOrientationListenerIfNecessary): Only mobile devices need this. Check
        to see for support of window.orientation.
        (window.benchmarkController._orientationChanged): Toggle the warning based on whether we match the
        landscape query. Set a state variable, which is needed for the debug harness. Call updateStartButtonState.
        (window.benchmarkController.updateStartButtonState):
        * Animometer/resources/debug-runner/animometer.js: Change _updateStartButtonState to return
        a boolean about whether at least one test is selected. That will be used in
        benchmarkController.updateStartButtonState(). Move the load event listener to the release version.
        (window.benchmarkController.updateStartButtonState): Override the release version, and also check
        that at least one test is selected.

2016-03-22  Geoffrey Garen  <ggaren@apple.com>

        MallocBench: consolidate regression testing for aligned allocation
        https://bugs.webkit.org/show_bug.cgi?id=155762

        Reviewed by Michael Saboff.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        * MallocBench/MallocBench/memalign.cpp: Removed.
        * MallocBench/MallocBench/memalign.h: Removed. The stress_aligned test
        covers this and much more.

        * MallocBench/MallocBench/stress_aligned.cpp:
        (benchmark_stress_aligned): Include specific tests for extreme sizes
        and alignments.

2016-03-21  Jon Lee  <jonlee@apple.com>

        Update benchmark tests
        https://bugs.webkit.org/show_bug.cgi?id=155723

        Reviewed by Darin Adler.
        Provisionally reviewed by Said Abou-Hallawa.

        Add quadratic and bezier segments to the canvas path test.

        * Animometer/resources/runner/tests.js: Some of the query strings are unnecessary.
        Rename the test.
        * Animometer/tests/master/resources/canvas-stage.js:
        (tune): Update to be able to take an array of possible constructors. Choose one randomly.
        * Animometer/tests/master/resources/canvas-tests.js:
        (CanvasLinePoint.Utilities.createClass): Move the point selection out to a separate
        function called randomPoint() for reuse. Move X_LOOPS, Y_LOOPS, and offsets into the
        class definition.
        (randomPoint): Scale the grid down a little bit so that the lines along the edge of the
        canvas are not cut off when the stroke size is thick.
        (CanvasQuadraticSegment): Added.
        (CanvasBezierSegment): Added.
        (SimpleCanvasStage): Pass in an array of the different segment types. Since line segments
        are short compared to the curved ones, make it twice as likely to render a line segment.
        (SimpleCanvasStage.animate): Update the drawing code so that we render all line segments.

        Add a helper method that selects a random element from an array.

        * Animometer/tests/resources/main.js:
        (Stage.randomElementInArray): Select a random element from the provided array.

        * Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Refactor.
        * Animometer/tests/dom/resources/leaves.js: Ditto.
        * Animometer/tests/master/resources/dom-particles.js: Ditto.
        * Animometer/tests/master/resources/image-data.js: Ditto.
        * Animometer/tests/master/resources/leaves.js: Ditto.
        * Animometer/tests/simple/resources/simple-canvas-paths.js: Ditto.

        Add canvas tests that includes all stroke and fill paths. This makes it possible to avoid having to
        include the full simple canvas suite for perf testing.

        * Animometer/resources/debug-runner/tests.js: Add new tests. Move the canvas test into the Canvas
        suite.
        * Animometer/tests/simple/resources/simple-canvas-paths.js: Add a CanvasStroke and CanvasFill particle
        that random selects an object to render.

        * Animometer/resources/debug-runner/tests.js: Move 3D suite before basic canvas suite.
        When updating the perf bot script, we will include the suites up to this one, but exclude
        the basic canvas suite.

        Move compositing transforms test to HTML suite and remove the empty Miscellaneous suite.

        * Animometer/resources/debug-runner/tests.js:
        * Animometer/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/misc/compositing-transforms.html.
        * Animometer/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js.

        Clean up miscellaneous test suite. Add a canvas ellipse test, and remove the other
        canvas tests.

        * Animometer/resources/debug-runner/tests.js: Add ellipse tests to the simple suite.
        * Animometer/tests/misc/canvas-electrons.html: Removed.
        * Animometer/tests/misc/canvas-stars.html: Removed.
        * Animometer/tests/misc/resources/canvas-electrons.js: Removed.
        * Animometer/tests/misc/resources/canvas-stars.js: Removed.
        * Animometer/tests/simple/resources/simple-canvas-paths.js: Add ellipse primitives.

        Merge text tests together into one.

        * Animometer/resources/runner/tests.js: Remove international.html.
        * Animometer/tests/master/international.html: Removed.
        * Animometer/tests/master/resources/text.js:
        (animate): Update styling. Manually calculate gradients for the shadow particles.
        Reduce the step size for y direction to avoid cutting text off at the margins. Increase
        step for x since there will be a little more room.
        * Animometer/tests/master/text.html: Add more translations and lay it out in a table.

2016-03-20  Jon Lee  <jonlee@apple.com>

        Add a link to show debug data
        https://bugs.webkit.org/show_bug.cgi?id=155724

        Reviewed by Simon Fraser.

        * Animometer/developer.html: Attach the onclick handler to the score.
        * Animometer/index.html: Ditto.

2016-03-18  Dean Jackson  <dino@apple.com>

        Add a basic WebGL test to Animometer
        https://bugs.webkit.org/show_bug.cgi?id=155475
        <rdar://problem/25156860>

        Reviewed by Simon Fraser and Jon Lee.

        Add a pretty simple WebGL test to Animometer
        which tries to draw a number of animated triangles.
        The result still needs a bit of tuning.

        * Animometer/resources/debug-runner/tests.js: Add a new
        Suite for "3D" tests.
        * Animometer/tests/3d/resources/webgl.js: Added.
        * Animometer/tests/3d/webgl.html: Added.

2016-03-18  Jon Lee  <jonlee@apple.com>

        Add support for statically linking to a specific test
        https://bugs.webkit.org/show_bug.cgi?id=155631

        Rubber-stamped by Darin Adler.

        * Animometer/developer.html: Update to call restartBenchmark instead so that it works for
        both the preset and the manually set test sessions.
        * Animometer/resources/debug-runner/animometer.css:
        (.tree .link): Style the "link" UI.
        * Animometer/resources/debug-runner/animometer.js: Move updateDisplay from suitesManager
        to optionsManager since this is a visual option and has nothing to do with the suites
        settings. Update the construction of the test UI by including a "link" after each test.
        Clicking on that link brings up a JS prompt with a URL and a query string with the current
        parameters of the controller, and selected test. Pasting this URL into the location bar will
        automatically start running the selected test.
        (suitesManager.suitesFromQueryString): Iterate through the Suites and tests and find the one
        that matches the provided parameters. Returns an object similar to the form in
        suitesManager.updateLocalStorageFromUI.
        (benchmarkController.initialize): After settings up the events and options, try parsing the
        query string and running the benchmark immediately. Otherwise, fall back to the form.
        (benchmarkController.startBenchmark): Store the options and suites into member variables for
        reuse in restartBenchmark.
        (benchmarkController.startBenchmarkImmediatelyIfEncoded): Convert the query string to an object.
        If that's successful, find the suite and test referenced in the query string. Start the benchmark if
        the search for the test succeeded.
        * Animometer/resources/extensions.js:
        (Utilities.stripNonASCIICharacters): Helper method to convert the name of the suite and test
        into a query-string-friendly version.
        (Utilities.convertObjectToQueryString): Helper method to convert an object to query string
        format.
        (Utilities.convertQueryStringToObject): Helper method to convert query string into an object
        with properties and values.

2016-03-16  Jon Lee  <jonlee@apple.com>

        Add a new benchmark test
        https://bugs.webkit.org/show_bug.cgi?id=155570

        Reviewed by Simon Fraser.

        New Leaves test includes various image sizes and opacity.

        * Animometer/resources/debug-runner/tests.js: Add it to the HTML test suite.
        * Animometer/tests/dom/leaves.html: Added.
        * Animometer/tests/dom/resources/leaves.js: Added. Override the
        (Particle.call.reset): Uses a range of sizes, and opacity.
        (Particle.call.animate): Opacity goes up then down. When it hits 0, reset the particle.
        (Particle.call.move): Set transform and opacity.
        * Animometer/tests/master/resources/leaves.js: Get rid of the closure so that it
        can be used in this test. Update the relative path so that it works in both the master
        and dom test suite.

2016-03-15  Simon Fraser  <simon.fraser@apple.com>

        Add developer Animometer test that bounces P3-tagged images
        https://bugs.webkit.org/show_bug.cgi?id=155511

        Reviewed by Tim Horton.
        
        Add a test for rendering performance of tagged images. The 5 images are tagged
        with the Display P3 colorspace.

        * Animometer/resources/debug-runner/tests.js:
        * Animometer/tests/bouncing-particles/bouncing-tagged-images.html: Added.
        * Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Added.
        * Animometer/tests/bouncing-particles/resources/image1.jpg: Added.
        * Animometer/tests/bouncing-particles/resources/image2.jpg: Added.
        * Animometer/tests/bouncing-particles/resources/image3.jpg: Added.
        * Animometer/tests/bouncing-particles/resources/image4.jpg: Added.
        * Animometer/tests/bouncing-particles/resources/image5.jpg: Added.

2016-03-09  Jon Lee  <jonlee@apple.com>

        Enhance existing Animometer tests
        https://bugs.webkit.org/show_bug.cgi?id=155261

        Reviewed by Simon Fraser.

        * Animometer/tests/master/resources/canvas-tests.js: Add a gradient to
        the filled circles. To expose more of the gradient, add another circle.
        (SimpleCanvasStage.call.animate): For each frame, create a gradient with
        undulating stop points and colors. Fill the circles twice; once with
        the solid color, and once with the gradient.

        * Animometer/tests/master/resources/dom-particles.js: Refactor the
        emission variables into a separate stage for this test. Add a colorOffset
        variable to make the colors of each particle slightly different, since
        the ramp controller can add large numbers of particles all at once, which
        would otherwise get all the same color.
        * Animometer/tests/master/resources/particles.js:
        (initialize): Remove the code specific to the SVG mask test.

        * Animometer/tests/master/resources/image-data.js:
        (initialize): Remove unused local variable.
        * Animometer/tests/master/resources/multiply.js:
        (initialize): Make the test harder by adding more total particles.

2016-03-09  Jon Lee  <jonlee@apple.com>

        Add text tests
        https://bugs.webkit.org/show_bug.cgi?id=155257

        Reviewed by Simon Fraser.

        * Animometer/resources/extensions.js:
        (UnitBezier.Utilities.createClass): Add a class that computes Bezier points
        assuming that two of the control points are at (0,0) and (1,1). Taken from
        WebCore/platform/graphics/UnitBezier.h
        * Animometer/resources/runner/tests.js: Add a test for English text and one
        for international text.
        * Animometer/tests/master/international.html: Added.
        * Animometer/tests/master/resources/text.js: Added. The test assumes there is
        #template div which it will copy. The copies are placed behind the template, and
        are set with different colors each frame. They are moved around with CSS transform.
        * Animometer/tests/master/text.html: Added.

        Remove the other text tests, since these ones cover the same techniques.
        * Animometer/tests/text/layering-text.html: Removed.
        * Animometer/tests/text/resources/layering-text.js: Removed.
        * Animometer/tests/text/resources/text-boxes.js: Removed.
        * Animometer/tests/text/text-boxes.html: Removed.
        * Animometer/resources/debug-runner/tests.js:

2016-03-09  Jon Lee  <jonlee@apple.com>

        Add a new image test
        https://bugs.webkit.org/show_bug.cgi?id=155232

        Reviewed by Dean Jackson.
        Provisionally reviewed by Said Abou-Hallawa.

        The image test renders PNGs and moves them with translate and rotate
        transforms. Each particle has a lifetime, and when the lifetime ends or
        the particle goes offscreen, it resets itself somewhere on the stage.

        * Animometer/resources/debug-runner/tests.js: Remove the CSS bouncing PNG
        images test, because this one tests the same technique.
        * Animometer/resources/runner/tests.js: Added here as "Leaves".
        * Animometer/tests/master/leaves.html: Added.
        * Animometer/tests/master/resources/particles.js: Refactor out the parts
        specific to the DOM particles test. Consequently make velocity a public
        member.
        (initialize): The options parameter is never used, so remove it.
        (animate): Remove unused local variable.
        * Animometer/tests/master/resources/leaves.js: Maintains a focal point that
        moves back and forth across the canvas. That point affects the velocity
        of the particles. When the focal point is on the leftmost side, it is
        between [-6, -2], and set in reset(). When the focal point is on the rightmost
        side, it will be from [2, 6].
        * Animometer/tests/master/resources/dom-particles.js: Move JS specific to
        this test here from particles.js.

        New images.
        * Animometer/tests/master/resources/compass100.png: Added.
        * Animometer/tests/master/resources/console100.png: Added.
        * Animometer/tests/master/resources/contribute100.png: Added.
        * Animometer/tests/master/resources/debugger100.png: Added.
        * Animometer/tests/master/resources/inspector100.png: Added.
        * Animometer/tests/master/resources/layout100.png: Added.
        * Animometer/tests/master/resources/performance100.png: Added.
        * Animometer/tests/master/resources/script100.png: Added.
        * Animometer/tests/master/resources/shortcuts100.png: Added.
        * Animometer/tests/master/resources/standards100.png: Added.
        * Animometer/tests/master/resources/storage100.png: Added.
        * Animometer/tests/master/resources/styles100.png: Added.
        * Animometer/tests/master/resources/timeline100.png: Added.

2016-03-03  Jon Lee  <jonlee@apple.com>

        Add ability to retrieve raw data from release harness
        https://bugs.webkit.org/show_bug.cgi?id=155026

        Reviewed by Simon Fraser.

        * Animometer/developer.html: Remove the special UI in the debug
        harness.
        * Animometer/resources/runner/animometer.css: Add styles for the
        overlay.
        * Animometer/resources/runner/animometer.js: Let 'j' show the JSON
        results, but only if the overlay doesn't exist. Add 'esc' key to dismiss
        the overlay.
        (window.benchmarkController.selectResults): Cycle the cases around
        so that the first 's' press selects both the benchmark score and
        the individual test scores.
        * Animometer/resources/debug-runner/animometer.css: Remove
        unneeded rules.
        * Animometer/resources/debug-runner/animometer.js: Make the same
        call to handleKeyPress.

2016-03-03  Jon Lee  <jonlee@apple.com>

        Make sure multiply test particles have at least some opacity
        https://bugs.webkit.org/show_bug.cgi?id=155027

        Reviewed by Simon Fraser.

        * Animometer/tests/master/resources/multiply.js:
        (initialize): Have the elements spin a little faster to make it
        more obvious when the system is being stressed.
        (_addTile):
        (animate): Make sure each element being animated has at least 1%
        opacity.

2016-03-03  Jon Lee  <jonlee@apple.com>

        Update image test
        https://bugs.webkit.org/show_bug.cgi?id=154962

        Rubber-stamped by Darin Adler.

        * Animometer/tests/master/image-data.html: Make each canvas have a compositing layer.
        * Animometer/tests/master/resources/image-data.js:
        (initialize): Update to load multiple images serially.
        (_loadImage):
        (tune): Use display instead of visibility. When showing an element anew, move it somewhere else.
        (_createTestElement): Set up the element, refactor out placement of element to _refreshElement.
        (_refreshElement): Place element in a tile grid.
        (animate):
        (_getRandomNeighboringPixelIndex): Use a more conservative distribution to make the effect last a little longer.
        * Animometer/tests/master/resources/compass.svg: Added.
        * Animometer/tests/master/resources/console.svg: Added.
        * Animometer/tests/master/resources/contribute.svg: Added.
        * Animometer/tests/master/resources/debugger.svg: Added.
        * Animometer/tests/master/resources/inspector.svg: Added.
        * Animometer/tests/master/resources/layout.svg: Added.
        * Animometer/tests/master/resources/performance.svg: Added.
        * Animometer/tests/master/resources/script.svg: Added.
        * Animometer/tests/master/resources/shortcuts.svg: Added.
        * Animometer/tests/master/resources/standards.svg: Added.
        * Animometer/tests/master/resources/storage.svg: Added.
        * Animometer/tests/master/resources/styles.svg: Added.
        * Animometer/tests/master/resources/timeline.svg: Added.

2016-03-02  Jon Lee  <jonlee@apple.com>

        Add some new controllers, and refine tests
        https://bugs.webkit.org/show_bug.cgi?id=154914

        Reviewed by Simon Fraser.

        Improve tests.

        * Animometer/tests/master/focus.html: Move each particle into a layer. Put the particle
        in a container element. Expand the container element by the max blur radius, and clip
        overflow. This way, when the blur is applied, it avoids causing layer resizes.
        * Animometer/tests/master/resources/focus.js:
        (FocusElement.Utilities.createClass): Create a container element, and put the particle
        inside.
        (hide): Set display:none.
        (show): Set display:block.
        (animate): Apply filters to the container element.
        (FocusStage.call.initialize): Instead of inserting and removing elements from the DOM,
        keep them in the stage, but set the display style instead. Use this._offsetIndex to
        keep track of which elements are displayed.
        (FocusStage.call.animate): Move some calculations around to avoid doing unneeded math.
        (FocusStage.call.getBlurValue): Make sure elements are always blurred.
        (FocusStage.call.getOpacityValue): Make sure elements have some opacity.
        * Animometer/tests/master/resources/multiply.js: Have the particles on the edge of the
        stage appear less black when the complexity gets large enough.
        (tune): Have this._distanceFactor calculate the factor. Avoid calculating square root each
        frame.

2016-03-02  Jon Lee  <jonlee@apple.com>

        Add some new controllers, and refine tests
        https://bugs.webkit.org/show_bug.cgi?id=154914

        Reviewed by Simon Fraser.

        Add a controller that centers around 30 fps instead of 60 fps.

        * Animometer/developer.html: Add a new option.
        * Animometer/resources/debug-runner/animometer.js:
        * Animometer/resources/runner/animometer.js:
        (this._processData.findRegression): When calculating the complexity-frameLength regression,
        check the controller, and use a 30 fps baseline if needed.
        * Animometer/resources/statistics.js:
        (Regression.Utilities.createClass): Update to allow clients to specify the baseline
        frame length.
        * Animometer/tests/resources/main.js:
        (tune): Override some of the constants in RampController. Move those constants out for
        easier reading.

        Add a fixed controller, with no step.

        * Animometer/developer.html: Add a controller that takes no step.
        * Animometer/resources/debug-runner/animometer.js:
        * Animometer/tests/resources/main.js:
        (Rotater.Utilities.createClass):

        Switch to ramp controller as default.

        * Animometer/developer.html: Increase the test length to 20 seconds.
        * Animometer/resources/debug-runner/animometer.js: Rename the "adjustment" field to "controller"
        since that is a more accurate description.
        * Animometer/resources/debug-runner/graph.js:
        * Animometer/resources/runner/animometer.js: Update preferences for release suite.

2016-02-26  Jon Lee  <jonlee@apple.com>

        Address Dean's comments in 154673.

        * Animometer/developer.html:
        * Animometer/resources/debug-runner/animometer.js:
        * Animometer/resources/debug-runner/graph.js:

2016-02-25  Jon Lee  <jonlee@apple.com>

        Update animation benchmark and tests
        https://bugs.webkit.org/show_bug.cgi?id=154673

        Reviewed by Dean Jackson.

        Update test visuals.

        * Animometer/tests/master/resources/canvas-tests.js:
        (CanvasLineSegment.Utilities.createClass): Line segments near the edge of the stage get clipped.
        Update circle position and radius to minimize impact.
        * Animometer/tests/master/resources/particles.js: Get rid of rotating gradient background, and
        have 3 locations for emitting particles.
        * Animometer/tests/master/resources/multiply.js: Update distance metric so that fringe tiles get
        more color.
        (initialize): Fix some of the math for laying out the tiles.
        (animate): When a tile isn't used, set visibility: hidden.

2016-02-24  Jon Lee  <jonlee@apple.com>

        Update animation benchmark and tests
        https://bugs.webkit.org/show_bug.cgi?id=154673

        Reviewed by Dean Jackson.

        Update the ramp controller.

        The controller refines the complexity interval to test across.

        * Animometer/resources/statistics.js: Add functions that estimate cumulative distribution function.
        (Regression): For the flat regression, force the first segment to be at 60 fps.
        (valueAt): Add convenience function to return interpolated value based on the regression used.
        (_calculateRegression): Include the number of points included for both segments, and the piecewise
        errors.
        * Animometer/tests/resources/math.js: Make the Kalman estimator subclass Experiment, and allow it
        to be reset.

        * Animometer/tests/resources/main.js: Initialize the tier such that it starts at 10^0 = 1.
        Increase the number of ramps. Maintain three FPS thresholds-- the frame rate of interest, a limit
        on the lowest FPS we care to go for later interpolation, and a minimum FPS threshold we want to
        aim for each ramp. Also keep three estimators: a running average of the change point, a minimum
        boundary for each ramp, and an estimator for all the frames within an interval. The first two
        are used to determine the parameters of the next ramp, and the latter allows us to refine the
        parameters.
        (update): During the tier phase, it is possible that the highest complexity possible for a test
        won't stress the system enough to trigger stopping the tier phase and transitioning to the ramps.
        If the complexity doesn't change when going to the next tier, we've maxed the test out, and move
        on. When the tier phase completed, turn off Controller.frameLengthEstimator, which estimates the
        FPS at each tier.
        (tune): At each interval, look at the confidence distribution of being on the 60 FPS side or the
        slow side. If the slowest FPS we achieve at the ramp's maximum complexity is not at least
        _fpsRampSlowThreshold, then increase the maximum complexity. If we ever achieve 60 FPS, increase
        the ramp's minimum complexity to that level. If, at an even lower complexity, a glitch causes the
        FPS to drop, we reset the minimum complexity.

        Have the bootstrap calculation occur between tests. Clean up harness.

        * Animometer/resources/debug-runner/animometer.js: Run bootstrap after a test has
        completed to avoid doing all of it at the end before showing the results. Clean up
        parameters being passed around.
        * Animometer/resources/debug-runner/tests.js:
        (text):
        * Animometer/resources/runner/animometer.js:
        (this._processData.calculateScore): Save the results to the same object holding the data.
        (this._processData._processData): In the case where a file is dragged, calculate the score
        serially. Grab the results object and move it to the results variable and remove it from
        the data object. This avoids serializing the results into the JSON.
        (this._processData.findRegression): Include the samples used for bootstrapping. Reduce the
        resample size to shorten the wait.
        * Animometer/resources/runner/benchmark-runner.js:
        * Animometer/resources/statistics.js:
        (bootstrap): Update how bootstrapData is sorted. In some regression results the mix of
        floats and integers causes an alphabetical sort to occur.
        * Animometer/resources/strings.js:

        Add meta charset so that encodings between harness and test match.

        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-css-images.html:
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
        * Animometer/tests/master/canvas-stage.html:
        * Animometer/tests/master/focus.html:
        * Animometer/tests/master/image-data.html:
        * Animometer/tests/master/multiply.html:
        * Animometer/tests/master/particles.html:
        * Animometer/tests/misc/canvas-electrons.html:
        * Animometer/tests/misc/canvas-stars.html:
        * Animometer/tests/misc/compositing-transforms.html:
        * Animometer/tests/simple/simple-canvas-paths.html:
        * Animometer/tests/simple/tiled-canvas-image.html:
        * Animometer/tests/template/template-canvas.html:
        * Animometer/tests/template/template-css.html:
        * Animometer/tests/template/template-svg.html:
        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/text-boxes.html:

        Update test harness reporting.

        * Animometer/developer.html: Add missing meta charset.
        * Animometer/index.html: Remove unnecessary utf-8 declaration.
        * Animometer/resources/debug-runner/animometer.css: Add convenience classes for
        formatting the results table.
        * Animometer/resources/debug-runner/animometer.js: Adjust which stats are shown.
        * Animometer/resources/debug-runner/tests.js: Display bootstrapping statistics.
        * Animometer/resources/strings.js: Move strings not used by the release harness.

        Switch to a pseudo-random number generator.

        * Animometer/resources/statistics.js: Add a Pseudo class, with a simple
        pseudo-random number generator.
        (_calculateRegression): Reset the generator before running bootstrap.
        (bootstrap): Deleted.

        Replace Math.random with Pseudo.random.
        * Animometer/tests/master/resources/canvas-tests.js:
        * Animometer/tests/master/resources/focus.js:
        * Animometer/tests/master/resources/particles.js:
        * Animometer/tests/resources/main.js:

        Use bootstrapping to get confidence interval in the breakpoint.

        For the ramp controller, calculate the piecewise regression, and then use
        bootstrapping in order to find the 95% confidence interval. Use the raw data.

        * Animometer/developer.html: Default to the complexity graph. Add a legend
        checkbox to toggle visibility of the bootstrap score and histogram.
        * Animometer/resources/debug-runner/animometer.css: Make some more space to show
        the old raw and average scores in the legend. Add new styles for the data.
        * Animometer/resources/debug-runner/graph.js:
        (_addRegressionLine): Allow passing an array for the variance bar tied to the
        regression line. Now |stdev| is |range|.
        (createComplexityGraph): Add bootstrap median, and overlay a histogram of
        the bootstrap samples. Switch raw samples from circles to X's.
        (onComplexityGraphOptionsChanged): Allow toggling of the bootstrap data.
        (onGraphTypeChanged): Move the regressions for the raw and average samples to the
        legend. In the subtitle use the bootstrap median, and include the 95% confidence
        interval.
        * Animometer/resources/runner/animometer.js:
        (this._processData.findRegression): Factor out the code that determines which
        samples to include when calculating the piecewise regression. For series that have
        many samples, or a wider range of recorded complexities, throw away the 2.5%
        lowest and highest samples before calculating the regression. Keep all samples
        if the number of samples to regress is small or the range of complexities is
        narrow.
        (this._processData._calculateScore): Factor out regression calculation to
        findRegression(). Bootstrap the change point of the regression. The score is the
        median.
        * Animometer/resources/statistics.js:
        (_calculateRegression): Correct an issue in the calculation of the regression, where
        the denominator can be 0.
        (bootstrap): Template for bootstrapping. Create a bootstrap sample array, Create
        re-samples by random selection with replacement. Return the 95% confidence samples,
        the bootstrap median, mean, and the data itself.
        * Animometer/resources/strings.js: Add bootstrap.
        * Animometer/tests/resources/main.js:
        (processSamples): Don't prematurely cut the sample data.

        Fix graph drawing.

        * Animometer/resources/debug-runner/animometer.js: Add spacing in the JSON output.
        Multiple tests output a lot of JSON and can hang when selecting JSON with no whitespace.
        * Animometer/resources/debug-runner/animometer.css:
        (#complexity-graph .series.raw circle): Update the color.
        * Animometer/resources/debug-runner/graph.js: Use the FPS axis instead of the
        complexity axis, which can vary in domain. For determining the complexity domain,
        only use samples after samplingTimeOffset.

        Allow dropping results JSON.

        * Animometer/developer.html: Add a button.
        * Animometer/resources/debug-runner/animometer.css:
        * Animometer/resources/debug-runner/animometer.js: Read the data and go straight
        to the dashboard. With JSON output, write out only the options and the raw data.

        Teach the harness to evaluate the samples and determine the test score.

        This will allow us to update how the score is calculated separately from the samples recorded.
        This also prepares the harness to be able to accept JSON of prior runs.

        * Animometer/resources/strings.js: Clean up and remove unneeded strings and reduce some of the
        hierarchy.
        * Animometer/resources/debug-runner/tests.js: Update to use the new strings.

        * Animometer/tests/resources/main.js: Allow all controllers to show a complexity-FPS graph.
        (_processComplexitySamples): Factor out some of the sample processing done in the ramp
        controller for the benefit of the other controllers. |complexitySamples| contains a list of
        samples. Sort the samples by complexity. Optionally remove the top x% of samples.
        Group them, and calculate distribution of samples within the same complexity, and add those as
        new entries into |complexityAverageSamples|.
        (Controller.processSamples): Move the code responsible for determining the complexity and FPS
        scores out to ResultsDashboard. The structure of the data returned by the controller is:

        {
            controller: [time-regression, time-regression, ...], // optional, data specific to controller
            marks: [...],
            samples: {                    // all of the sample data
                controller: [...],
                complexity: [...],        // processed from controller samples
                complexityAverage: [...], // processed from complexity samples
            }
        }

        (AdaptiveController.processSamples): Adding the target frame length is no longer necessary; we
        now pass the test options to the graph.
        (Regression): Move to statistics.js.
        * Animometer/resources/statistics.js: Move Regression to here. Add a check if the sampling range
        only contains one sample, since we cannot calculate a regression from one sample point.

        Teach the test harness to evaluate the data.
        * Animometer/resources/runner/animometer.js:
        (ResultsDashboard): Store the options used to run the test and the computed results/score separately
        from the data. The results are stored as:

        {
            score: /* geomean of iteration score */,
            iterationsResults: [
                {
                    score: /* geomean of tests */,
                    testsResults: {
                        suiteName: {
                            testName: {
                                controller: {
                                    average:
                                    concern:
                                    stdev:
                                    percent:
                                },
                                frameLength: { ... },
                                complexity: {
                                    complexity:
                                    stdev:
                                    segment1:
                                    segment2:
                                },
                                complexityAverage: { ... }
                            },
                            testName: { ... },
                        },
                        ... next suite ...
                    }
                },
                { ...next iteration... }
            ]
        }

        * Animometer/resources/debug-runner/animometer.js: Pass options around instead of relying
        on what was selected in the form. This will later allow for dropping previous results, and
        using those runs' options when calculating scores.
        (ResultsTable._addGraphButton): Simplify button action by using attached test data.
        * Animometer/resources/debug-runner/graph.js: Refactor to use the data.

        Consolidate JS files, and move statistics out to a separate JS.

        Preparation for having the Controller only handle recording and storage of the samples,
        and leave the evaluation of the test score out to the harness. Move Experiment to
        a new statistics.js, where Regression will also eventually go. Get rid of algorithm.js
        and move it to utilities.js since the Heap is used only for Experiments.

        * Animometer/tests/resources/algorithm.js: Removed. Heap is in utilities.js.
        * Animometer/tests/resources/sampler.js: Removed. Experiment is in statistics.js,
        Sampler in main.js.
        * Animometer/tests/resources/main.js: Move Sampler here.
        * Animometer/resources/statistics.js: Added. Move Statistics and Experiment here.
        * Animometer/resources/extensions.js: Move Heap here. Attach static method to create
        a max or min heap to Heap, instead of a new Algorithm object.

        Update JS files.
        * Animometer/developer.html:
        * Animometer/index.html:
        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-css-images.html:
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
        * Animometer/tests/master/canvas-stage.html:
        * Animometer/tests/master/focus.html:
        * Animometer/tests/master/image-data.html:
        * Animometer/tests/master/multiply.html:
        * Animometer/tests/master/particles.html:
        * Animometer/tests/misc/canvas-electrons.html:
        * Animometer/tests/misc/canvas-stars.html:
        * Animometer/tests/misc/compositing-transforms.html:
        * Animometer/tests/simple/simple-canvas-paths.html:
        * Animometer/tests/simple/tiled-canvas-image.html:
        * Animometer/tests/template/template-canvas.html:
        * Animometer/tests/template/template-css.html:
        * Animometer/tests/template/template-svg.html:
        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/text-boxes.html:

        Fix the cursor in the graph analysis when the min
        complexity is not 0.

        * Animometer/resources/debug-runner/graph.js:
        (_addRegression):
        (createComplexityGraph):

2016-02-23  Geoffrey Garen  <ggaren@apple.com>

        Fix some issues in MallocBench
        https://bugs.webkit.org/show_bug.cgi?id=154600

        Reviewed by Oliver Hunt.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj: Make nimlang.ops
        a part of the build so that it copies to the right place for execution.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::Interpreter): Don't try to open .ops files for writing
        because we're only going to read and we might need extra permissions to
        write.

        (Interpreter::~Interpreter): Give more context when opening a file fails
        to help with debugging.

        * MallocBench/MallocBench/stress.cpp:
        (benchmark_stress): Reduce iterations to complete in less than 10 seconds.

2016-02-23  Michael Saboff  <msaboff@apple.com>

        Unreviewed change to revert extraneous changes made part of change set 196955.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::doMallocOp):
        (Interpreter::Thread::switchTo):
        (writeData): Deleted.

2016-02-19  Michael Saboff  <msaboff@apple.com>

        MallocBench: Added recording for nimlang website, new recording details and added new options
        https://bugs.webkit.org/show_bug.cgi?id=154485

        Reviewed by Geoff Garen.

        Added new capabilities to MallocBench.  These include:
            Added a recording of http://nim-lang.org/docs/lib.html.
            Added thread id to the recording and the ability to playback switching threads in MallocBench
            Added aligned allocations to recordings and the ability to playback
            Added --use-thread-id option to honor recorded thread ids
            Added --detailed-report to output remaining allocations by size after playback
            Added --no-warmup to not run the warm up iteration

        Changed the way that options are passed down to the benchmarks.  Instead of passing individual
        boolean or numeric option values, just pass a reference the CommandLine itself.  Each benchmark
        can access the options that are appropriate.  The Benchmark class also uses the options for
        is parallel, run counts and warm up.

        Added thread id and aligned malloc to the Op by noticing that structure padding and Opcode allowed
        for another 32 bits of data.  Breaking that unused 32 bits into a 16 bit thread id value and a
        16 bit log base 2 of the alignment for aligned malloc allowed for existing recordings to playback
        without any incompatibilities.

        Threaded operation is simulated by creating threads as needed.  As long as the next Op's thread id
        is the same as the last, operation continues as normal.  When the next Op has a different thread id,
        we switch to that thread using the shared Op stream to continue playing back.  There is a mutex to
        assure that only one thread is really running at a time and a condition variable used to wait
        that the current thread id matches each block thread's thread id.  This doesn't simulate true
        concurrent threading, but is instead plays back Ops recorded for multiple thread faithfully.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        (deallocateHeap):
        (Benchmark::Benchmark):
        (Benchmark::runOnce):
        (Benchmark::run):
        * MallocBench/MallocBench/Benchmark.h:
        (Benchmark::isValid):
        * MallocBench/MallocBench/CommandLine.cpp:
        (CommandLine::printUsage):
        * MallocBench/MallocBench/CommandLine.h:
        (CommandLine::isValid):
        (CommandLine::benchmarkName):
        (CommandLine::isParallel):
        (CommandLine::useThreadID):
        (CommandLine::detailedReport):
        (CommandLine::warmUp):
        (CommandLine::heapSize):
        (CommandLine::runs):
        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::Interpreter):
        (Interpreter::run):
        (Interpreter::readOps):
        (Interpreter::doOnSameThread):
        (Interpreter::switchToThread):
        (Interpreter::detailedReport):
        (compute2toPower):
        (writeData):
        (Interpreter::doMallocOp):
        (Interpreter::Thread::Thread):
        (Interpreter::Thread::stop):
        (Interpreter::Thread::~Thread):
        (Interpreter::Thread::runThread):
        (Interpreter::Thread::waitToRun):
        (Interpreter::Thread::switchTo):
        * MallocBench/MallocBench/Interpreter.h:
        (Interpreter::Thread::isMainThread):
        * MallocBench/MallocBench/alloc_free.cpp: Added.
        (benchmark_alloc_free):
        * MallocBench/MallocBench/alloc_free.h: Added.
        * MallocBench/MallocBench/balloon.cpp:
        (benchmark_balloon):
        * MallocBench/MallocBench/balloon.h:
        * MallocBench/MallocBench/big.cpp:
        (benchmark_big):
        * MallocBench/MallocBench/big.h:
        * MallocBench/MallocBench/churn.cpp:
        (benchmark_churn):
        * MallocBench/MallocBench/churn.h:
        * MallocBench/MallocBench/facebook.cpp:
        (benchmark_facebook):
        * MallocBench/MallocBench/facebook.h:
        * MallocBench/MallocBench/flickr.cpp:
        (benchmark_flickr):
        (benchmark_flickr_memory_warning):
        * MallocBench/MallocBench/flickr.h:
        * MallocBench/MallocBench/fragment.cpp:
        (validate):
        (benchmark_fragment):
        (benchmark_fragment_iterate):
        * MallocBench/MallocBench/fragment.h:
        * MallocBench/MallocBench/list.cpp:
        (benchmark_list_allocate):
        (benchmark_list_traverse):
        * MallocBench/MallocBench/list.h:
        * MallocBench/MallocBench/main.cpp:
        (main):
        * MallocBench/MallocBench/medium.cpp:
        (benchmark_medium):
        * MallocBench/MallocBench/medium.h:
        * MallocBench/MallocBench/memalign.cpp:
        (test):
        (benchmark_memalign):
        * MallocBench/MallocBench/memalign.h:
        * MallocBench/MallocBench/message.cpp:
        (benchmark_message_one):
        (benchmark_message_many):
        * MallocBench/MallocBench/message.h:
        * MallocBench/MallocBench/nimlang.cpp: Added.
        (benchmark_nimlang):
        * MallocBench/MallocBench/nimlang.h: Added.
        * MallocBench/MallocBench/nimlang.ops: Added.
        * MallocBench/MallocBench/realloc.cpp:
        (benchmark_realloc):
        * MallocBench/MallocBench/realloc.h:
        * MallocBench/MallocBench/reddit.cpp:
        (benchmark_reddit):
        (benchmark_reddit_memory_warning):
        * MallocBench/MallocBench/reddit.h:
        * MallocBench/MallocBench/stress.cpp:
        (deallocate):
        (benchmark_stress):
        * MallocBench/MallocBench/stress.h:
        * MallocBench/MallocBench/stress_aligned.cpp:
        (benchmark_stress_aligned):
        * MallocBench/MallocBench/stress_aligned.h:
        * MallocBench/MallocBench/theverge.cpp:
        (benchmark_theverge):
        (benchmark_theverge_memory_warning):
        * MallocBench/MallocBench/theverge.h:
        * MallocBench/MallocBench/tree.cpp:
        (benchmark_tree_allocate):
        (benchmark_tree_traverse):
        (benchmark_tree_churn):
        * MallocBench/MallocBench/tree.h:
        * MallocBench/run-malloc-benchmarks:

2016-02-11  Jon Lee  <jonlee@apple.com>

        Fix a missing refactoring.

        * Animometer/tests/master/resources/multiply.js:
        (animate): Move to Utilities.lerp.
        (_lerp): Deleted.

2016-02-10  Jon Lee  <jonlee@apple.com>

        Add new benchmark tests.
        https://bugs.webkit.org/show_bug.cgi?id=154063

        Provisionally reviewed by Said Abou-Hallawa.

        Add tests for get/put image data, filters, opacity, and css transforms.

        * Animometer/resources/runner/benchmark-runner.js:
        (_runBenchmarkAndRecordResults): Update the body background color to match that of
        the stage.
        (this._runNextIteration): Clear the background color style for the results page.
        * Animometer/resources/runner/tests.js:
        * Animometer/tests/master/focus.html: Added.
        * Animometer/tests/master/image-data.html: Added.
        * Animometer/tests/master/multiply.html: Added.
        * Animometer/tests/master/resources/focus.js: Added.
        * Animometer/tests/master/resources/image-data.js: Added.
        * Animometer/tests/master/resources/multiply.js: Added.
        * Animometer/tests/master/resources/stage.css: Move common styles out.
        * Animometer/tests/resources/main.js: Update Stage.randomBool to use Math.random.
        Add Stage.randomSign for randomly setting a direction. Add the notion of the
        current timestamp of the test to Benchmark, since some animations cycle through
        colors and rely on an incremental counter like the time.

2016-02-09  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add internal benchmark tests for CSS mix-blend-modes and filters
        https://bugs.webkit.org/show_bug.cgi?id=154058

        Provisionally reviewed by Jon Lee.

        * Animometer/resources/debug-runner/tests.js: Include the new tests in the
        "HTML suite" of the debug runner.

        * Animometer/resources/extensions.js:
        (Utilities.browserPrefix):
        (Utilities.setElementPrefixedProperty): Utility functions to allow setting
        prefixed style properties.

        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        Set the mix-blend-mode and the filter to some random values if the options
        of the test requested that.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        (parseShapeParameters): Parse the url options "blend" and "filter" and set
        the corresponding flags.

        * Animometer/tests/resources/main.js:
        (randomStyleMixBlendMode):
        (randomStyleFilter): Return random mix-blend-mode and filter.

2016-02-08  Jon Lee  <jonlee@apple.com>

        Add a ramp controller
        https://bugs.webkit.org/show_bug.cgi?id=154028

        Provisionally reviewed by Said Abou-Hallawa.

        Enhance the graph to include a complexity-fps graph, in addition
        to the time graph.

        * Animometer/developer.html: Add a ramp option.
        * Animometer/resources/debug-runner/animometer.css: Update the style.
        * Animometer/resources/strings.js: Flatten the Strings.text constants.
        * Animometer/resources/debug-runner/animometer.js:
        (ResultsTable.call._addGraphButton): Refactor.
        (ResultsTable.call._addTest): Add regression data.
        (benchmarkController): Add a form that allows the user to switch between the two forms,
        Add a form that allows the user to toggle different data. Hide certain header columns
        depending on the selected controller.
        * Animometer/resources/debug-runner/graph.js: Add the complexity regressions.
        * Animometer/resources/debug-runner/tests.js: Add headers for the ramp results.
        * Animometer/resources/runner/animometer.js:
        (ResultsTable): If a header is disabled don't include them in _flattenedHeaders.
        * Animometer/tests/resources/main.js:
        (Controller): Allow options to specify the capacity for sample arrays.
        (Regression): A piecewise regression that tries to fit a slope and a flat profile.
        (_calculateRegression): Options can fix the slope and bias when calculating the minimal
        error. Sweep across the samples in time (which could be backward depending on the controller)
        and calculate the intersection point.
        (RampController): This controller assumes that the target frame rate is below
        58 FPS. It runs in two stages. The first stage quickly determines the order of
        magnitude of objects needed to stress the system by the setting the complexity
        to increasingly difficult tiers. Perform a series of ramps descending from a
        high-water mark of complexity. The complexity needed to reach the target frame
        length is done by performing a piecewise regression on each ramp, and track a
        running average of these values. For the next ramp, make that running average
        the center of the ramp. With a minimum complexity of 0, the high-water mark is
        twice that average. The score is based on the highest complexity that can
        reach 60 fps.

2016-02-08  Jon Lee  <jonlee@apple.com>

        Address Said's comments on the benchmark, and do some clean up.

        * Animometer/developer.html:
        * Animometer/resources/debug-runner/animometer.css: Add styles for averages.
        * Animometer/resources/debug-runner/animometer.js: Use the right
        Strings constants.
        * Animometer/resources/debug-runner/graph.js:
        (_addRegressionLine): Add missing code to draw the line and standard
        deviation highlight.
        (onGraphTypeChanged): Remove unneeded variables
        (onTimeGraphOptionsChanged):
        * Animometer/resources/runner/benchmark-runner.js:
        (_runBenchmarkAndRecordResults): Rename samplers to suiteResults and
        _suitesSamplers to _suitesResults.
        * Animometer/tests/resources/main.js:
        (results): Call processSamples().
        (update): Change sampling timestamp comparison.
        (_animateLoop): Move shouldStop call to before the update.
        * Animometer/tests/resources/sampler.js:
        (process): Rename to processSamples().

2016-02-07  Jon Lee  <jonlee@apple.com>

        Teach Controller to measure intervals, and turn off the frame length estimator.

        * Animometer/tests/resources/main.js: Default interval length is 100 ms.
        (start): Set the first interval.
        (_measureAndResetInterval): Reports the average frame length of the interval that just
        completed, and sets up the next interval.
        (update): If there is no length, then just use the estimator per frame, otherwise the
        estimator measures per interval. Add a didFinishInterval for subclasses to process
        prior to recording the sample. Update tune() to include whether an interval had
        finished.
        (StepController): Step controllers don't measure on an interval basis.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Minor refactoring. Rename Controller._estimator to Controller._frameLengthEstimator
        and switch the parameters for start(), update(), and tune(), so that the timestamp
        is first and stage is second.

        * Animometer/tests/resources/main.js:

2016-02-07  Jon Lee  <jonlee@apple.com>

        Move ResultsTable functionality not needed for release tests out.
        Move reporting of score and mean to selection of the time-based graph.

        * Animometer/developer.html: Rename graph-options to time-graph-options.
        * Animometer/resources/debug-runner/animometer.js:
        (DeveloperResultsTable): Moved from runner/animometer.js. Switch from mean
        values to "average" objects which can hold stdev. Move graph button and
        calculation of noisy measurements here. Sophisticated header processing
        is not needed in release suite.
        (populateTable): Use DeveloperResultsTable.
        * Animometer/resources/debug-runner/graph.js: Pull time graph creation to
        its own function, and add a new onGraphTypeChanged handler in preparation
        of a complexity graph to be added later.
        * Animometer/resources/runner/animometer.js:
        (ResultsTable): Simplify to just handle test names and scores.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Tests: reuse objects already made.

        Avoid thrash of object creation and removal by maintaining an index that
        moves along the array as the adjust values change. If the tune value
        requires more objects than the maximum size of the object array, then create
        new objects. This means that the object array size never decreases.

        * Animometer/tests/master/resources/canvas-stage.js: Maintain a separate
        offsetIndex. For these tests, we want to avoid drawing the oldest objects,
        so the scene will draw the object at offsetIndex to the end of the array.
        (tune): Reverse the logic since "removal" of objects is much simpler and
        involves simply changing the offsetIndex.
        (animate): Update the for loop to draw from offsetIndex to the end.
        (complexity): Update the definition.
        * Animometer/tests/master/resources/canvas-tests.js: Maintain a separate
        offsetIndex. For these tests, we want to avoid drawing the newest objects,
        so the scene will draw the object at index 0 to the object at offsetIndex.
        (SimpleCanvasStage.animate): Fly-by removal of local stage variable,
        which is unneeded. Update the for loop to draw from offsetIndex to the end.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (SimpleCanvasStage.animate): Update the for loop to draw from 0 to
        offsetIndex.
        * Animometer/tests/simple/resources/simple-canvas.js:
        (tune): Update logic. Here, offsetIndex represents the boundary of the last
        index to render.
        (animate): Update the for loop to draw from 0 to offsetIndex.
        (complexity): Update the definition.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Tests: refactor and update styles.

        * Animometer/tests/resources/main.js: Add helper methods that return
        a color that hue rotates based on the date, and a counter value that
        increases based on the date. Fix randomInt() to not bias against the min and
        max values.

        * Animometer/tests/master/resources/canvas-tests.js: Use new helper methods.
        * Animometer/tests/master/resources/dom-particles.js: Ditto.
        * Animometer/tests/master/resources/particles.js: Ditto.
        * Animometer/tests/simple/resources/simple-canvas-paths.js: Refactor to
        use a rotating color instead of a random color. The fast switching of color
        is too vivid to watch.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        (BouncingSvgParticlesStage.call.createGradient): Fix the gradient so
        that the last stop is located at the end.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Refactor tune() to not return the complexity of the scene.

        We have stage.complexity() now, so returning the complexity through tune
        is unnecessary.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/master/resources/canvas-stage.js:
        * Animometer/tests/master/resources/particles.js:
        * Animometer/tests/misc/resources/canvas-electrons.js:
        * Animometer/tests/misc/resources/canvas-stars.js:
        * Animometer/tests/resources/main.js:
        * Animometer/tests/simple/resources/simple-canvas.js:
        * Animometer/tests/simple/resources/tiled-canvas-image.js:
        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/text/resources/layering-text.js:

2016-02-07  Jon Lee  <jonlee@apple.com>

        Make the fixed controller a step controller instead. Halfway through the test
        it will bump up the complexity 4-fold. Calculate the step timestamp using options
        instead of a separate parameter to the Controller constructor.

        * Animometer/developer.html: Change value to "step"
        * Animometer/resources/debug-runner/animometer.js:
        (window.suitesManager.updateEditsElementsState): Show number inputs when set to "step".
        * Animometer/tests/resources/main.js:
        (update): Provide a hook for subclasses to tune.
        (StepController): Maintain a flag determining whether we've stepped, and the time
        we should step.
        (Benchmark): Use the new StepController.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Adjust the FPS graph scale.

        Instead of making the FPS graph linearly scale, scale it based on the frame length,
        but show the data in terms of FPS. Because it is inversely proportional, and most
        of the data never gets below 20, concentrate the axis from 20-60 FPS, since otherwise
        over half of the available graph space ends up blank.

        This means we should convert all of the FPS data to frame length data.

        * Animometer/resources/debug-runner/graph.js: Update the domain to be based on
        frame length in milliseconds instead of FPS. Update the cursor to consider all of the
        values being shown, and then pick the min and max values to represent the length of the
        cursor.
        * Animometer/resources/runner/animometer.js:
        * Animometer/resources/strings.js:
        * Animometer/tests/resources/main.js:
        (processSamples): Add the ability to only sample a range of the data instead of everything
        after an offset index. Update sampler to record the frame lengths instead of the frame
        rate.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Add option to use different methods for retrieving a timestamp.

        * Animometer/developer.html: Add performance.now and Date.now options.
        * Animometer/resources/runner/animometer.js: Default to performance.now.
        (window.benchmarkController.startBenchmark):
        * Animometer/tests/resources/main.js: Tie the desired method to _getTimestamp.
        (run): Use _getTimestamp.
        (_animateLoop): Ditto.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Allow adding any number of markers to the graph. The markers can be labeled
        and contain timestamp and sample index data. Make it a part of the controller
        rather than keeping it in the sampler.

        * Animometer/resources/debug-runner/animometer.css: Add styles for markers
        * Animometer/resources/debug-runner/graph.js: Create the markers and add
        text labels.
        * Animometer/resources/runner/animometer.js: Assume the samplingTimeOffset
        is just one of the marks provided.
        * Animometer/resources/strings.js: Add Strings.json.marks.
        * Animometer/tests/resources/main.js:
        (Controller): Keep marks here. They are keyed by the marker name, so no two
        markers should have the same name.
        (recordFirstSample): Refactor to use mark.
        (mark): Allows for arbitrary data if needed later. The timestamp maintained
        is relative to the absolute start timestamp.
        (containsMark): Checks whether a mark with a specific comment exists.
        (processSamples): Removes the _startTimestamp offset from the marks before
        setting it in results.
        * Animometer/tests/resources/sampler.js: Remove marks.

2016-02-07  Jon Lee  <jonlee@apple.com>

        Get rid of options member variable in Benchmark.

        Options are only needed when initializing the stage or benchmark, so there's no
        need to also keep a reference to it.

        * Animometer/tests/resources/main.js: Get rid of options variable in Benchmark.
        Pass options to Controllers and Stages.
        (Controller.Utilities.createClass):
        (Benchmark.Utilities.createClass):
        (get options): Deleted.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        * Animometer/tests/master/resources/canvas-stage.js:
        * Animometer/tests/master/resources/canvas-tests.js:
        * Animometer/tests/master/resources/particles.js:
        * Animometer/tests/misc/resources/canvas-electrons.js:
        * Animometer/tests/misc/resources/canvas-stars.js:
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        * Animometer/tests/simple/resources/tiled-canvas-image.js:
        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/text/resources/layering-text.js:

2016-02-07  Jon Lee  <jonlee@apple.com>

        Update how the benchmark is run
        https://bugs.webkit.org/show_bug.cgi?id=153960

        Provisionally reviewed by Said Abou-Hallawa.

        Introduce the notion of a Controller. It is responsible for recording, updating,
        and processing the statistics and complexity of the benchmark. This allows
        plugging in different Controllers.

        This strips most of the functionality from Animator and BenchmarkState, so fold
        what's left into Benchmark. Now, Benchmarks only own a stage and a controller, but
        are responsible for driving the animation loop.

        Rewrite Animator._shouldRequestAnotherFrame into two different Controllers. One
        maintains a fixed complexity, and the other adapts the complexity to meet a
        fixed FPS.

        Fix the Kalman estimator to be modeled on a scalar variable with no model.

        * Animometer/tests/resources/main.js: Remove BenchmarkState and Animator, and
        replace it with a Controller. Add a FixedController and refactor the previous controller
        to an AdaptiveController.

        (Controller): Controllers own the estimator and the sampler. When a new frame is
        displayed, the animation loop calls update(). The estimator and sampler record
        stats, then tune. Samplers can track multiple series of data. The basic controller
        tracks timestamp, complexity, and estimated frame rate.
                The Kalman estimation is based on the frame length rather than the frame
        rate. Because FPS is inverse proportional to frame length, in the case where the measured
        frame length is very small, the FPS ends up being a wildly large number (in the order of
        600-1000 "FPS"), and it pulls the estimator up drastically enough that it takes a while
        for it to settle back down. Using frame length reduces the impact of these spikes.
                Converging the estimation takes enough time to avoid initializing it immediately
        when the benchmark starts. Instead, the benchmark runs for a brief period of time (100ms)
        before running it in earnest. Allow controllers an opportunity to set the complexity
        before starting recording.
                When the benchmark is complete, the controller has an opportunity to process
        the samples. The default implementation calculates the raw FPS based on the time
        difference of the samples, and calculates the complexity score. This is moved from
        Benchmark.processSamples.

        (Controller): Initialize timestamps. These are at first relative to the start of the
        benchmark, but are offset by the absolute start time during start(). By default maintain
        3 data series, but subclasses can override.
        (start): Calls recordFirstSample() for subclasses to override if needed.
        (recordFirstSample): For basic controller, start sampling at the beginning.
        (update): Update the frame length estimator and sample.
        (shouldStop): Checks that the time is before _endTimestamp.
        (results): Returns the processed samples.
        (processSamples): Iterate through the sample data and collate them. Include scores.

        (FixedComplexityController): Controller that tunes the stage to the desired complexity
        prior to starting, and keeps it at that complexity.

        (AdaptiveController): Have the estimator estimate the interval frame rate instead of the
        raw frame rate.
                The previous version of this controller ignored the frame that came after the
        adjustment. The raw FPS show that whatever noise the scene change adds is negligible
        compared to the noise of the system overall. Stop ignoring that frame and include all
        frames in the measurements.

        (Benchmark): Remove dependency on animator, and instantiate a runner based on what is
        selected. Most of the loop's functionality is in Controller, so remove here.
        (Benchmark.run): Remove start() since it is only called from run(), and fold it in here.
        (Benchmark._animateLoop): Fold in from Animator.animateLoop. Let the benchmark run for
        a brief period before calling Controller.start().

        * Animometer/tests/resources/math.js: Fix the Kalman estimator. The filter estimates
        a scalar variable, and makes basic assumptions regarding the model. As a result
        none of the linear algebra classes are needed, so remove Matrix, Vector3, and Matrix3.
        (SimpleKalmanEstimator): Calculate the gain based on the provided process and
        measurement errors.
        (KalmanEstimator): Deleted.
        (IdentityEstimator): Deleted.
        (PIDController): Refactor to use the Utilities.createClass() helper.

        The Kalman filter algorithm is explained here http://greg.czerniak.info/guides/kalman1/.
        The state, represented by a scalar, is the estimated frame length. There is no user
        transition of the state, and the state is the same as the measurement. With this model,
        the estimation error converges, so calculate the gain ahead of time.

        * Animometer/developer.html: Remove fixed-after-warmup since it is not useful.
        Replace the option to toggle the estimator, and make it possible to customize the
        estimator's error parameters. Show raw FPS by default, and remove interval FPS,
        which will be shown instead of the filtered raw FPS.
        * Animometer/resources/debug-runner/animometer.css: Put the header behind the graph.
        Remove #intervalFPS rules; move the color to #filteredFPS.
        * Animometer/resources/debug-runner/graph.js:
        (updateGraphData): Update the hr style to force the layout to be calculated
        correctly. Change the tick format to be in terms of seconds, since the timestamps
        are in milliseconds. Remove interval data.
        * Animometer/resources/runner/animometer.js:
        (window.benchmarkController.startBenchmark): Set Kalman parameters.
        * Animometer/resources/runner/benchmark-runner.js:
        (_runBenchmarkAndRecordResults): When a benchmark completes, expect it to return
        the final data, rather than passing a sampler from the controller. This avoids
        needing to expose the sampler variable in the benchmark.
        * Animometer/tests/resources/sampler.js:
        (process): Move the setting of the target frame rate to AdaptiveController.

2016-02-06  Jon Lee  <jonlee@apple.com>

        Code clean up: Move Rotater function closer to Stage static methods.
        The Rotater is used together with those methods; keep them close.

        * Animometer/tests/resources/main.js:

2016-02-06  Jon Lee  <jonlee@apple.com>

        Update the JS includes due to ResultsTable move.

        * Animometer/developer.html:
        * Animometer/index.html:

2016-02-06  Jon Lee  <jonlee@apple.com>

        Move createElement and createSVGElement to Utilities.

        * Animometer/resources/extensions.js:
        (Utilities.createElement): Added.
        (Utilities.createSVGElement): Added.
        (DocumentExtension.createElement): Deleted.
        (DocumentExtension.createSvgElement): Deleted.

        * Animometer/resources/debug-runner/animometer.js:
        * Animometer/resources/runner/animometer.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:

2016-02-06  Jon Lee  <jonlee@apple.com>

        Add a convenience function for creating a class.

        The pattern for creating a class is common enough to add as a Utilities
        helper function. It also makes it easy to collapse class definitions when
        editing.

        * Animometer/resources/debug-runner/animometer.js: Move ProgressBar definition,
        since it is only used here.
        * Animometer/resources/runner/animometer.js: Move ResultsDashboard and
        ResultsTable definition, since it is only used here.
        * Animometer/resources/extensions.js: Move Utilities definition to the top. Convert
        Point, Insets, SimplePromise.
        (ProgressBar): Moved to animometer.js.
        (ResultsDashboard): Moved to animometer.js.
        (ResultsTable): Moved to animometer.js.
        * Animometer/resources/runner/benchmark-runner.js: Convert BenchmarkRunnerState,
        BenchmarkRunner.
        * Animometer/tests/resources/main.js: Convert Rotater, Stage, Animator, Benchmark.
        * Animometer/tests/resources/sampler.js: Convert Experiment, Sampler.

        Convert test primitives.
        * Animometer/tests/master/resources/canvas-tests.js: Convert CanvasLineSegment,
        CanvasArc, CanvasLinePoint.
        * Animometer/tests/simple/resources/simple-canvas-paths.js: Convert CanvasLineSegment,
        CanvasLinePoint, CanvasQuadraticSegment, CanvasQuadraticPoint, CanvasBezierSegment,
        CanvasBezierPoint, CanvasArcToSegment, CanvasArcToSegmentFill, CanvasArcSegment,
        CanvasArcSegmentFill, CanvasRect, CanvasRectFill.
        * Animometer/tests/simple/resources/tiled-canvas-image.js: Convert CanvasImageTile.

2016-02-06  Jon Lee  <jonlee@apple.com>

        Minor improvements to debug harness.

        * Animometer/developer.html:
        * Animometer/resources/debug-runner/animometer.css:
        (#suites): Put the complexity text boxes closer to the test names.
        (#options):
        (#rawFPS circle): Make the interval FPS appear as a separate data series, with a line.
        (#intervalFPS path):
        (#intervalFPS circle):
        * Animometer/resources/debug-runner/animometer.js:
        (window.optionsManager.updateLocalStorageFromUI): Convert number inputs from text.
        (window.suitesManager._onChangeTestCheckbox): Refactor to take a checkbox.
        (window.suitesManager._createTestElement): Enhance such that typing into the complexity
        input will automatically select that test for running.
        (window.suitesManager.updateLocalStorageFromJSON): Make the harness work for private
        browsing.
        * Animometer/resources/debug-runner/graph.js: Separate the intervalFPS data, and show
        more accuracy in timestamps.

2016-02-06  Jon Lee  <jonlee@apple.com>

        Refactor helper methods for getting random values for a stage.

        Instead of requiring a Stage instance, just attach it to the Stage object.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        * Animometer/tests/master/resources/canvas-tests.js:
        * Animometer/tests/master/resources/particles.js:
        * Animometer/tests/misc/resources/canvas-electrons.js:
        * Animometer/tests/misc/resources/canvas-stars.js:
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/resources/main.js:
        * Animometer/tests/simple/resources/simple-canvas-paths.js:

2016-02-05  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add a new graphics test for CanvasRenderingContext2D functions: getImageData and putImageData
        https://bugs.webkit.org/show_bug.cgi?id=151716

        Reviewed by Darin Adler.

        The purpose of this test is to measure the performance of getImageData
        and putImageData functions. This test draws a background on the canvas
        and then gets some random tiles from this background and draw them in
        destinations different from their original sources.

        * Animometer/resources/debug-runner/tests.js: Adding the new test to the canvas simple tests suite.

        * Animometer/resources/extensions.js:
        (Array.prototype.shuffle): Shuffles the elements of an array.

        (Point.zero): Returns a new Point object whose x and y are equal zero.
        (Point.prototype.str): Used for debugging the Point object.

        * Animometer/tests/simple/resources/tiled-canvas-image.js: Added.
        (CanvasImageTile):
        (CanvasImageTile.prototype.getImageData):
        (CanvasImageTile.prototype.putImageData):
        (Stage.call.initialize):
        (Stage.call._createTiles):
        (Stage.call._nextTilePosition):
        (Stage.call.tune):
        (Stage.call._drawBackground):
        (Stage.call.animate):
        (Stage.call.complexity):
        (Stage.call):
        * Animometer/tests/simple/tiled-canvas-image.html: Added.

2016-01-07  Jon Lee  <jonlee@apple.com>

        Fix new test.

        * Animometer/resources/runner/tests.js: Wrong URL from an
        old patch.
        * Animometer/tests/master/particles.html:
        * Animometer/tests/master/resources/dom-particles.js:
        (Particle.call.reset): Figured out a simpler way to set up
        the particles.
        (this.move.reset): Deleted.
        (this.move._applyAttributes): Deleted.
        * Animometer/tests/master/resources/particles.js:
        (Particle): Call move() after reset().

2016-01-07  Jon Lee  <jonlee@apple.com>

        Update benchmark test suite
        https://bugs.webkit.org/show_bug.cgi?id=152679

        Reviewed by Simon Fraser.

        Add a new test. The test has a rotating background
        gradient, and does a better job physically simulating
        particles.

        * Animometer/resources/extensions.js: Teach Point to take constants as well as other Points.
        (Point.prototype.length): Added.
        (Point.prototype.normalize): Added.
        * Animometer/resources/runner/tests.js: Add the test to the master suite.
        * Animometer/tests/master/particles.html: Added.
        * Animometer/tests/master/resources/particles.js: Added. Parent class for different kinds of particles.
        (Particle):
        (Particle.prototype.reset): If the particle starts slowing down in terms of its animation,
        reset it.
        (Particle.prototype.animate): Bounce off the walls elastically, and include gravity.
        (Particle.prototype.move): Subclasses should override.
        (ParticlesStage): Stage includes a rotating gradient background.
        * Animometer/tests/master/resources/dom-particles.js: Added. Creates a <div> and adds it to
        the stage.
        * Animometer/tests/resources/star.svg: Added.

2016-01-03  Jon Lee  <jonlee@apple.com>

        Update benchmark test suite
        https://bugs.webkit.org/show_bug.cgi?id=152679

        Reviewed by Simon Fraser.

        Move algorithm.js and sampler.js to tests/ and benchmark-runner.js to runner/.

        Needed by both harnesses.
        * Animometer/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/benchmark-runner.js.
        * Animometer/developer.html:
        * Animometer/index.html:

        Needed only by the tests. Move to tests/. Statistics, in sampler.js, is used by ResultsDashboard, so move that
        into extensions.js.
        * Animometer/resources/extensions.js:
        * Animometer/tests/resources/algorithm.js: Renamed from PerformanceTests/Animometer/resources/algorithm.js.
        * Animometer/tests/resources/sampler.js: Renamed from PerformanceTests/Animometer/resources/sampler.js.
        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-css-images.html:
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
        * Animometer/tests/master/canvas-stage.html:
        * Animometer/tests/misc/canvas-electrons.html:
        * Animometer/tests/misc/canvas-stars.html:
        * Animometer/tests/misc/compositing-transforms.html:
        * Animometer/tests/simple/simple-canvas-paths.html:
        * Animometer/tests/template/template-canvas.html:
        * Animometer/tests/template/template-css.html:
        * Animometer/tests/template/template-svg.html:
        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/text-boxes.html:

2016-01-07  Jon Lee  <jonlee@apple.com>

        Update benchmark test suite
        https://bugs.webkit.org/show_bug.cgi?id=152679

        Reviewed by Simon Fraser.

        Fix tests for other browsers.

        * Animometer/resources/extensions.js:
        (Point.elementClientSize): Some browsers return 0 for SVG clientWidth and clientHeight.
        Use getBoundingClientRect() instead.
        * Animometer/tests/misc/resources/canvas-electrons.js:
        (CanvasElectron.prototype._draw): Some browsers don't support ellipse.

2016-01-07  Jon Lee  <jonlee@apple.com>

        Add a waitUntilReady() step
        https://bugs.webkit.org/show_bug.cgi?id=152862

        Reviewed by Simon Fraser.

        Add a waitUntilReady() callback that lets the benchmark complete
        its setup before running the benchmark.

        * Animometer/tests/resources/main.js:
        (Benchmark.prototype.run): First call waitUntilReady, which returns
        a promise. When the promise resolves, run everything that was in this
        function.
        (Benchmark.prototype.waitUntilReady): Default implementation returns
        a resolved promise.
        (Benchmark.prototype.resolveWhenFinished): Deleted.
        * Animometer/tests/template/resources/template-canvas.js:
        (new.TemplateCanvasStage.waitUntilReady): Example on how to override.

2016-01-03  Jon Lee  <jonlee@apple.com>

        Update data reporting and analysis
        https://bugs.webkit.org/show_bug.cgi?id=152670

        Reviewed by Simon Fraser.

        Show new graph data. Provide controls to show different series data. Provide an
        interactive cursor that shows the data at a given sample.

        * Animometer/developer.html: Add a nav section in #results. Each part of the graph
        has a checkbox for visual toggling, as well as companion spans to contain the data.
                The numbers will always be shown even if the SVG isn't.
        * Animometer/resources/debug-runner/animometer.css:
        (#suites): Adjust spacing when doing fixed complexity.
        (#test-graph nav): Place the nav in the upper right corner.
        (#test-graph-data > svg): Fix the FPS scale from 0-60. It makes the raw FPS goes past
        that scale. Allow it to show.
        (.target-fps): Add a dotted line for where the benchmark is supposed to settle for FPS.
        (#cursor line): The cursor contains a line and highlight circles for the data being shown.
        (#cursor circle):
        (#complexity path): This and rules afterward are named by series type.
        (#complexity circle):
        (#filteredFPS path):
        (#filteredFPS circle):
        (#rawFPS path):
        (#intervalFPS circle):
        (.left-samples): Deleted.
        (.right-samples): Deleted.
        * Animometer/resources/debug-runner/animometer.js:
        (initialize): Add a "changed" listener when the checkboxes change in the nav.
        (onBenchmarkOptionsChanged): Renamed.
        (showTestGraph): All graph data is passed in as graphData instead of as arguments.
        * Animometer/resources/debug-runner/graph.js: Extend BenchmarkController. When showing
        a new graph, call updateGraphData(). It creates all of the d3 graphs. onGraphOptionsChanged()
        toggles the data on and off.
        (updateGraphData): Add the axes. Add the average lines and markers for sample time and
        target FPS. Add the cursor group. Use helper function addData() to add the data. On top of
        everything add a transparent area which will catch all of the mouse events. When the mouse
        moves in the graph, find the closest data point, show the data in the nav area, and highlight
        the data points.
        (addData): Adds a line and circle for each data point. Also adds a highlight cursor with a
        size a little larger than the circle radius for the data points.
        (onGraphOptionsChanged): Called when data is visually toggled.
        (showOrHideNodes): Helper function to toggle the .hidden class.
        * Animometer/resources/extensions.js:
        (ResultsDashboard.prototype.get data): Get rid of the arguments for _processData.
        (ResultsTable.prototype._addGraphButton): Shove all of the graph data into a singular object.

        Producing the JSON can take a while with all of the data. Make it on-demand with a
        button.

        * Animometer/resources/debug-runner/animometer.js:
        (showResults): When showing the results, don't serialize the JSON data. Move that to...
        (showJSONResults): ...here. Remove the button.

        * Animometer/developer.html: Add a button. The button will remove itself and populate
        the textarea with the JSON data.
        * Animometer/resources/debug-runner/animometer.css:
        (.hidden): Add a universal hidden class.
        (#results button.small-button): Promote the small-button styles to the whole results
        section for use in the JSON button.
        (#results button.small-button:active):
        (#results-data button.small-button): Deleted.
        (#results-data button.small-button:active): Deleted.

        Refactor how Animator does its recording.

        * Animometer/tests/resources/math.js: Create a new, simple estimator that just returns
        the same interval frame rate for adjustment.
        * Animometer/tests/resources/main.js:
        (Animator): Remove _dropFrameCount, and make variables more accurate described.
        (Animator.prototype.initialize): Use the identity estimator instead of using a bool.
        (Animator.prototype._intervalTimeDelta): Rename, only used internally.
        (Animator.prototype._shouldRequestAnotherFrame): Assume we drop one frame for adjustment
        of the scene. If we are within the number of frames to measure for the interval, just
        record the timestamp. Otherwise we are ready to evaluate and adjust the scene. Record
        the interval frame rate and the estimator's frame rate.

        Avoid processing the data through the Experiment while the test is running. Reconfigure
        the sampler to just record the raw samples. After the test is done, run the samples through
        the Experiment to get the score.

        * Animometer/resources/sampler.js:
        (Experiment): Fold _init() into the constructor since nobody else will call it. This is not
        needed until the test concludes, so remove startSampling(). Clients should just call sample().
        (Sampler): Pre-allocate arrays given the number of data points being recorded, and a capacity
        of how many samples will be used. The processor is a called when it's time to process the data
        since that is the client also telling the Sampler what to record.
                Introduce the notion of marks as well, which allows the client to mark when an
        event occurs. When we mark sample start, we can attach the timestamp there, instead of storing
        it separately.
        (Sampler.prototype.startSampling): Deleted. Clients should just call record().
        (Sampler.prototype.record): The data to record is passed in as variable arguments.
        (Sampler.prototype.mark): When adding a mark, a client needs to provide a unique string, and
        can provide extra data object for later retrieval.
        (Sampler.prototype.process): Renamed from toJSON. Trim the sampling arrays to what was used.
        Call the processor to process the samples.
        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Call process().

        * Animometer/resources/strings.js: Add some new strings, remove the graph ones since they are
        not used.
        * Animometer/tests/resources/main.js:
        (Benchmark): Create a sampler with 4 series. The maximum number of points expected is the
        number of seconds multiplied by 60 fps. Benchmark, as a client of the Sampler, knows about all
        of the data being added to the Sampler. It is added through record(), and processed through
        processSamples().
        (Benchmark.prototype.update): Mark when we've passed warmup and are starting to sample. Include
        the timestamp in the custom data for the mark. This avoids the need to store is separately in
        the Sampler. Fold what was in record() here, since nothing else needs this functionality.
        record() now just relays the information to the sampler.
        (Benchmark.prototype.record): Called by Animator, which provides the data to the sampler.
        Animator's calls to this is part of a later patch. Requires each stage to return its complexity.
        (Benchmark.prototype.processSamples): If the sampling mark exists, add it to the results.
                Go through all of the samples. All samples contain a timestamp and complexity. We
        calculate "raw FPS" which is the time differential from the previous sample. At regular intervals
        the Kalman-filtered FPS and the interval average FPS are also recorded. We also create two
        experiments, to get the scores for the complexity and smoothed FPS, and add those samples to
        the experiments. Grab those scores and add them into results also.

        Add complexity() to the tests for Benchmark.record().
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/misc/resources/canvas-electrons.js:
        * Animometer/tests/misc/resources/canvas-stars.js:
        * Animometer/tests/text/resources/layering-text.js:

2015-12-27  Jon Lee  <jonlee@apple.com>

        Simplify the test harness
        https://bugs.webkit.org/show_bug.cgi?id=152562

        Reviewed by Simon Fraser.

        Update the simple canvas tests. For the paths, start from the center instead of the
        top-left corner. Instead of using a coordinate limit, use a canonized factor, and
        use that along both the x and y axes, so that more capable tests use more of the
        canvas.

        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (CanvasLinePoint): Rewrite to use the coordinate maximum factor.
        (CanvasQuadraticPoint): Ditto.
        (CanvasBezierPoint): Ditto.
        * Animometer/tests/simple/resources/simple-canvas.js:
        (tune): Calculate a factor instead of a maximum coordinate.

2015-12-27  Jon Lee  <jonlee@apple.com>

        Simplify the test harness
        https://bugs.webkit.org/show_bug.cgi?id=152562

        Reviewed by Simon Fraser.

        All of the benchmarks use the default Animator(). Don't require new tests
        to pass a new instance, and instead just make one in the Benchmark constructor.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        * Animometer/tests/master/resources/canvas-tests.js:
        * Animometer/tests/misc/resources/canvas-electrons.js:
        * Animometer/tests/misc/resources/canvas-stars.js:
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/resources/main.js:
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/text/resources/layering-text.js:
        * Animometer/tests/text/resources/text-boxes.js:

        Refactor the template.

        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/template/template-canvas.html:
        * Animometer/tests/template/template-css.html:
        * Animometer/tests/template/template-svg.html:

        Refactor the SVG suite.

        * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Move scripts to the end.
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto.

        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Remove extraneous includes
        to stage.js.
        * Animometer/tests/text/text-boxes.html: Ditto.

        BouncingCanvasParticlesBenchmark is not necessary. Use Benchmark directly when subclassing.
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Remove
        BouncingCanvasParticlesBenchmark.
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Use Benchmark.
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Ditto.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Require the shape
        in the constructor instead of having subclasses set the private variable.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Refactor.
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:

        Refactor the HTML suite.

        Move scripts to the end.
        * Animometer/tests/bouncing-particles/bouncing-css-images.html:
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/text-boxes.html:

        Refactor to use the new variables.
        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/text/resources/layering-text.js:
        * Animometer/tests/text/resources/text-boxes.js:

        Refactor the bouncing canvas tests.

        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Move scripts to the end.
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Move scripts to the end.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Promote a few
        properties to "public" since they are used by subclasses.
        (BouncingParticlesStage): Fix the constructor, which was missing "this". Make particles
        "public" for subclasses.
        (BouncingParticlesStage.initialize): Fix the max velocity, which was accidentally changed.
        * Animometer/tests/misc/resources/compositing-transforms.js: Refactor.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
        BouncingCanvasParticlesAnimator is no longer needed.
        (BouncingCanvasParticle): Change constructor to take a shape as a parameter instead of
        having subclasses set the variable.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Refactor.
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Refactor.

        Move example/ files into misc/.

        * Animometer/tests/misc/canvas-electrons.html: Renamed from PerformanceTests/Animometer/tests/examples/canvas-electrons.html.
        * Animometer/tests/misc/canvas-stars.html: Renamed from PerformanceTests/Animometer/tests/examples/canvas-stars.html.
        * Animometer/tests/misc/resources/canvas-electrons.js: Renamed from PerformanceTests/Animometer/tests/examples/resources/canvas-electrons.js.
        * Animometer/tests/misc/resources/canvas-stars.js: Renamed from PerformanceTests/Animometer/tests/examples/resources/canvas-stars.js.

        * Animometer/resources/debug-runner/tests.js: Update test URLs.

        Refactor miscellaneous suite.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        Remove BouncingParticlesAnimator and BouncingParticleBenchmark, which are
        not needed.
        (tune): Remove console assert.
        * Animometer/tests/resources/main.js: Add Rotater back in from stage.js.

        * Animometer/tests/examples/resources/canvas-electrons.js: Remove CanvasElectronsAnimator.
        * Animometer/tests/examples/resources/canvas-stars.js: Remove CanvasStarsAnimator.
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/examples/canvas-electrons.html: Move scripts to the end.
        * Animometer/tests/examples/canvas-stars.html: Ditto.
        * Animometer/tests/misc/compositing-transforms.html: Ditto.

        Refactor the simple suite.

        * Animometer/tests/master/resources/canvas-stage.js:
        (tune): Remove coordinateMaximum since it is not needed in any
        of the master tests.
        * Animometer/tests/simple/resources/simple-canvas.js:
        SimpleCanvasAnimator and SimpleCanvasBenchmark are no longer
        needed.
        (tune): Manage the objects differently, but instead of duplicating
        all of SimpleCanvasStage here, just replace tune(). Include
        coordinateMaximum, and remove items from the end of the list
        instead of the beginning.
        (StageBenchmark.call.createAnimator): Deleted.
        (StageBenchmark.call): Deleted.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        * Animometer/tests/simple/simple-canvas-paths.html: Move
        scripts to the end.

        Get rid of stage.js, StageAnimator, and StageBenchmark. Don't have the progress bar update during the test.

        * Animometer/resources/debug-runner/animometer.js:
        (initialize): Move the setting of testsCount to the debug runner.
        (didRunTest): Nicer name.
        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Don't pass in the progress bar to benchmarks.
        * Animometer/resources/extensions.js:
        (ProgressBar): Refactor. Make variables "private". Resetting the progress when instantiating.
        (ProgressBar.prototype.incrementRange): This is called every time a benchmark completes.
        * Animometer/resources/runner/animometer.js:
        (window.benchmarkRunnerClient.initialize): Remove unneeded setting of testsCount.
        * Animometer/resources/strings.js: These are no longer needed.
        * Animometer/tests/master/canvas-stage.html: Remove script inclusion. Other tests will follow.
        * Animometer/tests/master/resources/canvas-tests.js: Use Benchmark instead of StageBenchmark.
        * Animometer/tests/resources/main.js: Messages are no longer needed
        (Animator.prototype._shouldRequestAnotherFrame): Rename from animate(), since this method returns a boolean
        indicating whether another frame should be requested. Collapse the logic from StageAnimator into animateLoop.
        (BenchmarkState.prototype.currentStage): Deleted.
        (BenchmarkState.prototype.currentMessage): Deleted.
        (BenchmarkState.prototype.currentProgress): Deleted.
        (Animator.prototype.animate): Deleted.
        (Animator.prototype.animateLoop): The stage is animated only when we have another frame to draw.
        (Benchmark.prototype.record): No need to update the progress bar.
        * Animometer/tests/resources/stage.js: Removed. Rotater will appear in a later patch, in main.js.

        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._runBenchmarkAndRecordResults): Each test is run as a benchmark.
        Remove the call to runBenchmark by merging the options here, and calling benchmark.run()
        directly.

        Make the class relationships more easily understandable. The benchmark owns the stage,
        animator, and options. Make the stage and animator no longer have their own references to
        the options. Make Stage a first-class citizen by promoting it to main.js. Later patches
        will try to get rid of stage.js altogether.
        * Animometer/tests/resources/main.js:
        (Stage): Moved from stage.js.
        (Animator): Don't pass in benchmark and options in its constructor. It will get initialized
        by benchmark-related parameters in initialize().
        (Animator.prototype.initialize): Add a back-reference to benchmark and cache an option.
        (Animator.prototype.get benchmark):
        (Animator.prototype.animate): Refactor to use the cached option, to remove its dependency on
        the options dictionary.
        (Benchmark): Require all benchmarks to have a stage and animator. The instance will initialize
        them.
        (Benchmark.prototype.get options):
        (Benchmark.prototype.get stage): BenchmarkStates.stages will need to be renamed to avoid confusion.
        (Benchmark.prototype.get animator):
        (Benchmark.prototype.start):
        (Benchmark.prototype.update): Ask the stage directly to tune or clear instead of adding another
        level of indirection.
        (window.runBenchmark): Deleted. Remove the need for a benchmarkClient. Also remove the standalone
        path, since tests can be individually selected, and remove the need for runBenchmark since that is
        handled in BenchmarkRunner._runBenchmarkAndRecordResults.
        * Animometer/tests/resources/stage.js:
        (Stage): Deleted. Moved to main.js.
        (StageBenchmark): What's left is updating the progress bar; to be removed.
        (StageAnimator): What's left can be folded in Animator.

        Refactor master suite.
        * Animometer/tests/master/resources/canvas-stage.js: This now only has SimpleCanvasStage.
        (animate): Push the clearRect() into each stage.
        (complexity):
        (StageBenchmark.call.createAnimator): Deleted.
        (StageBenchmark.call): Deleted.
        * Animometer/tests/master/resources/canvas-tests.js: SimpleCanvasPathStrokeStage is no longer needed.
        (CanvasLineSegment.prototype.draw):
        (CanvasArc):
        (CanvasLinePoint): Remove the draw call because depending on its index it either needs to be moveTo
        or lineTo, and it is otherwise a very small draw operation that doesn't need the overhead of the
        function call. Do all of the drawing through the stage.

        Refactor the subclass pattern. Introduce Utilities.createSubclass().

        * Animometer/resources/debug-runner/benchmark-runner.js:
        * Animometer/resources/extensions.js:
        (window.Utilities.createSubclass): Takes the super class, a function representing
        the class's constructor, and additional methods to attach to the new class's
        prototype object.
        * Animometer/tests/text/text-boxes.html: Remove unneeded reference to utilities.js.

        Refactor tests.
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        * Animometer/tests/examples/resources/canvas-electrons.js:
        * Animometer/tests/examples/resources/canvas-stars.js:
        * Animometer/tests/master/resources/canvas-stage.js:
        * Animometer/tests/master/resources/canvas-tests.js:
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/resources/stage.js:
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        * Animometer/tests/simple/resources/simple-canvas.js:
        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/text/resources/layering-text.js: Reorder some of the methods
        and properties since they rely on each other.
        * Animometer/tests/text/resources/text-boxes.js:

        * Animometer/resources/debug-runner/animometer.js: Arrange calls
        in the order they are evoked.
        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunnerState.prototype.next): Get rid of return value since
        no caller to next() uses it.
        (BenchmarkRunnerState.prototype.prepareCurrentTest): Refactor the
        promise to resolve simply when onload() is called instead of
        looking for #stage.
        (BenchmarkRunner.prototype._runTestAndRecordResults): Suite.run
        simply calls runBenchmark(). Call it directly rather than through
        the Suite.
        (BenchmarkRunner.prototype.step): Remove unused parameter in
        resolve callback.
        (BenchmarkRunner.prototype.runMultipleIterations): Use this instead
        of self since it is outside of the closure which needed the self
        variable.
        (resolveIfReady): Deleted.
        (BenchmarkRunner.prototype.waitForElement): Deleted.
        * Animometer/resources/runner/tests.js: prepare() and run() are
        no longer needed.
        (Suite.prototype.prepare): Deleted.
        (Suite.prototype.run): Deleted.
        * Animometer/tests/master/canvas-stage.html: Move all scripts to
        the end of the page.

2015-12-23  Simon Fraser  <simon.fraser@apple.com>

        Add an Animometer developer test which animates text-rich boxes
        https://bugs.webkit.org/show_bug.cgi?id=152544

        Reviewed by Zalan Bujtas.

        Add a test that draws lots of international text. This is a particle test,
        moving the boxes around with absolution positioning.

        * Animometer/resources/debug-runner/tests.js:
        * Animometer/tests/text/resources/text-boxes.js: Added.
        (BouncingTextBox):
        (BouncingTextBox.prototype._move):
        (BouncingTextBox.prototype.animate):
        (BouncingTextBoxStage):
        (BouncingTextBoxStage.prototype.createParticle):
        (BouncingTextBoxStage.prototype.particleWillBeRemoved):
        (BouncingTextBoxsBenchmark):
        (BouncingTextBoxsBenchmark.prototype.createStage):
        (window.benchmarkClient.create):
        * Animometer/tests/text/text-boxes.html: Added.

2015-12-23  Jon Lee  <jonlee@apple.com>

        Split benchmark into two different pages
        https://bugs.webkit.org/show_bug.cgi?id=152458

        Reviewed by Simon Fraser.

        Add tests to 'animometer' suite.

        * Animometer/resources/runner/tests.js:
        * Animometer/tests/master/canvas-stage.html: Added.
        * Animometer/tests/master/resources/canvas-stage.js: Added.
        * Animometer/tests/master/resources/canvas-tests.js: Added.
        * Animometer/tests/master/resources/stage.css: Added.

2015-12-23  Jon Lee  <jonlee@apple.com>

        Split benchmark into two different pages
        https://bugs.webkit.org/show_bug.cgi?id=152458

        Reviewed by Simon Fraser.

        Address comments.

        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._runTestAndRecordResults): When the testing is complete the frame owning the
        sampler goes away, and a later call to get the JSON data is no longer available. Process the data
        right here, instead, and just reference it when displaying the results in ResultsDashboard.prototype._processData.
        * Animometer/resources/extensions.js:
        (Array.prototype.fill.Array.prototype.fill): Add a null check. Remove braces around single-line clause.
        (Array.prototype.find.Array.prototype.find): Update the null check.
        (ResultsDashboard.prototype._processData): Use the already-processed data.
        * Animometer/resources/runner/animometer.css:
        (.frame-container > iframe): Remove calc().

        Move Array functions to extensions.js since that is included by the harness.
        Add ES6 Array polyfills.

        * Animometer/resources/algorithm.js:
        (Array.prototype.swap): Moved to extensions.js.
        * Animometer/resources/extensions.js:
        (Array.prototype.swap):
        (Array.prototype.fill): Added.
        (Array.prototype.find): Added.

        Adjust styles for iPad.

        * Animometer/resources/runner/animometer.css:
        (@media screen and (min-device-width: 768px)): Apply to iPad as well.
        (@media screen and (max-device-width: 1024px)): Update width for iPads.

        Adjustment styles for iOS.

        * Animometer/developer.html: Different divs contain the iframe, so use a class instead and
        update the style rules.
        * Animometer/index.html:
        * Animometer/resources/debug-runner/animometer.css: Remove extraneous rules.
        (@media screen and (min-device-width: 1800px)): Move this up.
        * Animometer/resources/runner/animometer.css: Add rules to accomodate iOS.

        Get rid of prefixed flex properties for now.

        * Animometer/resources/debug-runner/animometer.css:
        * Animometer/resources/runner/animometer.css:

        Update the structure of the harness. Remove the JSON-per-test but keep
        the JSON of the whole test run. Use the full page in order to display
        the graph.

        * Animometer/developer.html: Update several of the JS file includes to UTF-8. Remove header and footer. Test results screen includes score,
        average, and worst 5% statistics.
        * Animometer/index.html: Make structure similar to developer.html.
        * Animometer/resources/debug-runner/animometer.css: Remove most of the
        button rules since they are superfluous. Move the progress bar to the
        top, fixed. Update the results page rules.
        * Animometer/resources/debug-runner/animometer.js: Remove most of the
        additions to sectionsManager since they are no longer needed.
        (setSectionHeader): Updates header of the section.
        (window.suitesManager._updateStartButtonState): Update selector.
        (showResults): Add keypress event for selecting different data for
        copy/paste. Update how the results are populated. Include full test
        JSON in a textarea, rather than requiring a button press.
        (showTestGraph):
        * Animometer/resources/debug-runner/tests.js: Update structure of Headers. Define different kinds of headers. Headers can control their
        title, and the text used as the cell contents, including class name.
        * Animometer/resources/extensions.js:
        (ResultsTable): Update to include a flattened version of the headers,
        used while populating table contents. Remove unneeded helper functions
        for creating the table. Rename "show" to "add".
        * Animometer/resources/runner/animometer.css: Update rules to
        accommodate the new structure.
        * Animometer/resources/runner/animometer.js:
        (window.sectionsManager.setSectionScore): Helper function to set the
        score and mean for a section.
        (window.sectionsManager.populateTable): Helper function to set the table.
        (window.benchmarkController.showResults): Refactor.
        (window.benchmarkController.selectResults): Update selectors.
        * Animometer/resources/runner/tests.js: Set Headers. Debug harness
        extends it.

        Update debug runner to have similar names to the basic runner. Include
        that page's CSS and remove extraneous CSS rules.

        Get rid of the statistics table #record.

        * Animometer/developer.html: Rename #home to #intro. Rename .spacer to hr.
        * Animometer/resources/debug-runner/animometer.css: Set to flexbox when selected.
        * Animometer/resources/debug-runner/animometer.js: Remove recordTable.
        (window.suitesManager._updateStartButtonState): Update selector to #intro.
        (setupRunningSectionStyle): Deleted.

        * Animometer/resources/runner/animometer.css:
        (#test-container.selected): Change to flex-box only when visible.

        Remove recordTable.
        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._runTestAndRecordResults):
        * Animometer/resources/runner/tests.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        * Animometer/tests/examples/resources/canvas-electrons.js:
        * Animometer/tests/examples/resources/canvas-stars.js:
        * Animometer/tests/misc/resources/compositing-transforms.js:
        * Animometer/tests/resources/main.js:
        * Animometer/tests/resources/stage.js:
        (StageBenchmark): Remove _recordTable.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        * Animometer/tests/simple/resources/simple-canvas.js:
        * Animometer/tests/template/resources/template-canvas.js:
        * Animometer/tests/template/resources/template-css.js:
        * Animometer/tests/template/resources/template-svg.js:
        * Animometer/tests/text/resources/layering-text.js:

        * Animometer/resources/debug-runner/animometer.js:
        (willStartFirstIteration): Fix selector, since results-table is used
        in multiple places, so it cannot be an id.

        Make it possible to select the scores, or the whole table data,
        by cycling through different selections through key press of 's'.

        * Animometer/resources/runner/animometer.js:
        (window.benchmarkController.showResults): Attach a keypress handler
        if it hasn't been added already.
        (window.benchmarkController.selectResults):
        * Animometer/resources/runner/tests.js: Cycle through different
        ranges.

        Fix a few fly-by errors.

        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunnerState.prototype.prepareCurrentTest): Update the frame relative path
        since the files are now in the top directory instead of inside runner/.
        (BenchmarkRunner.prototype._runTestAndRecordResults): Incorrect reference to function.
        (BenchmarkRunner.prototype.step): Member variable is never used.

        A little stylistic cleanup.

        * Animometer/resources/debug-runner/benchmark-runner.js:
        * Animometer/resources/extensions.js:
        (window.DocumentExtension.createElement):
        * Animometer/tests/resources/main.js:
        (Benchmark.prototype.record):
        * Animometer/tests/resources/stage.js:
        (StageBenchmark.prototype.showResults): Reverse progress and message.
        The message appears less frequently than the progress.
        * Animometer/tests/simple/resources/simple-canvas.js:
        (SimpleCanvasBenchmark): Remove unused options.

        Add newer version of harness in a new page. Consolidate differences between the two
        pages.

        * Animometer/developer.html: Include runner/animometer.js. Rename the JS function
        to run the benchmark to startBenchmark() instead of startTest(). Rename #running to
        #test-container.
        * Animometer/index.html: Added. Similarly calls startBenchmark() and has #test-container.
        * Animometer/resources/debug-runner/animometer.css: Make the canvas 2:1 (1200px x 800px)
        instead of 4:3.

        Split out benchmarkRunnerClient and benchmarkController.

        * Animometer/resources/debug-runner/animometer.js: Move needed functions out of
        benchmarkRunnerClient, and leave the rest here to extend that object. Get rid of _resultsTable
        and move populating the results table into benchmarkController. Rename _resultsDashboard
        to results and make it accessible for other objects to use.
        (willAddTestFrame): This is unnecessary. Remove.

        (window.sectionsManager.showScore): Grab it from the results object instead of
        benchmarkRunnerClient.
        (window.sectionsManager.showSection): Deleted. Moved to runner/animometer.js.

        (window.benchmarkController._runBenchmark): Deleted. Mostly moved into _startBenchmark.
        (window.benchmarkController.startBenchmark): Refactor to call _startBenchmark.
        (window.benchmarkController.showResults): Include most of benchmarkRunnerClient.didFinishLastIteration()
        here.

        * Animometer/resources/debug-runner/benchmark-runner.js:
        (BenchmarkRunner.prototype._appendFrame): Remove unneeded call to willAddTestFrame.
        * Animometer/resources/extensions.js:
        (ResultsDashboard): Change the class to process the sampler data on-demand and hold onto that data
        for later referencing.
        (ResultsDashboard.prototype.toJSON): Deleted.
        (ResultsDashboard.prototype._processData): Rename toJSON to _processData since it's not really
        outputting JSON. Store the processed data into a member variable that can be referenced later.
        (ResultsDashboard.prototype.get data): Process the data if it hasn't already.
        (ResultsDashboard.prototype.get score): Process the data if it hasn't already, then return the
        aggregate score.
        (ResultsTable.prototype._showHeader): When outputting the results to a table, don't force the
        need for an empty children array. This was to allow for a header row in the table that spanned
        multiple columns. In the simpler harness, this is not needed.
        (ResultsTable.prototype._showEmptyCells):
        (ResultsTable.prototype._showTest): This hardcoded the columns. At least for the name and score,
        which is the bare minimum needed for the simpler harness, key off of the header name provided.
        * Animometer/resources/runner/animometer.css: Added. Use a similar 2:1 ratio. The score tables are
        split into the data and the headers, and are also displayed RTL so that a later patch allows a
        user to copy-paste the data easily.
        * Animometer/resources/runner/animometer.js: Added. Use a simpler version of benchmarkRunnerClient.
        The debug harness will extend these classes.
        (window.benchmarkController._startBenchmark): Used by both harnesses.
        (window.benchmarkController.startBenchmark): Set hard-coded options.
        (window.benchmarkController.showResults): Includes most of benchmarkRunnerClient.didFinishLastIteration()
        here.

        Get rid of utilities.js. Move it all into extensions.js.

        * Animometer/resources/extensions.js:
        * Animometer/tests/resources/utilities.js: Removed.

        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Remove script link.
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Ditto.
        * Animometer/tests/bouncing-particles/bouncing-css-images.html: Ditto.
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Ditto.
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Ditto.
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Ditto.
        * Animometer/tests/examples/canvas-electrons.html: Ditto.
        * Animometer/tests/examples/canvas-stars.html: Ditto.
        * Animometer/tests/misc/compositing-transforms.html: Ditto.
        * Animometer/tests/simple/simple-canvas-paths.html: Ditto.
        * Animometer/tests/template/template-canvas.html: Ditto.
        * Animometer/tests/template/template-css.html: Ditto.
        * Animometer/tests/template/template-svg.html: Ditto.
        * Animometer/tests/text/layering-text.html: Ditto.

        Split tests.js into two. Add a new suite to runner/tests.js.

        * Animometer/developer.html: Update the script order. Scripts from
        debug-runner/ will always build on those from runner/, and have the
        same name.
        * Animometer/resources/debug-runner/tests.js: Move "complex examples"
        suite into "miscellaneous tests".
        (Suite): Deleted.
        (Suite.prototype.prepare): Deleted.
        (Suite.prototype.run): Deleted.
        (suiteFromName): Deleted.
        * Animometer/resources/runner/tests.js: Added. Take definitions and
        functions needed by the test harness. Leave the test suites behind.
        (Suite): Moved from debug script.
        (Suite.prototype.prepare): Ditto.
        (Suite.prototype.run): Ditto.
        (suiteFromName): Ditto.
        (testFromName): Ditto.

        Move benchmark resources out into resources/debug-runner, and update URLs.

        * Animometer/developer.html: Renamed from PerformanceTests/Animometer/runner/animometer.html.
        * Animometer/resources/debug-runner/animometer.css: Renamed from PerformanceTests/Animometer/runner/resources/animometer.css.
        * Animometer/resources/debug-runner/animometer.js: Renamed from PerformanceTests/Animometer/runner/resources/animometer.js.
        * Animometer/resources/debug-runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/runner/resources/benchmark-runner.js.
        * Animometer/resources/debug-runner/d3.min.js: Renamed from PerformanceTests/Animometer/runner/resources/d3.min.js.
        * Animometer/resources/debug-runner/graph.js: Renamed from PerformanceTests/Animometer/runner/resources/graph.js.
        * Animometer/resources/debug-runner/tests.js: Renamed from PerformanceTests/Animometer/runner/resources/tests.js.

2015-12-11  Jon Lee  <jonlee@apple.com>

        Improve Animometer on iOS
        https://bugs.webkit.org/show_bug.cgi?id=152180

        Reviewed by Simon Fraser.

        Improve experience on phones. Make the canvas take
        up the whole screen.

        * Animometer/runner/animometer.html: Add meta viewport.
        Remove the container div.
        * Animometer/runner/resources/animometer.css: Have buttons lay
        out vertically. Update detail arrow glyph. Make the suites and
        options section lay out vertically. Remove the top spacers since
        we want the canvas to take over the whole screen. Minimal display
        is recommended for use.

2015-12-07  Jon Lee  <jonlee@apple.com>

        Update suites for benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151957

        Reviewed by Simon Fraser.

        * Animometer/runner/animometer.html: Use spacers instead of relying on
        justify-content center to center the content. That allows the opening screen
        to grow downward when expanding the list of choices, otherwise it expands
        from the center, and off the top edge of the screen.
        * Animometer/runner/resources/animometer.css:
        (.tree): Don't overflow scroll.
        (.tree > li > label.tree-label:before): Use better glyphs.
        (.tree > li > :checked ~ label.tree-label:before):
        (main): Using flex-start for justify-content so that if the section grows too
        big it gets pinned to the top edge of the document instead of growing past it.
        (.spacer): Make the spacers have a minimum 20px and grow evenly.
        (section#home): Add a min-height so that the border will expand if the suite
        tests shown make the section grow past the height.
        * Animometer/runner/resources/animometer.js: Update the selectors.
        (window.suitesManager._treeElement):
        (window.suitesManager._suitesElements):
        (window.suitesManager._editsElements):

2015-12-07  Jon Lee  <jonlee@apple.com>

        Update options for benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151956

        Reviewed by Simon Fraser.

        Move "Fix test complexity" and "Adaptive" checkboxes into a radio group.

        Move "Show running results" into a radio group, and add options to remove the HUD.

        * Animometer/runner/animometer.html: Get rid of the preamble. Wrap the options
        in a form for easier referencing in JS.
        * Animometer/runner/resources/animometer.css: Show the surrounding border if the
        body's display-minimal class name is set.
        * Animometer/runner/resources/animometer.js:

        Update the way optionsManager gets and sets default values. Include support for
        radio groups.
        (window.optionsManager.valueForOption):
        (window.optionsManager.updateUIFromLocalStorage):
        (window.optionsManager.updateLocalStorageFromUI):

        (window.benchmarkRunnerClient.willStartFirstIteration):
        (window.sectionsManager.setupRunningSectionStyle):
        (window.suitesManager._treeElement): Fly-by whitespace fix.
        (window.suitesManager._suitesElements): Ditto.
        (window.suitesManager.updateEditsElementsState): Update options check.
        (window.suitesManager.updateDisplay): Add a new update function for the HUD.
        Attach a class to the body depending on the user's choice.
        (window.benchmarkController.initialize): Add an event listener when the form
        radio buttons update.
        (window.benchmarkController.onFormChanged):
        (window.optionsManager._optionsElements): Deleted.
        (window.optionsManager._adaptiveTestElement): Deleted.
        (window.benchmarkController.onChangeAdaptiveTestCheckbox): Deleted.
        * Animometer/tests/resources/main.js:
        (Benchmark.prototype.update): Update options checks.
        * Animometer/tests/resources/stage.js: Update option check.
        (StageBenchmark.prototype.showResults):

2015-12-01  Simon Fraser  <simon.fraser@apple.com>

        Add a basic compositing Animometer test
        https://bugs.webkit.org/show_bug.cgi?id=151724

        Reviewed by Dean Jackson.

        Add a "bouncing particles" test that moves composited layers around, optionally with a filter.

        This is added under a new "Miscellaneous" category.

        Remove the test templates category from the UI.

        * Animometer/runner/resources/tests.js:
        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
        (BouncingCssShape.prototype.animate):
        * Animometer/tests/misc/compositing-transforms.html: Added.
        * Animometer/tests/misc/resources/compositing-transforms.js: Added.
        (BouncingCompositedImage):
        (BouncingCompositedImage.prototype._move):
        (BouncingCompositedImage.prototype.animate):
        (CompositingTransformsStage):
        (CompositingTransformsStage.prototype.createParticle):
        (CompositingTransformsStage.prototype.particleWillBeRemoved):
        (CompositedTransformsBenchmark):
        (CompositedTransformsBenchmark.prototype.createStage):
        (window.benchmarkClient.create):

2015-11-30  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Fix the graphics benchmark complexity bounds adjustment
        https://bugs.webkit.org/show_bug.cgi?id=151670

        Reviewed by Simon Fraser.

        Make sure the graphics benchmark complexity bounds adjustment is applied
        to the absolute lower bound.

        * Animometer/tests/resources/math.js:
        (PIDController.prototype._saturate):

2015-11-30  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an option to select the results form the graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151666

        Reviewed by Ryosuke Niwa.

        We need an easy way to select the graphics benchmark results table such
        that when it is copied to the clipboard, rich text format is set to the
        clipboard.

        * Animometer/runner/animometer.html: Add a new button to select the results table or JSON.

        * Animometer/runner/resources/animometer.js:
        (window.sectionsManager._sectionDataElement): Selects the container <data> element.
        (window.sectionsManager._sectionDataDivElement): Replace a literal string with a string table entry.
        (window.sectionsManager.showTestName): Replace a literal string with a string table entry.
        (window.sectionsManager.selectData): Selects the container <data> element in a selection.
        (window.sectionsManager.selectDataContents): Select the contents of container <data> element in a selection.
        (window.benchmarkController.selectResults): Selects the results table.
        (window.benchmarkController.showJSON): Function rename.
        (window.benchmarkController.selectJSON): Selects the contents of the results JSON.
        (window.benchmarkController.showJson): Deleted.

2015-11-20  Simon Fraser  <simon.fraser@apple.com>

        Animometer: graphs should not do interpolation
        https://bugs.webkit.org/show_bug.cgi?id=151526

        Reviewed by Simon Fraser.

        Having the graphs do interpolation is misleading, because you can't see the actual data.

        Also remove "shape-rendering: crispEdges;" so the lines get antialiased.

        * Animometer/runner/resources/animometer.css:
        (section#test-graph > data > svg): Deleted.
        * Animometer/runner/resources/graph.js:
        (graph): Deleted.

2015-11-19  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Calculate the graphics benchmark test gain adaptively
        https://bugs.webkit.org/show_bug.cgi?id=151208

        Reviewed by Darin Adler.

        We need to calculate the gain of the graphics benchmark tests adaptively
        and get rid of the gain and limits parameters we have to choose manually
        for every test. We are going to use the classic Ziegler–Nichols method for
        calculating the gain and integral and derivative times. We are going to
        try moving on a cubic curve during the manual stage from y0 to reach ysp.
        We also going to use a saturation actuator to ensure the system does not
        fluctuate.

        * Animometer/resources/extensions.js:
        (ResultsTable.prototype._isNoisyMeasurement): Fix a parameter name.
        (ResultsTable.prototype._isNoisyTest): Since score is a member of testResults, we need to limit our search to frame rate and complexity.
        (ResultsTable.prototype._showTest): Pass the correct parameter to _isNoisyMeasurement().

        * Animometer/resources/strings.js: Fix the indentation and name and value of a string.

        * Animometer/runner/resources/tests.js: Remove all the manual gains and limits parameters which had to be passed to every test.

        * Animometer/tests/resources/main.js:
        (BenchmarkState.prototype.currentStage): Fix an enum name.
        (Benchmark): Get rid of manual gain and limits.
        (Benchmark.prototype.update): Simplify the calculation by having all the times in ms.

        * Animometer/tests/resources/math.js:
        (PIDController): Get rid of the manual gain and limits and the magic numbers for Ti and Td.
        (PIDController.prototype._yPosition): Tells whether the test current output is moving towards the set-point or away from it.
        (PIDController.prototype._distanceUltimate): Calculates the ultimate distance from y0 after time t using a cubic formula.
        (PIDController.prototype._distance): Calculates the distance of y relative to y0.
        (PIDController.prototype._gainIncrement): Decides how much the proportional gain should be increased during the manual gain stage.
        (PIDController.prototype._updateStage): Updates the stage of the controller based on its current stage and the system output.
        (PIDController.prototype._tuneP): Tunes the system before calculating the PID controller gains.
        (PIDController.prototype._tunePID): PID tuning function.
        (PIDController.prototype._tune):
        (PIDController.prototype._saturate):
        (PIDController.prototype.tune): Manages calculating the controller parameters. It then returns a PID tuning value.
        (PIDController.prototype._sat): Deleted. We may need to return it back but the limits have to be calculated adaptively not manually.

2015-11-17  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Reorganize the graphics benchmark string table
        https://bugs.webkit.org/show_bug.cgi?id=151334

        Reviewed by Simon Fraser.

        Make the graphics benchmark string table be an object of sub-objects. Each
        sub-object represents an associative array, the key is the string name and
        the value is the string data.

        * Animometer/resources/extensions.js:
        (ResultsDashboard.prototype.toJSON):
        (ResultsTable.prototype._showGraph):
        (ResultsTable.prototype._showJSON):
        (ResultsTable.prototype._isNoisyMeasurement):
        (ResultsTable.prototype._isNoisyTest):
        (ResultsTable.prototype._showTest):
        (ResultsTable.prototype._showSuite):
        (ResultsTable.prototype._showIteration):
        * Animometer/resources/sampler.js:
        (Sampler.prototype.toJSON):
        * Animometer/resources/strings.js:
        * Animometer/runner/resources/animometer.js:
        (window.benchmarkRunnerClient.didFinishLastIteration):
        (window.suitesManager.updateLocalStorageFromJSON):
        (window.benchmarkController.showResults):
        (window.benchmarkController.showJson):
        (window.benchmarkController.showTestGraph):
        (window.benchmarkController.showTestJSON):
        * Animometer/runner/resources/tests.js:
        * Animometer/tests/resources/main.js:

2015-11-17  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Disable flattening the stage iframe of the graphics benchmark when running on iOS
        https://bugs.webkit.org/show_bug.cgi?id=151361

        Reviewed by Simon Fraser.

        Use fixed size for stage iframe of the graphics benchmark to disable
        flattening the iframe while animating the particles. Also ensure the
        bouncing particles do not go outside the iframe's boundaries.

        * Animometer/runner/resources/animometer.css:
        (section#running > #running-test > iframe):
        (@media screen and (min-device-width: 1800px)):
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        (BouncingParticle.prototype.animate):

2015-11-17  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Use the media queries to dynamically set the stage for the graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151327

        Reviewed by Simon Fraser.

        Clean setting the benchmark css rules by using the media queries. Accessing
        document.stylesheets.cssRules seems to be unreliable. Fix the test harness
        load event listener invocation. And also remove the options for normalizing
        the stage resolution for retina display.

        * Animometer/resources/extensions.js:
        (window.DocumentExtension.insertCssRuleAfter): Deleted.
        * Animometer/runner/animometer.html:
        * Animometer/runner/resources/animometer.css:
        (@media screen and (min-device-width: 1800px)):
        * Animometer/runner/resources/animometer.js:
        (window.sectionsManager.setupRunningSectionStyle):
        (window.benchmarkController.initialize):
        (window.sectionsManager.setupSectionStyle): Deleted.
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        (BouncingParticlesStage):
        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/resources/layering-text.js:
        (LayeringTextStage):
        (LayeringTextStage.prototype._setFontSize): Deleted.

2015-11-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the option for animating using setInterval from the graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151283

        Reviewed by Darin Adler.

        Get rid of the option to run animation using setInterval().

        * Animometer/tests/resources/main.js:
        (Animator.prototype.animate):
        (Benchmark):
        (Benchmark.prototype.start):
        (Animator.prototype.start): Deleted.

2015-11-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Highlight the alarming test results in the graphics benchmark results page
        https://bugs.webkit.org/show_bug.cgi?id=151286

        Reviewed by Simon Fraser.

        When showing the results of a test in the graphics benchmark the following
        criteria is going to be applied:

        1. If the standard deviation of the test complexity or the frame rate is
           equal to or more than 10%, the standard deviation and the test name
           will be displayed in red.
        2. If the average frame rate is not in the range = [(desired_frame_rate - 2)
           .. (desired_frame_rate + 2)], the average frame rate and the test name will
           be displayed in red.

        * Animometer/resources/extensions.js:
        (ResultsTable.prototype._showHeaderRow):
        (ResultsTable.prototype._showHeader):
        (ResultsTable.prototype._showEmptyCell):
        (ResultsTable.prototype._showText):
        (ResultsTable.prototype._showFixedNumber):
        (ResultsTable.prototype.):
        (ResultsTable.prototype._showGraph):
        (ResultsTable.prototype._showJSON):
        (ResultsTable.prototype._isAlarmingMeasurement):
        (ResultsTable.prototype._isAlarmingTestResults):
        (ResultsTable.prototype._showEmptyCells):
        (ResultsTable.prototype._showEmptyRow):
        (ResultsTable.prototype._showTest):
        (ResultsTable.prototype._showSuite):
        (ResultsTable.prototype._showIteration):
        (ResultsTable.prototype.showRecord):
        (ResultsTable.prototype.showIterations):
        (ResultsTable.prototype._showEmpty): Deleted.
        * Animometer/runner/resources/animometer.js:
        (window.benchmarkRunnerClient.didFinishLastIteration):
        * Animometer/tests/resources/stage.js:
        (StageBenchmark.prototype.showResults):

2015-11-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Clean referencing the options object in the graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151284

        Reviewed by Simon Fraser.

        Get rid of the Benchmark.options member and rely only on the private member
        Benchmark._options. The animator need to have its own options member instead
        of accessing it from its reference to Benchmark object.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js:
        (BouncingCanvasParticlesAnimator):
        (BouncingCanvasParticlesBenchmark.prototype.createAnimator):
        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        (BouncingParticle.prototype.animate):
        (BouncingParticlesAnimator):
        (BouncingParticlesBenchmark.prototype.createAnimator):
        * Animometer/tests/examples/resources/canvas-electrons.js:
        (CanvasElectronsStage.prototype.animate):
        (CanvasElectronsAnimator):
        (CanvasElectronsBenchmark.prototype.createAnimator):
        (window.benchmarkClient.create):
        * Animometer/tests/examples/resources/canvas-stars.js:
        (CanvasStarsStage.prototype.animate):
        (CanvasStarsAnimator):
        (CanvasStarsBenchmark.prototype.createAnimator):
        (window.benchmarkClient.create):
        * Animometer/tests/resources/main.js:
        (BenchmarkState.prototype.currentProgress):
        (Animator):
        (Animator.prototype.animate):
        (Benchmark):
        (Benchmark.prototype.update):
        * Animometer/tests/resources/stage.js:
        (Stage.prototype.clear):
        (StageAnimator):
        (StageBenchmark.prototype.createAnimator):
        (StageBenchmark.prototype.tune):
        (StageBenchmark.prototype.showResults):
        * Animometer/tests/simple/resources/simple-canvas.js:
        (SimpleCanvasStage.prototype.animate):
        (SimpleCanvasAnimator):
        (SimpleCanvasAnimator.prototype.animate):
        (SimpleCanvasBenchmark.prototype.createAnimator):
        * Animometer/tests/template/resources/template-canvas.js:
        (TemplateCanvasStage.prototype.animate):
        (TemplateCanvasBenchmark.prototype.createAnimator):
        (window.benchmarkClient.create):

2015-11-13  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Eliminate a request for layout every time an item is added to the stage of the graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=151289

        Reviewed by Simon Fraser.

        Cache the stage size when it is created instead of requesting every time
        an object is added via clientWidth and clientHeight.

        * Animometer/resources/extensions.js:
        (Insets.elementPadding):
        * Animometer/tests/resources/stage.js:
        (Stage):
        (Stage.prototype.get size):

2015-11-06  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Initialize the graphics benchmark's Kalman filter with estimated 60 FPS
        https://bugs.webkit.org/show_bug.cgi?id=150965

        Reviewed by Darin Adler.

        This should give the benchmark more accurate reading at warmup time. And
        hence we can safely reduce the test running time to be 10 seconds.

        * Animometer/runner/animometer.html:
        Add "defer" back when loading resources/animometer.js since this script
        depends on many other scripts and we need to wait till the page is parsed.
        Also change the default test interval to be 10 seconds.

        * Animometer/runner/resources/graph.js:
        (graph): Make the test results curves smoother.

        * Animometer/tests/resources/main.js:
        (Animator): Initialize the Kalman filter with 60 FPS which should be true
        if the test page is empty.

        (Animator.prototype.animate):
        * Animometer/tests/resources/math.js:
        (KalmanEstimator): Fix the initial value of _vecX_est.
            _vecX_est[0] = current FPS (= 60FPS when the test page is empty)
            _vecX_est[1] = first time derivative of FPS (=0; FPS has been constant).
            _vecX_est[2] = second time derivative of FPS (=0; since _vecX_est[1]=0).
        (KalmanEstimator.prototype.estimate): Add some comments.

2015-11-04  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove "defer" from the scripts' references in the graphics benchmark home page
        https://bugs.webkit.org/show_bug.cgi?id=150915

        Reviewed by Simon Fraser.

        It causes the benchmark to be very flakey.

        * Animometer/runner/animometer.html:

2015-11-01  Said Abou-Hallawa  <sabouhallawa@apple,com>

        Add an option to make the graphics benchmark runs a specific test with fixed complexity
        https://bugs.webkit.org/show_bug.cgi?id=150529

        Reviewed by Darin Adler.

        Beside each test in the suites tree, we are going to show the complexity
        arithmetic mean of the of the last run in an edit control. Based on a
        new option these edit controls will all be visible or hidden. If they are
        visible their values can be changed. The benchmark runner if it run in
        the non-adaptive mode will set the complexity of the test to the passed
        value and will not change it ever. The animator will animate the test and
        frame rate will also be measured.

        * Animometer/runner/animometer.html: Add a new option for the non-adaptive mode.

        * Animometer/runner/resources/animometer.css:
        (section#home input[type="number"]): Define the width of all the edit control in the <home> section.
        (section#home > suites input[type="number"]): The edit controls in the <suites> box will be right aligned and hidden by default.
        (section#home > suites input[type="number"].selected): When the class "selected" is added, the edit controls will be visible.
        (section#home > options > label > input[type="number"]): Deleted.

        * Animometer/runner/resources/animometer.js:
        (window.benchmarkRunnerClient.didFinishLastIteration): Update the local storage with the results of each test.
        (window.optionsManager._adaptiveTestElement): Returns the checkbox for setting the adaptive test option.
        (window.suitesManager._editElement):  Returns the edit element associated with each test element in the suites tree.
        (window.suitesManager._editsElements): Returns a list of all the elements in the <suites> box.
        (window.suitesManager._localStorageNameForTest): Change this function to take strings.
        (window.suitesManager._createTestElement): Adds an edit control beside each test.
        (window.suitesManager.updateEditsElementsState): Adds/Removes the 'selected' class to/from all the tests edit elements.
        (window.suitesManager.updateUIFromLocalStorage): Reads the edit control value from the local storage.
        (window.suitesManager.updateLocalStorageFromUI): Saves the edit control value to the local storage.
        (window.suitesManager.updateLocalStorageFromJSON): Saves the last run results to the local storage.
        (window.benchmarkController.initialize): Shows/Hides the test edit controls based on the adaptive test option.
        (window.benchmarkController.onChangeAdaptiveTestCheckbox): An onchange event handler for the adaptive test checkbox.

        * Animometer/tests/resources/main.js:
        (Benchmark.prototype.update): Fix the complexity of the test if the running mode is non-adaptive test and desired complexity is not zero.
        (window.runBenchmark): Add the test complexity as a new benchmark option.

2015-11-01  Said Abou-Hallawa  <sabouhallawa@apple,com>

        Make the size of the benchmark canvas adaptive to the screen size and screen resolution
        https://bugs.webkit.org/show_bug.cgi?id=150530

        Reviewed by Darin Adler.

        We want to set the size of the benchmark stage dynamically such that it
        depends on the screen resolution and the device scale factor. This patch
        does more than that because the home page css was not done properly. To
        use the flex box layout, the animometer.css has to be rewritten almost from
        scratch. The suites tree has to be rewritten also because it was not collapsing
        and with the flex box layout it was going outside of the window area. The
        options handling and the local storage handling had to be rewritten to
        allow more flexibility with this patch and the future patches. The code
        in animometer.js was reorganized into objects to allow distributing the code
        nicely among separate entities.

        * Animometer/resources/extensions.js:
        (Point.elementClientSize): Returns the client size of an HTMLElement as a Point object.
        (Insets.prototype.get width): Follow the function opening brace style guidelines.
        (Insets.prototype.get height):
        (Insets.prototype.get size): Returns the size of an Insets as a Point object.

        (window.DocumentExtension): Provides document helper functions. It should be assailable from the runner and the tests.
        (window.DocumentExtension.createElement): Creates an HTMLElement given its name, attributes and parentElement.
        (window.DocumentExtension.createSvgElement): Creates an SVGElement given its name, attributes and parentElement (moved from utilities.js).
        (window.DocumentExtension.insertCssRuleAfter): Inserts a CSS rule after an exiting rule given its text.

        (ResultsTable.prototype._showHeader): Use DocumentExtension functions.
        (ResultsTable.prototype._showGraph): Use DocumentExtension functions and create a real button for "Graph..." option.
        (ResultsTable.prototype._showJSON): Use DocumentExtension functions and create a real button for "JSON..." option.
        (Options): Deleted.

        * Animometer/runner/animometer.html: Restructure the page to use the flex box layout.

        * Animometer/runner/resources/animometer.css:
        (html,body):
        (button):

        (button.large-button):The large button appears in the animometer.html.
        (button.large-button:active):
        (button.large-button:disabled):

        (button.small-button): The small button appears in the results table.
        (button.small-button:active):

        (.tree): The tree class is used to list the suites and their tests.
        (.tree .expand-button): This button expands a tree element.
        (.tree .expand-button ~ ul): Hide the children (<ul>...</ul>) of a parent node by default.
        (.tree .expand-button:checked ~ ul): Show the children of a parent node only when checked.
        (.tree ul): Hide the list bullets.
        (.tree li): Indent every node in the tree relative to its parent.
        (.tree ul li): Indent all the non top level nodes only (the tests nodes in our case).
        (.tree > li:last-child): Do not indent the bottom of the last child node.
        (.tree-label): Style for all the labels in the tree.
        (label.tree-label): Style for the labels in the top level only (the suites nodes in our case).
        (label.tree-label:before): Style the unchecked case of the expand-button.
        (:checked ~ label.tree-label:before): Style the checked case of the expand-button.

        (table.results-table): The results table appears while running the test and at the end.
        (.results-table td):
        (.results-table th):

        (div.results-json): The JSON div appears per test or for the whole run.

        (main): This is the flex box container.

        (section): A section is displayed exclusively inside the <main>. It is hidden by default.
        (section.selected): When it is selected, its layout is flex layout.
        (section > footer): The header or the footer of a section should not take more than 15% of the container.

        (section#home): The home section has <suites> and <options> parts to be laid out in the middle.
        (section#home > options):
        (section#home > suites): The <suites> should not take more than 40% of the width.
        (section#home > options > label): The benchmark title.
        (section#home > header > h2): The benchmark title.
        (section#home > options > label > input[type="number"]): Sets the width of the option edit control.

        (section#running): The running section contain the runner <iframe> which takes the whole area of the <main>.
        (section#running > #running-test): This is the <iframe> container.
        (section#running > #running-test > iframe): The <iframe> is created by the runner for each test.
        (section#running > #progress): This is the progress bar.
        (section#running > #progress > #progress-completed): This is another element which grows while the runner is progressing.
        (section#running > #record): This the container of the record results table which is shown while running a test.

        (section#results):
        (section#json):
        (section#test-json):
        (section#test-graph): All these sections have the same layout. A <data> element is laid out between <header> and <footer>.

        (section#results > data):
        (section#json > data):
        (section#test-json > data):
        (section#test-graph > data): The <data> element should take 70% of the <section>.

        (section#test-graph > data > svg):
        (.axis line):
        (.left-samples): These styles are for the d3 graph.

        (section#test-json > data): This is the style of the JSON <data> element.

        (iframe): Deleted.
        (label, p): Deleted.
        (section > p): Deleted.
        (section#home > p): Deleted.
        (section#home > p:first-child): Deleted.
        (#testContainer): Deleted.
        (section#running #progress-completed): Deleted.
        (section#results > table): Deleted.
        (section#results > table td, th): Deleted.
        (section#results > table tr.alt, td): Deleted.
        (section#results > table th): Deleted.
        (section#json > textarea): Deleted.
        (.options): Deleted.
        (.options p): Deleted.
        (#suites ul): Deleted.
        (#suites ul ul): Deleted.
        (#suites ul ul input, #suites ul ul label): Deleted.
        (#suites.showTests ul ul): Deleted.
        (.column): Deleted.
        (input[type="number"]): Deleted.
        (.buttons): Deleted.
        (.small-button): Deleted.
        (#graphContainer): Deleted.
        (.right-samples): Deleted.
        (.sample-time): Deleted.
        (.left-mean): Deleted.
        (.right-mean): Deleted.

        * Animometer/runner/resources/animometer.js:
        (window.benchmarkRunnerClient.initialize): Initialize the client object with the options and the suites.
        (window.benchmarkRunnerClient.willStartFirstIteration): Use new css selectors for results and the record table.
        (window.benchmarkRunnerClient.didFinishLastIteration): Move the code which sets the JSON text to sectionsManager.showJSON().

        (window.sectionsManager): Responsible of managing the <section>s elements inside animometer.html.
        (window.sectionsManager._sectionHeaderH1Element): Return the <h1> inside the <header> of a given section.
        (window.sectionsManager._sectionDataDivElement): Return the <div> inside the <data> of a given section.
        (window.sectionsManager.showScore): Show the score of the last benchmark run.
        (window.sectionsManager.showTestName): Show the test name for detailed results <section>.
        (window.sectionsManager.showJSON): Shows the JSON text of the last benchmark or for a specific test.
        (window.sectionsManager.showSection): Shows a specific <section> in the <main> container.
        (window.sectionsManager.setupSectionStyle): Sets css attributes for all the <section>s.
        (window.sectionsManager.setupRunningSectionStyle): Sets the css attributes for the running <section> only.

        (window.optionsManager): Responsible of managing the user options and streaming them to/form the localStorage.
        (window.optionsManager._optionsElements): Returns the children <input> elements of the <options>.
        (window.optionsManager.updateUIFromLocalStorage): Restore the values of the <options> UI elements from the local storage.
        (window.optionsManager.updateLocalStorageFromUI): Saves the values of the <options> UI elements to the local storage.

        (window.suitesManager): Responsible of managing the user suites and streaming them to/form the localStorage.
        (window.suitesManager._treeElement): Returns the suites tree container element.
        (window.suitesManager._suitesElements): Returns a list of the suites elements.
        (window.suitesManager._checkboxElement): Returns the checkbox element of a given suite.
        (window.suitesManager._localStorageNameForTest): Generates a string for the tuple <suite, test> to be saved in the localStorage.
        (window.suitesManager._updateSuiteCheckboxState): Updates the state of a suite checkbox from the state of its tests' checkboxes.
        (window.suitesManager._updateStartButtonState): Updates the state of the start button from the state of the suites' checkboxes.
        (window.suitesManager._onChangeSuiteCheckbox): Called when a suite checkbox is clicked.
        (window.suitesManager._onChangeTestCheckbox): Called when a test checkbox is clicked.
        (window.suitesManager._createSuiteElement): Creates suite node in the suites tree.
        (window.suitesManager._createTestElement): Creates test node in the suites tree.
        (window.suitesManager.createElements): Creates the suites tree dynamically from the array Suites.
        (window.suitesManager.updateUIFromLocalStorage): Restore the values of the <suites> UI elements from the local storage.
        (window.suitesManager.updateLocalStorageFromUI): aves the values of the <suites> UI elements to the local storage.

        (window.benchmarkController): This is the UI controller of the animometer.html page.
        (window.benchmarkController.initialize): Called when the animometer.html page is loaded.
        (window.benchmarkController._runBenchmark): Starts a benchmark run.
        (window.benchmarkController.startTest): Called when the "Start Test" button is clicked.
        (window.benchmarkController.showResults): Called at the end of the test to show the final results.
        (window.benchmarkController.showJson): Called from the results page to show the JSON of the last benchmark run.
        (window.benchmarkController.showTestGraph): Called from the results the table to show a graph for the samples of a specific test.
        (window.benchmarkController.showTestJSON): Called from the results the table to show a JSON for the samples of a specific test.

        (showSection): Deleted.
        (startTest): Deleted.
        (showResults): Deleted.
        (showJson): Deleted.
        (showTestGraph): Deleted.
        (showTestJSON): Deleted.
        (initialize.toggleTestsCheckbox.onchange): Deleted.
        (initialize): Deleted.
        (updateSuiteSelection): Deleted.
        (updateTestSelection): Deleted.
        (updateSuiteCheckbox): Deleted.
        (localStorageNameForTest): Deleted.
        (populateSettings.): Deleted.
        (populateSettings): Deleted.

        * Animometer/runner/resources/benchmark-runner.js:
        (BenchmarkRunner): Pass the frameContainer element to the BenchmarkRunner.
        (BenchmarkRunner.prototype._appendFrame): Remove unused parameter unwanted styling code.
        (BenchmarkRunner.prototype.runMultipleIterations):  Use the this._client.iterationCount instead of passing it as a parameter also.

        * Animometer/runner/resources/graph.js:
        (graph): Calculate the size of the chart from the container element.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
        (BouncingSvgImage):
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
        (BouncingSvgParticlesStage.prototype._createDefs):
        (BouncingSvgParticlesStage.prototype._createClipStar):
        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
        (BouncingSvgShape.prototype._createShape):
        (BouncingSvgShapesStage.prototype.createGradient):
        Call DocumentExtension.createSvgElement() instead of calling Utilities.createSvgElement().

        * Animometer/tests/resources/main.js:
        (Animator.prototype.animate):
        (Benchmark):
        (Benchmark.prototype.update):
        * Animometer/tests/resources/stage.js:
        (StageBenchmark.prototype.showResults):
        Rename the options to match the <input> ids in animometer.html.

        * Animometer/tests/resources/utilities.js:
        (window.Utilities.createSvgElement): Deleted.

        * Animometer/tests/text/layering-text.html:
        * Animometer/tests/text/resources/layering-text.js:
        (LayeringTextStage):
        (LayeringTextStage.prototype._setFontSize): Sets the size of the text dynamically such that they all fit in one stage.

2015-10-29  Simon Fraser  <simon.fraser@apple.com>

        Animometer computes frame rate incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=150698

        Reviewed by Tim Horton.

        The existing code incremented this._frameCount after checking against this._dropFrameCount.
        This has the effect of setting this._measureTimeOffset one frame too late, so
        we were measuring only two frames, not three, and thus computing an incorrect fps.

        * Animometer/tests/resources/main.js:
        (Animator.prototype.animate):

2015-10-27  Jon Lee  <jonlee@apple.com>

        Add an option to make the graphics benchmark runs a specific test
        https://bugs.webkit.org/show_bug.cgi?id=150528
        rdar://problem/23246614

        Reviewed by Zalan Bujtas.

        Add a checkbox that lets the user list all of the available tests, and select
        the ones to run repeatedly. The test checkboxes will update the state of the suite
        checkbox. The selected tests are stored in localStorage to make it easy to do
        repeated runs.

        * Animometer/runner/animometer.html: Add a checkbox to show individual tests.
        Update other markup.
        * Animometer/runner/resources/animometer.css: Make the settings area a little wider
        to accommodate the longer names of the tests
        * Animometer/runner/resources/animometer.js:
        (startBenchmark): Change the way that the suites are fed into the benchmark
        runner. Go through each of the suites and their tests, and create a new Suite
        with just the enabled tests. While enumerating store the enabled tests into
        localStorage.
        (initialize): Initialization routine (taking over populateSettings). When the
        checkbox for showing tests is toggled, add or remove a class on #suites to show
        the individual tests.
        (updateSuiteSelection): Called whenever the user toggles the checkbox for a suite.
        Either select all or none of the tests.
        (updateTestSelection): Called whenever the user toggles the checkbox for a test.
        (updateSuiteCheckbox): Update the state of the test's suite's checkbox to
        indeterminate if there is at least one enabled test, unchecked if none are selected,
        and checked if all are selected.
        (localStorageNameForTest): Helper function to get the name of the test to use as
        a key to localStorage.
        (populateSettings): Add the tests for each suite into an inner list.

2015-10-26  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an option to output the results of the graphics benchmark in JSON format
        https://bugs.webkit.org/show_bug.cgi?id=150484
        <rdar://problem/23243721>

        Reviewed by Darin Adler.

        * Animometer/resources/extensions.js:
        (ResultsDashboard): A new class to hold the iterations results.
        (ResultsDashboard.prototype.push): Appends an iteration results;
        (ResultsDashboard.prototype.toJSON): Converts the iterations results to JSON format.

        (RecordTable.prototype.clear): Clears the results table.
        (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
        (RecordTable.prototype._showHeader): Shows the table header titles.
        (RecordTable.prototype._showEmpty): Shows an empty table cell.
        (RecordTable.prototype._showValue): Shows a number value in the results table.
        (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
        (RecordTable.prototype._showTest): Shows the results of a single test.
        (RecordTable.prototype._showSuite): Shows the results of a single suite.
        (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
        (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.

        (ResultsTable): RecordTable was renamed to ResultsTable.
        (ResultsTable.prototype.clear): Clears the table element.
        (ResultsTable.prototype._showHeaderRow): Shows a row in the results table header.
        (ResultsTable.prototype._showHeader): Shows the results table header.
        (ResultsTable.prototype._showEmpty): Shows an empty table cell.
        (ResultsTable.prototype._showText): Shows a string in a new table cell.
        (ResultsTable.prototype._showFixedNumber): Shows a number in a new table cell.
        (ResultsTable.prototype._showGraph): Shows a button for the sampled data graph.
        (ResultsTable.prototype._showJSON): Shows a button for the sampled data JSON.
        (ResultsTable.prototype._showTest): Shows the results of a single test.
        (ResultsTable.prototype._showSuite): Shows the results of a single suite.
        (ResultsTable.prototype._showIteration): Shows the results of a single iteration.
        (ResultsTable.prototype.showRecord): Shows a single iteration for a single test.
        (ResultsTable.prototype.showIterations): Shows all the results.
        (RecordTable): Deleted.
        (RecordTable.prototype.clear): Deleted.
        (RecordTable.prototype._showTitles): Deleted.
        (RecordTable.prototype._showHeader): Deleted.
        (RecordTable.prototype._showEmpty): Deleted.
        (RecordTable.prototype._showValue): Deleted.
        (RecordTable.prototype._showSamples): Deleted.
        (RecordTable.prototype._showTest): Deleted.
        (RecordTable.prototype._showSuite): Deleted.
        (RecordTable.prototype.showRecord): Deleted.
        (RecordTable.prototype.showIterations): Deleted.

        * Animometer/resources/sampler.js:
        (Sampler.prototype.startSampling): Use forEach.
        (Sampler.prototype.sample): Use forEach.
        (Sampler.prototype.toJSON): Converts the sampler data to JSON format.

        * Animometer/resources/strings.js: Added.
        This new file will be used to associate the strings used by the benchmark
        with IDs. A string can be changed in one place without having to change
        all the instances of this string in multiple files. There two groups of
        strings in this file. The first one is used by the UI elements and the second
        group is used when constructing the results JSON.

        * Animometer/runner/animometer.html:
        * Animometer/runner/resources/animometer.css:

        * Animometer/runner/resources/animometer.js:
        (window.benchmarkRunnerClient.willAddTestFrame):
        (window.benchmarkRunnerClient.willStartFirstIteration):
        (window.benchmarkRunnerClient.didRunSuites):
        (window.benchmarkRunnerClient.didFinishLastIteration):
        Make benchmarkRunnerClient uses ResultsDashboard instead of _iterationsSamplers
        Get the JSON from ResultsDashboard.toJSON() and pass it to ResultsTable.showIterations().
        Also set the textContent of the "#json" textarea with the results JSON.

        (showResults): Delete unneeded code.
        (showJson): Shows the "json" section.
        (showTestGraph): Rename showGraph() to be showTestGraph().
        (showTestJSON): Shows the JSON of a single testResults.
        (showGraph): Deleted.

        * Animometer/runner/resources/tests.js:
        Use the string table instead of putting literal strings.

        * Animometer/tests/resources/stage.js:
        (StageBenchmark.prototype.showResults):
        Fix the parameters which are passed to RecordTable.showRecord().

        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-css-images.html:
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html:
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
        * Animometer/tests/examples/canvas-electrons.html:
        * Animometer/tests/examples/canvas-stars.html:
        * Animometer/tests/simple/simple-canvas-paths.html:
        * Animometer/tests/template/template-canvas.html:
        * Animometer/tests/template/template-css.html:
        * Animometer/tests/template/template-svg.html:
        * Animometer/tests/text/layering-text.html:
        Include the new strings.js file in all the test files.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add canvas line dash test
        https://bugs.webkit.org/show_bug.cgi?id=150078
        <rdar://problem/23082347>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/tests.js: Add line dash test.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (CanvasLineDashStage): Create a new stage with a default dash pattern and stroke style.
        Maintain a step which will animate the dash.
        (CanvasLineDashStage.prototype.animate): Render the line path with the dash. Increment
        the dash offset to animate.
        (CanvasPathBenchmark.prototype.createStage): Add the test.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add canvas line path tests
        https://bugs.webkit.org/show_bug.cgi?id=150076
        <rdar://problem/23082285>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/tests.js: Add new line path tests, with different
        line joins.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (CanvasLinePathStage): The stage is the same as the SimpleCanvasPathStrokeStage
        but sets the lineJoin on the context.
        (CanvasPathBenchmark.prototype.createStage): Add the tests.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add missing paint objects for arc and arcTo fills
        https://bugs.webkit.org/show_bug.cgi?id=150075
        <rdar://problem/23082233>

        Reviewed by Dean Jackson.

        * Animometer/tests/simple/resources/simple-canvas-paths.js: Add missing paint objects
        for arcTo and arc segment fills.
        (CanvasArcToSegmentFill):
        (CanvasArcToSegmentFill.prototype.draw):
        (CanvasArcSegmentFill):
        (CanvasArcSegmentFill.prototype.draw):

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add canvas line segment tests
        https://bugs.webkit.org/show_bug.cgi?id=150073
        <rdar://problem/23082138>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/tests.js: Add new line segment tests, with different
        line caps.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (CanvasLineSegment): Add new line segment paint object.
        (CanvasLineSegmentStage): Create a new stage that sets the lineCap.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add canvas path fill tests
        https://bugs.webkit.org/show_bug.cgi?id=150071
        <rdar://problem/23082001>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/tests.js: Add new pathTypes for path fills.
        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (CanvasLinePoint): Add basic point for a line, and call lineTo.
        (SimpleCanvasPathFillStage): Add a new stage similar to SimpleCanvasPathStrokeStage.
        (CanvasPathBenchmark.prototype.createStage): Add the tests.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add canvas path tests
        https://bugs.webkit.org/show_bug.cgi?id=150067
        rdar://problem/23081463

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/tests.js: Add a quadratic and bezier path test.

        * Animometer/tests/simple/resources/simple-canvas.js:
        (SimpleCanvasStage.prototype.tune): This kind of test joins all of the segments
        into one long path, and tries to render that one path. Random points make it
        difficult to tell what is going on, so add a parameter to the constructor to
        confine the area where the random coordinates can land. The more complicated the
        case is, the larger an area the path will cover. Add an artificial minimum so
        that the first 200 points aren't confined to a space that is too small.

        * Animometer/tests/simple/resources/simple-canvas-paths.js:
        (SimpleCanvasPathStrokeStage): Add a new kind of stage that inherits from
        SimpleCanvasStage. Each time the frame animates a random line width and stroke
        color are chosen. The path setup is done outside of each paint object.
        (CanvasQuadraticPoint): This point just calls quadraticCurveTo.
        (CanvasPathBenchmark.prototype.createStage): Add the tests.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Add basic canvas tests
        https://bugs.webkit.org/show_bug.cgi?id=150066
        rdar://problem/23081143

        Reviewed by Dean Jackson.

        This adds a new test suite that will cover all of the path-based canvas calls.
        The patch will be divided up to cover tests with similar techniques.

        The simplest version uses a SimpleCanvasStage.

        * Animometer/runner/resources/tests.js: Add tests for quadratic, bezier, arcTo,
        arc, and rect segments. Also include arcTo, arc, and rect fills.
        * Animometer/tests/resources/stage.js:
        (Stage.prototype.randomBool): Added for counterclockwise property for arc segments.
        (Stage.prototype.randomInt): Fix how values are rounded, used by randomBool. It should
        round instead of flooring everything.
        * Animometer/tests/simple/resources/simple-canvas.js: Added. Defines common classes
        used by all simple canvas tests. The page reads best bottom to top.
        (SimpleCanvasStage): Basic stage. Pass a canvasObject which will be used to create new
        objects as needed in tune().
        (SimpleCanvasStage.prototype.tune): Modeled on other tests. Adds and removed objects
        as specified by the provided |count|.
        (SimpleCanvasStage.prototype.animate): Iterate over all the objects and ask them to draw.
        There is no "animating" of the objects; they will just paint statically on the canvas.
        (SimpleCanvasAnimator): Basic animator clears the canvas prior to painting.
        (SimpleCanvasBenchmark): Hard-code the feedback loop parameters instead of including
        them in the query parameters to the test URLs.
        (SimpleCanvasBenchmark.prototype.createAnimator):
        * Animometer/tests/simple/simple-canvas-paths.html: Added.

        * Animometer/tests/simple/resources/simple-canvas-paths.js: Added. There is no "animating"
        of these objects--they just paint statically on the canvas.
        (CanvasQuadraticSegment): Paint a quadratic segment stroke.
        (CanvasBezierSegment): Paint a bezier segment stroke.
        (CanvasArcToSegment): Paint an arcTo stroke.
        (CanvasArcSegment): Paint an arc stroke.
        (CanvasRect): Paint a rect.
        (CanvasRectFill): Paint a filled rect.

        (CanvasPathBenchmark):
        (CanvasPathBenchmark.prototype.createStage): Look for the pathType and create the
        stage using the right paint object.
        (window.benchmarkClient.create):

2015-10-12  Jon Lee  <jonlee@apple.com>

        Refactor tune() to pass in an integer-based count
        https://bugs.webkit.org/show_bug.cgi?id=150060
        <rdar://problem/23079425>

        Reviewed by Dean Jackson.

        All of the tune functions do an initial step of flooring the
        # of painting objects to add or remove. Factor that out since
        the complexity of all of these tests is always expressed in terms
        of countable items.

        * Animometer/tests/resources/main.js:
        (Benchmark.prototype.update): Update the tuneValue.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
        (BouncingParticlesStage.prototype.tune): Remove the count adjustment.
        * Animometer/tests/examples/resources/canvas-electrons.js:
        (CanvasElectronsStage.prototype.tune): Ditto.
        * Animometer/tests/examples/resources/canvas-stars.js:
        (CanvasStarsStage.prototype.tune): Ditto.
        * Animometer/tests/text/resources/layering-text.js:
        (LayeringTextStage.prototype.tune): Ditto.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Store test-interval in localStorage
        https://bugs.webkit.org/show_bug.cgi?id=150055
        <rdar://problem/23078879>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/animometer.js:
        (populateSettings): Keep track of the specified test interval in localStorage
        to make it easy to repeat a test suite.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Remove "../tests/" from the URLs of all tests
        https://bugs.webkit.org/show_bug.cgi?id=150054
        <rdar://problem/23078784>

        Reviewed by Dean Jackson.

        Presumably all tests will be running from the tests/ directory,
        so we don't have to specify it in all of the test URLs.

        * Animometer/runner/resources/benchmark-runner.js:
        (BenchmarkRunnerState.prototype.prepareCurrentTest): Prepend
        "../tests/" to all tests.
        * Animometer/runner/resources/tests.js: Remove "../tests/" from
        all URLs.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Refactor test suites to a separate class.
        https://bugs.webkit.org/show_bug.cgi?id=150053
        <rdar://problem/23078645>

        Reviewed by Dean Jackson.

        Create a Suite class to refactor out prepare() and run().
        Generate the checkboxes representing the suites using Suites
        instead of maintaining a separate list. Also, save the
        selections out to localStorage.

        * Animometer/runner/animometer.html: Remove the explicitly listed
        suites. These will be generated from Suites instead.
        * Animometer/runner/resources/animometer.js:
        (populateSettings): Iterate through Suites, and create the
        label and checkbox. Attach the Suite object to the checkbox so
        when the benchmark is started, we get direct access. Initialize
        the checkmark based on its value in localStorage. Set this to
        run when DOMContentLoaded is dispatched.
        (startBenchmark): Grab all of the checkboxes, inspect their
        values, add it to enabledSuites if selected. Remember whether
        the suite was enabled in localStorage, so that it's easy to do
        repeated runs.
        * Animometer/runner/resources/tests.js:
        (Suite): Create a new Suite class. Refactor out prepare() and
        run(), since all of them have the same implementation. Populate
        Suites with Suite instances instead of generic objects.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Update graph styles for legibility.
        https://bugs.webkit.org/show_bug.cgi?id=150052
        <rdar://problem/23078503>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/animometer.css: Update colors and
        stroke thicknesses to make the graphs easier to read.
        (.smaple-time): Correct to .sample-time
        * Animometer/runner/resources/graph.js:
        (graph): Ditto.

2015-10-12  Jon Lee  <jonlee@apple.com>

        Update graph styles for legibility.
        https://bugs.webkit.org/show_bug.cgi?id=150052
        <rdar://problem/23078503>

        Reviewed by Dean Jackson.

        * Animometer/runner/resources/animometer.css: Update colors and
        stroke thicknesses to make the graphs easier to read.
        (.smaple-time): Correct to .sample-time
        * Animometer/runner/resources/graph.js:
        (graph): Ditto.

2015-10-12  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, revert an unintended commit.

        * JetStream/Octane2/crypto.js:
        (montRevert):
        (montReduce):

2015-10-05  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add a graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=149053
        <rdar://problem/18984169>

        Reviewed by Dean Jackson.

        Instead of measuring the FPS of the animation, this benchmark measures the
        test complexity when rendering at a set-point FPS which should be lower
        than 60 FPS. This benchmark tries to stay at the set-point FPS by using
        a closed loop control system PID function. The gain of the system is passed
        as a parameter when running the test. Measuring the FPS faithfully results
        very fluctuating values. A Kalman filter is used to give a better estimate
        for the current FPS.

        The animation of the tests is done manually. requestAnimationFrame() is
        called with a callback. Inside this callback, the test is animating by
        changing the positions of the elements inside the page. The test complexity
        may change also if the current FPS is not equal to the desired FPS.

        In this patch, the benchmark and the tests are included. The shared code
        and the tests runner are included in separate patches.

        * Animometer/runner/animometer.html:
        * Animometer/runner/resources/animometer.js:
        Add two new examples for more complex animation techniques.
        Add an option to show/hide the test running results which is off by default.

        * Animometer/runner/resources/tests.js: Added.
        (suiteFromName): Returns a suite given its name.
        (testFromName): Returns a test given its suite and name.

        * Animometer/tests: Added.
        This directory includes all the test suites to be run by the benchmark.
        runner. All the tests should try to run on three stages: CSS, canvas and
        SVG.

        * Animometer/tests/bouncing-particles: Added.
        * Animometer/tests/bouncing-particles/resources: Added.
        The bouncing particles test is an example of a simple animation technique.

        * Animometer/tests/bouncing-particles/bouncing-canvas-images.html: Added.
        * Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html: Added.
        * Animometer/tests/bouncing-particles/bouncing-css-images.html: Added.
        * Animometer/tests/bouncing-particles/bouncing-css-shapes.html: Added.
        * Animometer/tests/bouncing-particles/bouncing-svg-images.html: Added.
        * Animometer/tests/bouncing-particles/bouncing-svg-shapes.html: Added.
        Bouncing particles test pages.

        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js: Added.
        (BouncingParticle): Base class for a bouncing particle.
        (BouncingParticle.prototype.center): Returns the center point or the particle.
        (BouncingParticle.prototype.animate): Moves the particle based on its current position, angle and velocity.

        (BouncingParticlesAnimator): A sub class of Animator.

        (BouncingParticlesStage): Represents the container of all the bouncing particles.
        (BouncingParticlesStage.prototype.parseShapeParamters): Gets the shape parameters for shape animating tests.
        (BouncingParticlesStage.prototype.randomRotater): Creates a rotater for the particles.
        (BouncingParticlesStage.prototype.animate): Animates all the particles.
        (BouncingParticlesStage.prototype.tune): Changes the test by adding or removing particles.

        (BouncingParticlesBenchmark): Runs the benchmark for bouncing particles test.
        (BouncingParticlesBenchmark.prototype.createAnimator): Creates an animator of type BouncingParticlesAnimator.

        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js: Added.
        (BouncingCssShape): A sub class of BouncingParticle for animating CSS shapes.
        (BouncingCssShape.prototype._createSpan): Creates a <span> element and takes the shape and clipping classes into consideration.
        (BouncingCssShape.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
        (BouncingCssShape.prototype.animate): Rotates and moves the shape to a new location.

        (BouncingCssShapesStage): A sub class of BouncingParticlesStage for animating CSS shapes.
        (BouncingCssShapesStage.prototype.createParticle): Creates a particle of type BouncingCssShape.
        (BouncingCssShapesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.

        (BouncingCssShapesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS shapes.
        (BouncingCssShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCssShapesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingCssShapesBenchmark.

        * Animometer/tests/bouncing-particles/resources/bouncing-css-images.js: Added.
        (BouncingCssImage): A sub class of BouncingParticle for animating CSS images.
        (BouncingCssImage.prototype._move): Move the particle to a new location. Apply transform since it does not require layout.
        (BouncingCssImage.prototype.animate): Rotates and moves the shape to a new location.

        (BouncingCssImagesStage): A sub class of BouncingParticlesStage for animating CSS images.
        (BouncingCssImagesStage.prototype.createParticle): Creates a particle of type BouncingCssImage.
        (BouncingCssImagesStage.prototype.particleWillBeRemoved): Removes the corresponding element form the parent children list.

        (BouncingCssImagesBenchmark): A sub class of BouncingParticlesBenchmark for animating CSS images.
        (BouncingCssImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCssImagesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingCssImagesBenchmark.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-particles.js: Added.
        (BouncingCanvasParticle): A base sub-class of BouncingParticle for animating canvas particles.
        (BouncingCanvasParticle.prototype._applyRotation): Apply the particle rotation-around-center transform to the canvas context.
        (BouncingCanvasParticle.prototype._applyClipping): Apply the particle clipping to the canvas context.
        (BouncingCanvasParticle.prototype._draw): A non-implemented version of the drawing function.
        (BouncingCanvasParticle.prototype.animate): Carries out all the steps to redraw the canvas particle.

        (BouncingCanvasParticlesStage): A base sub-class of BouncingParticlesStage for animating canvas particles.

        (BouncingCanvasParticlesAnimator): A concrete sub-class of BouncingParticlesAnimator for animating canvas particles.
        (BouncingCanvasParticlesAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.

        (BouncingCanvasParticlesBenchmark): A base sub-class of StageBenchmark for animating canvas particles.
        (BouncingCanvasParticlesBenchmark.prototype.createAnimator): Creates the canvas particles animator.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js: Added.
        (BouncingCanvasShape): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
        (BouncingCanvasShape.prototype._applyFill): Sets the fillStyle in the canvas context.
        (BouncingCanvasShape.prototype._drawShape): Carries out the actual drawing.
        (BouncingCanvasShape.prototype._draw): Carries out all the steps to draw the shape.

        (BouncingCanvasShapesStage): A concrete sub-class of BouncingCanvasParticle for animating canvas shapes.
        (BouncingCanvasShapesStage.prototype.createParticle): Creates a particle of type BouncingCanvasShape.

        (BouncingCanvasShapesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas shapes.
        (BouncingCanvasShapesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasShapesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasShapesBenchmark.

        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js: Added.
        (BouncingCanvasImage): A concrete sub-class of BouncingCanvasParticle for animating canvas images.
        (BouncingCanvasImage.prototype._draw): Draws an image on the context of a canvas.

        (BouncingCanvasImagesStage): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
        (BouncingCanvasImagesStage.prototype.createParticle): Creates a particle of type BouncingCanvasImage.

        (BouncingCanvasImagesBenchmark): A concrete sub-class of BouncingCanvasParticlesBenchmark for animating canvas images.
        (BouncingCanvasImagesBenchmark.prototype.createStage): Creates a stage of type BouncingCanvasImagesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingCanvasImagesBenchmark.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js: Added.
        (BouncingSvgParticle): A base sub-class of BouncingParticle for animating SVG particles.
        (BouncingSvgParticle.prototype._applyClipping): Apply the particle clipping by setting the 'clip-path' attribute of the SVGElement.
        (BouncingSvgParticle.prototype._move): Moves the particle to a new location. Apply transform since it does not require layout.
        (BouncingSvgParticle.prototype.animate): Rotates and moves the shape to a new location.
        (BouncingSvgParticlesStage): A sub class of BouncingParticlesStage for animating SVGElements.
        (BouncingSvgParticlesStage.prototype._createDefs): Creates an SVGDefsElement.
        (BouncingSvgParticlesStage.prototype._ensureDefsIsCreated): Ensures there is only one SVGDefsElement is created.
        (BouncingSvgParticlesStage.prototype._createClipStar): Creates an SVGClipPathElement and sets its 'd' attribute to a star like shape.
        (BouncingSvgParticlesStage.prototype.ensureClipStarIsCreated): Ensure there is only one star SVGClipPathElement is created.
        (BouncingSvgParticlesStage.prototype.particleWillBeRemoved): Remove the corresponding element form the parent children list.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js: Added.
        (BouncingSvgShape): A concrete sub-class of BouncingSVGParticle for animating SVG shapes.
        (BouncingSvgShape.prototype._createShape): Creates an SVG shape.
        (BouncingSvgShape.prototype._applyFill): Applies the selected fill style to the SVG shape.

        (BouncingSvgShapesStage): A concrete sub-class of BouncingSvgParticlesStage for animating SVG shapes.
        (BouncingSvgShapesStage.prototype.createGradient): Creates an SVGLinearGradientElement.
        (BouncingSvgShapesStage.prototype.createParticle): Creates a particle of type BouncingSvgShape.
        (BouncingSvgShapesStage.prototype.particleWillBeRemoved): Ensures the attached SVGLinearGradientElement is removed from the SVGDefsElement.

        (BouncingSvgShapesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
        (BouncingSvgShapesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgShapesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgShapesBenchmark.

        * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js: Added.
        (BouncingSvgImage): A concrete sub-class of BouncingSVGParticle for animating SVG images.

        (BouncingSvgImagesStage): A concrete sub-class of BouncingSVGParticlesBenchmark for animating SVG images.
        (BouncingSvgImagesStage.prototype.createParticle): Creates a particle of type BouncingSvgImage.

        (BouncingSvgImagesBenchmark): A concrete sub-class of BouncingParticlesBenchmark for animating SVG images.
        (BouncingSvgImagesBenchmark.prototype.createStage): Creates a stage of type BouncingSvgImagesStage.
        (window.benchmarkClient.create): Creates a benchmark of type BouncingSvgImagesBenchmark.

        * Animometer/tests/examples: Added.
        * Animometer/tests/examples/canvas-electrons.html: Added.
        * Animometer/tests/examples/canvas-stars.html: Added.
        Examples test pages.

        * Animometer/tests/examples/resources: Added.
        * Animometer/tests/examples/resources/canvas-electrons.js: Added.
        (CanvasElectron): An object which draws and animate a electron object on a canvas stage.
        (CanvasElectron.prototype._draw): Draws the electron object.
        (CanvasElectron.prototype.animate): Animates the electron object.

        (CanvasElectronsStage): A concrete sub-class of Stage for animating electrons.
        (CanvasElectronsStage.prototype.tune): Changes the test by adding or removing elements.
        (CanvasElectronsStage.prototype.animate): Animates the test elements.

        (CanvasElectronsAnimator): A concrete sub-class of StageAnimator for animating canvas electrons.
        (CanvasElectronsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.

        (CanvasElectronsBenchmark): A concrete sub-class of StageBenchmark for animating electrons.
        (CanvasElectronsBenchmark.prototype.createStage): Creates a stage of CanvasElectronsStage.
        (CanvasElectronsBenchmark.prototype.createAnimator): Creates an animator of type CanvasElectronsAnimator.
        (window.benchmarkClient.create): Creates a benchmark of type CanvasElectronsBenchmark.

        * Animometer/tests/examples/resources/canvas-stars.js: Added.
        (CanvasStar): An object which draws and animate a star object on a canvas stage.
        (CanvasStar.prototype._draw): Draws the star object.
        (CanvasStar.prototype.animate): Animates the star object.

        (CanvasStarsStage): A concrete sub-class of Stage for animating stars.
        (CanvasStarsStage.prototype.tune): Changes the test by adding or removing elements.
        (CanvasStarsStage.prototype.animate): Animates the test elements.

        (CanvasStarsAnimator): A concrete sub-class of StageAnimator for animating canvas stars.
        (CanvasStarsAnimator.prototype.animate): Overrides the base class method to clear the canvas before redrawing the stage.

        (CanvasStarsBenchmark): A concrete sub-class of Benchmark for animating stars.
        (CanvasStarsBenchmark.prototype.createStage): Creates a stage of CanvasStarsStage.
        (CanvasStarsBenchmark.prototype.createAnimator): Creates an animator of type CanvasStarsAnimator.
        (window.benchmarkClient.create): Creates a benchmark of type CanvasStarsBenchmark.

        * Animometer/tests/resources: Added.
        This directory includes the script which is required to run an adaptive
        graphics benchmark. From an empty test page, the set of classes in this
        directory are responsible for measuring the current frame rate and
        changing the test to reach a desired FPS. It keeps asking the test page
        to tune itself by a certain value to increase or decrease the frame rate.
        It's also responsible for sampling the test state and the corresponding
        frame rate.

        * Animometer/tests/resources/main.js: Added.
        (BenchmarkState): Tracks the state of the benchmark test.
        (BenchmarkState.prototype._timeOffset): Returns the timeOffset of a stage.
        (BenchmarkState.prototype._message): Returns the message of a stage.
        (BenchmarkState.prototype.update): Sets the currentTimeOffset to a new value.
        (BenchmarkState.prototype.samplingTimeOffset): Returns the timeOffset of the sampling stage.
        (BenchmarkState.prototype.currentStage): Returns the current stage of the benchmark.
        (BenchmarkState.prototype.currentMessage): Returns the message of the current stage and timeOffset.
        (BenchmarkState.prototype.currentProgress): Returns a percentage of how much the benchmark is running.

        (Animator): Manages animating the test.
        (Animator.prototype.start): Called if animating using setInterval is requested.
        (Animator.prototype.timeDelta): Returns the current timeDelta
        (Animator.prototype.animate): Manages the test animation.
        (Animator.prototype.animateLoop): Called if animating using requestAnimationFrame is requested.

        (Benchmark): Manages running the test benchmark and recording the sampled data.
        (Benchmark.prototype.start): Starts the benchmark.
        (Benchmark.prototype.update): Called from the animator.animate() to change the complexity of the test.
        (Benchmark.prototype.record): Shows the current (not final) results of the benchmark.
        (Benchmark.prototype.resolveWhenFinished): Spins until the benchmark is finished and returns its results.
        (Benchmark.prototype.run): Starts the test, runs it, waits until it is finished and return its results.
        (window.runBenchmark): Called from the benchmark runner through the suite controller run-callback.

        * Animometer/tests/resources/math.js: Added.
        (Matrix): A matrix object.
        (Vector3): A vector of size 3 object.
        (Matrix3): A matrix of size 3x3 object.

        (PIDController): Closed-loop controller for a set-point y.
        (PIDController.prototype._sat): Limits the output to a certain range.
        (PIDController.prototype.tune): Given the current output of a system, it produces a new pid value for tuning it.

        (KalmanEstimator): Implement Kalman filter to get an estimate for a sampled data point.
        (KalmanEstimator.prototype.estimate): Returns an estimate for for a sampled data point.

        * Animometer/tests/resources/utilities.js: Added.
        (window.Utilities._parse): Given a separator character, it pareses a string to a set of <key, value> pairs.
        (window.Utilities.parseParameters): Parses a test parameters.
        (window.Utilities.parseArguments): Parses a tag arguments.
        (window.Utilities.extendObject): Adds the attributes and their values of an object to another object.
        (window.Utilities.copyObject): Copies the attributes and their values of an object to a new object.
        (window.Utilities.mergeObjects): Copies the attributes and their values of two objects to a new object.
        (window.Utilities.createSvgElement): Creates an SVGElement given its name and its attributes.

        * Animometer/tests/resources/stage.css: Added.
        * Animometer/tests/resources/stage.js: Added.
        (Rotater): Manages rotating an angle within a fixed time interval.
        (Rotater.prototype.get interval): Returns the time interval which is required to rotate 360 degrees.
        (Rotater.prototype.next): Moves the current time by a delta.
        (Rotater.prototype.degree): Returns the current rotating degree.
        (Rotater.prototype.rotateZ): Returns CSS formatted transform rotateZ() string for the current degree.
        (Rotater.prototype.rotate): Returns SVG formatted transform rotate() string for the current degree.

        (Stage): A base class for managing the test complexity and test animation.
        (Stage.prototype.get size): Returns the size of the stage excluding the CSS padding.
        (Stage.prototype.random): Returns a random float.
        (Stage.prototype.randomInt): Returns a random integer.
        (Stage.prototype.randomPosition): Returns a random position.
        (Stage.prototype.randomSquareSize): Returns a square size.
        (Stage.prototype.randomVelocity): Returns a random velocity.
        (Stage.prototype.randomAngle): Returns a random angle.
        (Stage.prototype.randomColor): Returns a random color not too dark and not too light.
        (Stage.prototype.randomRotater): Creates a random rotater. Its velocity depends on choosing a random rotation time interval.
        (Stage.prototype.tune): A not-implemented version of this function.
        (Stage.prototype.animate): A not-implemented version of this function.
        (Stage.prototype.clear): Clears the stage from all its animation elements.

        (StageAnimator): A base class for the stage-based animators.
        (StageAnimator.prototype.animate): Calls Animator.animate() which updates the test page and then calls Stage.animate() to force redraw.

        (StageBenchmark): A base class for the stage-based benchmarks.
        (StageBenchmark.prototype.createStage): Creates the default stage.
        (StageBenchmark.prototype.createAnimator): Creates the default animator.
        (StageBenchmark.prototype.tune): Delegates the call to stage.
        (StageBenchmark.prototype.clear): Delegates the call to stage.
        (StageBenchmark.prototype.showResults): Shows the results/progress through its recordTable and progressBar.

        * Animometer/tests/resources/yin-yang.png: Added.
        * Animometer/tests/resources/yin-yang.svg: Added.
        These images are shared among all the tests.

        * Animometer/tests/template: Added.
        * Animometer/tests/template/resources: Added.
        This directory includes template tests which do nothing. They can be used
        to author new tests. Animated items can be created, moved and redrawn by
        removing the TODO comments in the script files and writing actual code.

        * Animometer/tests/template/template-css.html: Added.
        * Animometer/tests/template/template-canvas.html: Added.
        * Animometer/tests/template/template-svg.html: Added.
        Template test pages. They can be used as they are. CSS attributes or hidden
        elements can be added to these derived test pages if needed.

        * Animometer/tests/template/resources/template-css.js: Added.

        (TemplateCssStage): A stage to create and animate HTMLElements.
        (TemplateCssStage.prototype.tune): Changes the test by adding or removing elements.
        (TemplateCssStage.prototype.animate): Animates the test elements.
        (TemplateCssBenchmark):
        (TemplateCssBenchmark.prototype.createStage): Creates the test stage.
        (window.benchmarkClient.create): Creates a benchmark of type TemplateCssBenchmark.

        * Animometer/tests/template/resources/template-canvas.js: Added.
        (TemplateCanvasObject):
        (TemplateCanvasObject.prototype._draw): Draws the objects on the canvas context.
        (TemplateCanvasObject.prototype.animate): Moves and redraws the object.
        (TemplateCanvasStage): A stage to create and animate drawing elements.
        (TemplateCanvasStage.prototype.tune): hanges the test by adding or removing elements.
        (TemplateCanvasStage.prototype.animate):  Animates the test elements.
        (TemplateCanvasAnimator.prototype.animate): Starts the animation every frame.
        (TemplateCanvasBenchmark):
        (TemplateCanvasBenchmark.prototype.createStage): Creates a stage of type TemplateCanvasStage.
        (TemplateCanvasBenchmark.prototype.createAnimator): Creates a animator of type TemplateCanvasAnimator.
        (window.benchmarkClient.create): Creates a benchmark of type TemplateCanvasBenchmark.

        * Animometer/tests/template/resources/template-svg.js: Added.
        (TemplateSvgStage): A stage to create and animate SVGElements.
        (TemplateSvgStage.prototype.tune): Changes the test by adding or removing elements.
        (TemplateSvgStage.prototype.animate): Animates the test elements.
        (TemplateSvgBenchmark.prototype.createStage): Creates a stage of type TemplateSvgStage.
        (window.benchmarkClient.create): Creates a benchmark of type TemplateSvgBenchmark.

        * Animometer/tests/text: Added.
        * Animometer/tests/text/resources: Added.
        This directory includes the text animating tests which currently runs
        on CSS stage only.

        * Animometer/tests/text/layering-text.html: Added.
        Text test page.

        * Animometer/tests/text/resources/layering-text.js: Added.
        (LayeringTextStage): Represents the container of all the stacked text layers.
        (LayeringTextStage.parseTextItem): Parses a textItem which may be an opening tag, a closing tag or a self-closing tag.
        (LayeringTextStage.isOpeningTextItem): Returns true if the textItem is an opening tag e.g. '<ol>'.
        (LayeringTextStage.isClosingTextItem): Returns true if  the textItem is an closing tag e.g. '</ol>.
        (LayeringTextStage.textItemsFlags.LayeringTextStage.textItems.map): Calculates and stores isOpening and isClosing flags for each textItem.
        (LayeringTextStage.isColorableTextItem): Returns true if the textItem is self-closing tag e.g. '<p>...</p>'.
        (LayeringTextStage.isInsertableTextItem): Returns true if the textItems causes a new element to be added to the text layers.
        (LayeringTextStage.colorableTextItems.LayeringTextStage.textItemsFlags.filter): Number of colorable textItems.
        (LayeringTextStage.insertableTextItems.LayeringTextStage.textItemsFlags.filter): Number of insertable textItems.
        (LayeringTextStage.colorIndexToTextElementIndex): Maps from colorIndex [0..colorableTextItems-1] to textElementIndex [0..insertableTextItems-1].
        (LayeringTextStage.prototype._nextTextItem): Moves the _textItemIndex one step forward in a loop [0..LayeringTextStage.textItems.length-1].
        (LayeringTextStage.prototype._previousTextItem): Moves the _textItemIndex one step backward in a loop.
        (LayeringTextStage.prototype._pushTextElement): Creates a new textItemElement and adds it to the topmost container <div>.
        (LayeringTextStage.prototype._popTextElement): Removes the last textItemElement from the topmost container <div>.
        (LayeringTextStage.prototype._colorTextItem): Changes the background color of a single colorable textElement. The index advances in a circle [0..colorableTextItems-1].
        (LayeringTextStage.prototype.animate): Changes the background color and the text color of the textElements such that a redraw is enforced.
        (LayeringTextStage.prototype.tune): Adds or removes textElements to the stage.

        (LayeringTextBenchmark): Runs the benchmark for the layering text test.
        (LayeringTextBenchmark.prototype.createStage): Creates a stage of type LayeringTextStage.
        (window.benchmarkClient.create): Creates a benchmark of type LayeringTextBenchmark.

2015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add shared code for a new a graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=149691

        Reviewed by Ryosuke Niwa.

        This set of classes will be shared and used by the tests and the runner
        of a new graphics benchmark.

        * Animometer/resources: Added.
        * Animometer/resources/algorithm.js: Added.
        (Array.prototype.swap): Swaps two elements in an array.
        (Heap): Binary Min/Max Heap object
        (Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
        (Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
        (Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
        (Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
        (Heap.prototype.init): Initializes the heap state.
        (Heap.prototype.top): Returns the value stored at the top of the heap.
        (Heap.prototype.push): Pushes a new node at the top of the heap.
        (Heap.prototype.pop): Extracts the top node of the heap.
        (Heap.prototype._bubble): Fixes the heap property by moving upward.
        (Heap.prototype._sink): Fixes the heap property by moving downward.
        (Heap.prototype.str): Prints the nodes of the heap to a string.
        (Heap.prototype.values): Returns the last "size" heap elements values.

        (Algorithm.createMinHeap): Creates a size-bounded min-heap object.
        (Algorithm.createMaxHeap): Creates a size-bounded max-heap object.

        * Animometer/resources/extensions.js: Added.
        (Point): Point object but can be used as size also.
        (Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
        (Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
        (Point.prototype.get width): Should be called when the point is used as size.
        (Point.prototype.get height): Should be called when the point is used as size.
        (Point.prototype.get center): Should be called when the point is used as size.
        (Point.prototype.add): Returns a new point = this + other.
        (Point.prototype.subtract): Returns a new point = this - other.
        (Point.prototype.multiply): Returns a new point = this * other.
        (Point.prototype.move): Moves the point in a given direction, velocity, time period.

        (Insets): Represents borders of a container.
        (Insets.prototype.get width): Returns left + right.
        (Insets.prototype.get height): Returns top + bottom.

        (SimplePromise):
        (SimplePromise.prototype.then):
        (SimplePromise.prototype.resolve):
        Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.

        (Options): Benchmark running options as they are set by the user.

        (ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
        (ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
        (ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
        (ProgressBar.prototype.setPos): Draws the current progress in the current range.

        (RecordTable): Shows the results of running a benchmark in a tabular form.
        (RecordTable.prototype.clear): Clears the results table.
        (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
        (RecordTable.prototype._showHeader): Shows the table header titles.
        (RecordTable.prototype._showEmpty): Shows an empty table cell.
        (RecordTable.prototype._showValue): Shows a number value in the results table.
        (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
        (RecordTable.prototype._showTest): Shows the results of a single test.
        (RecordTable.prototype._showSuite): Shows the results of a single suite.
        (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
        (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.

        * Animometer/resources/sampler.js: Added.
        (Statistics.sampleMean): Returns the sample mean.
        (Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
        (Statistics.geometricMean): Returns the geometric mean.

        (Experiment): Represents a sampling experiment.
        (Experiment.prototype._init): Called when the object is created and when startSampling() is called.
        (Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
        (Experiment.prototype.sample): Add a new data point.
        (Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
        (Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
        (Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
        (Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
        (Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
        (Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.

        (Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
        (Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
        (Sampler.prototype.sample): Add a new data vector at a given time offset.

2015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add the test runner for a new a graphics benchmark
        https://bugs.webkit.org/show_bug.cgi?id=149683

        Reviewed by Ryosuke Niwa.

        The test runner collects the selected test suites and the running options
        from its home page. It loops through all the tests, runs them and collects
        their running results. At the end, it shows summary results and a final
        score. It can also show a chart for a test sampled data.

        * Animometer: Added.
        * Animometer/runner: Added.
        * Animometer/runner/resources: Added.

        * Animometer/runner/animometer.html: Added.
        * Animometer/runner/resources/animometer.css: Added.
        The benchmark runner page and css.

        * Animometer/runner/resources/animometer.js: Added.
        (window.benchmarkRunnerClient.willAddTestFrame): Called after the test <iframe> is created.
        (window.benchmarkRunnerClient.didRunTest): Called after running a test is finished.
        (window.benchmarkRunnerClient.willStartFirstIteration): Called at the beginning before running any test.
        (window.benchmarkRunnerClient.didRunSuites): Called after running all tests of a suite.
        (window.benchmarkRunnerClient.didFinishLastIteration): Called after running the last test.

        (showSection): Shows a section in the animometer.html page.
        (startTest): Called when the "Start Test" button is clicked.
        (showResults): Called after finishing all the tests.
        (showGraph): Called when "Click..." button in the "Samples" column of the results table is clicked

        * Animometer/runner/resources/benchmark-runner.js: Copied from PerformanceTests/Speedometer/resources/benchmark-runner.js.
        (BenchmarkRunnerState): Tracks the current running <suite, test>
        (BenchmarkRunnerState.prototype.currentSuite): Returns the current running suite.
        (BenchmarkRunnerState.prototype.currentTest): Returns the current running test.
        (BenchmarkRunnerState.prototype.isFirstTest): Returns true if we are running the first test in the current suite.
        (BenchmarkRunnerState.prototype.next): Advances to the next test.
        (BenchmarkRunnerState.prototype.prepareCurrentTest): Creates a new <iframe> and waits for it to load a test.

        (BenchmarkRunner): Manages running the tests and communicating with the benchmarkRunnerClient.
        (BenchmarkRunner.prototype.waitForElement): Waits for an element to be created.
        (BenchmarkRunner.prototype._appendFrame): Creates a new <iframe> element.
        (BenchmarkRunner.prototype._removeFrame): Removed the current <iframe> element.
        (BenchmarkRunner.prototype._runTestAndRecordResults): Runs the current test and saves its results.
        (BenchmarkRunner.prototype.step): Either runs the current test if there is or start a new iteration.
        (BenchmarkRunner.prototype.runAllSteps): Loops to run all the tests and move to the next iteration.
        (this._runNextIteration): Starts a new iteration or show the results.
        (BenchmarkRunner.prototype.runMultipleIterations): Loops to run all the iterations and show the results
        (BenchmarkRunner.prototype._finalize): Finalizes the current iteration and starts a new one.

        (SimplePromise): Deleted.
        (SimplePromise.prototype.then): Deleted.
        (SimplePromise.prototype.resolve): Deleted.
        (BenchmarkTestStep): Deleted.
        (Fibonacci): Deleted.
        SimplePromise was moved t Animometer/resources/extensions.js because it is used by the runner and the tests.

        (BenchmarkRunner.prototype._waitAndWarmUp): Deleted.
        (BenchmarkRunner.prototype._runTest): Deleted.
        (BenchmarkState.prototype.currentSuite): Deleted.
        (BenchmarkState.prototype.currentTest): Deleted.
        (BenchmarkState.prototype.next): Deleted.
        (BenchmarkState.prototype.isFirstTest): Deleted.
        (BenchmarkState.prototype.prepareCurrentSuite): Deleted.
        BenchmarkState was renamed to BenchmarkRunnerState to not be confused with the tests BenchmarkState.

        * Animometer/runner/resources/d3.min.js: Copied from Websites/perf.webkit.org/public/v2/js/d3/d3.min.js.
        Needed for drawing charts for the sampled scores and frame rates.

        * Animometer/runner/resources/graph.js: Added.
        (graph): Draws a chart for a test sampled data. It shows two y-axes: one for the animated items and the second for FPS.

        * Skipped: Skip the Animometer benchmark for now.

2015-08-27  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
        https://bugs.webkit.org/show_bug.cgi?id=148470

        Unreviewed gardening, skip the hanging test to make the performance bot work.

        * Skipped:

2015-08-17  Chris Dumez  <cdumez@apple.com>

        Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
        https://bugs.webkit.org/show_bug.cgi?id=148080

        Reviewed by Antti Koivisto.

        Add performance tests for traversal of *uncached* collections returned
        by getElementsByClassName() / getElementsByTagName(). These methods
        will soon be updated to return an HTMLCollection instead of a
        NodeList and we need to make sure we don't regress performance in the
        process.

        * DOM/get-elements-by-class-name-traversal-uncached.html: Added.
        * DOM/get-elements-by-tag-name-traversal-uncached.html: Added.

2015-08-14  Chris Dumez  <cdumez@apple.com>

        Add performance tests for NodeList and HTMLCollection traversal
        https://bugs.webkit.org/show_bug.cgi?id=148043

        Reviewed by Gavin Barraclough.

        Add performance tests for NodeList and HTMLCollection traversal.
        Ideally, those 2 tests should be as fast. However, due to inefficiencies
        in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
        slower. This will be addressed in the near future.

        * Bindings/childNodes-traversal.html: Added.
        * Bindings/children-traversal.html: Added.

2015-08-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Add a second font-fallback performance test
        https://bugs.webkit.org/show_bug.cgi?id=147692

        Reviewed by Ryosuke Niwa.

        This test is smaller, but has more realistic content. Also, it uses the "lang" attribute.

        * Layout/font-fallback-2.html: Added.
        * Layout/resources/font-fallback-2.html: Added.

2015-07-13  Filip Pizlo  <fpizlo@apple.com>

        Update JetStream version number to 1.1.

        Rubber stamped by Ryosuke Niwa.

        * JetStream/create.rb:

2015-06-30  Filip Pizlo  <fpizlo@apple.com>

        Update the JetStream documentation to reflect the recent changes
        https://bugs.webkit.org/show_bug.cgi?id=146474

        Reviewed by Geoffrey Garen.

        * JetStream/create.rb: Bump the version.
        * JetStream/in-depth-TEMPLATE.html: Add cdjs documentation. Remove cordic documentation. Change documentation for splay and mandreel.

2015-06-26  Filip Pizlo  <fpizlo@apple.com>

        [JetStream] Raise the percentile of mandreel-latency and splay-latency
        https://bugs.webkit.org/show_bug.cgi?id=146378

        Reviewed by Mark Lam.

        The current percentile is 95%.  When I looked at the sample lists in our GC, it was
        clear that the worst 5% samples completely amortize our GC pauses.  Our GC pauses can
        be quite bad.  Clearly, splay-latency is meant to test whether we have an incremental
        GC that ensures that you don't have bad worst-case pauses.  But 95% is too small,
        because it doesn't really capture those pauses.  Raising the percentile to above 99%
        appears to do the trick.  99.5% or more seems like a good bet.  The trade-off there is
        just that if we set it too high, then we won't have enough statistics.  Doing this very
        clearly rewards GCs that are incremental, and punishes GCs that aren't (like ours).
        That's what we want, since in the future we want to use this test to guide any
        improvements to the worst-case performance of our GC.

        The way that the percentile is selected will also affect mandreel-latency.  That's a
        good thing, because 95% is probably too low for that test as well.  That test ends up
        with >10k samples.  The goal of using 95% in the first place was to get enough samples
        to have a stable average.  But if we have >10k samples, we can push that percentile up
        much higher and still get good statistics while achieving the effect we want - i.e.
        getting the worst case.

        I don't think that we need to do the same thing for cdjs.  That test only takes 200
        samples, so 95% means we report the average of the worst 10 samples.  That's probably
        good enough.

        * JetStream/Octane2/base.js: Raise the percentile as described above.
        (BenchmarkSuite.prototype.RunSingleBenchmark):
        * JetStream/Reference.js: Tweak the reference times to bring the latency tests closer to 100ish on my machine.
        * JetStream/create.rb: Bump the version.

2015-06-19  Filip Pizlo  <fpizlo@apple.com>

        Run CDjs as part of JSC stress testing
        https://bugs.webkit.org/show_bug.cgi?id=146174

        Reviewed by Geoffrey Garen.

        * 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.
        * JetStream/cdjs/main.js: Mark this as a slow test.
        * JetStream/create.rb: Don't copy the JSC stress tests artifacts into the JetStream bundle.

2015-06-19  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, fix a small indentation goof.

        * JetStream/cdjs/motion.js:
        (Motion.prototype.findIntersection):

2015-06-19  Filip Pizlo  <fpizlo@apple.com>

        JetStream should include a JavaScript version of the CDx real-time benchmark
        https://bugs.webkit.org/show_bug.cgi?id=146156

        Reviewed by Geoffrey Garen.

        This adds a JavaScript port of the CDx real-time benchmark to JetStream, and retires
        the cordic test because it was previously the smallest and probably least interesting.

        The new test, "cdjs", is mostly a faithful rewrite of the Java code into JavaScript.
        I got the Java code from https://www.cs.purdue.edu/sss/projects/cdx/.

        There are some differences:

        - It uses RedBlackTree's for all sets and maps rather than hashtables. This is clearly
          more in the spirit of real-time than the CDx benchmark. FWIW, CDx used to use trees
          and I don't know why that changed in the latest version.

        - CDjs doesn't attempt to avoid memory allocations, unlike the real-time Java version.
          I wrote the code that I wanted to write for aesthetics, rather than the code that I
          would have written if I tried to write the fastest code possible. Again, I believe
          that this is in the spirit of CDj - it's meant to test what would happen if you wrote
          real-timey stuff in a high level language and actually took advantage of that
          language to be more productive.

        The test score reflects the average latency of the worst 10 samples out of 200 samples.
        The simulation uses 1000 aircraft, flying along paths that result in some detected
        collisions every once in a while. The benchmark validates its results by checking the
        total number of collisions detected.

        Apart from the integration into the JetStream harness, the CDjs directory contains a
        fully self-contained benchmark that could be run either in the jsc shell or in browser.

        This new code uses the same 3-clause BSD license as the Purdue code, and gives
        attribution to Purdue in almost all files. I believe that is appropriate since I wrote
        most of the JS files by looking at the Purdue Java code and trascribing to JavaScript.
        In some cases, I even copy-pasted the Java code, like the complicated math for
        four-dimensional intersections and voxel hashing.

        * JetStream/CDjsSetup.js: Added.
        * JetStream/Octane2Setup.js:
        * JetStream/Reference.js:
        * JetStream/cdjs: Added.
        * JetStream/cdjs/benchmark.js: Added.
        (benchmark):
        * JetStream/cdjs/call_sign.js: Added.
        (CallSign):
        (CallSign.prototype.compareTo):
        (CallSign.prototype.toString):
        * JetStream/cdjs/collision.js: Added.
        (Collision):
        (Collision.prototype.toString):
        * JetStream/cdjs/collision_detector.js: Added.
        (CollisionDetector):
        (CollisionDetector.prototype.handleNewFrame.get for):
        (CollisionDetector.prototype.handleNewFrame):
        * JetStream/cdjs/constants.js: Added.
        * JetStream/cdjs/main.html: Added.
        * JetStream/cdjs/main.js: Added.
        * JetStream/cdjs/motion.js: Added.
        (Motion):
        (Motion.prototype.toString):
        (Motion.prototype.delta):
        (Motion.prototype.findIntersection):
        * JetStream/cdjs/motion_test.js: Added.
        (checkDoesIntersect):
        (checkDoesNotIntersect):
        (makeMotion):
        * JetStream/cdjs/red_black_tree.js: Added.
        (RedBlackTree):
        (RedBlackTree.):
        * JetStream/cdjs/red_black_tree_test.js: Added.
        (test):
        (test.):
        * JetStream/cdjs/reduce_collision_set.js: Added.
        (drawMotionOnVoxelMap):
        (drawMotionOnVoxelMap.):
        (.get reduceCollisionSet):
        * JetStream/cdjs/reduce_collision_set_test.js: Added.
        (makeMotion):
        (keys):
        (test):
        * JetStream/cdjs/simulator.js: Added.
        (Simulator):
        (Simulator.prototype.simulate):
        * JetStream/cdjs/util.js: Added.
        (compareNumbers):
        (averageAbovePercentile):
        (currentTime):
        (else.currentTime):
        * JetStream/cdjs/vector_2d.js: Added.
        (Vector2D):
        (Vector2D.prototype.plus):
        (Vector2D.prototype.minus):
        (Vector2D.prototype.toString):
        (Vector2D.prototype.compareTo):
        * JetStream/cdjs/vector_3d.js: Added.
        (Vector3D):
        (Vector3D.prototype.plus):
        (Vector3D.prototype.minus):
        (Vector3D.prototype.dot):
        (Vector3D.prototype.squaredMagnitude):
        (Vector3D.prototype.magnitude):
        (Vector3D.prototype.times):
        (Vector3D.prototype.as2D):
        (Vector3D.prototype.toString):
        * JetStream/create.rb:
        * JetStream/index-TEMPLATE.html:
        * JetStream/sunspider/cordic.js: Removed.

2015-06-17  Javier Fernandez  <jfernandez@igalia.com>

        [CSS Grid Layout] We should add performance tests for stretching logic
        https://bugs.webkit.org/show_bug.cgi?id=146063

        Reviewed by Sergio Villar Senin.

        Added a new performance test for Grid Layout to ensure there are no
        regressions in the stretching alignment logic.

        * Layout/fixed-grid-lots-of-stretched-data.html: Added.

2015-06-17  Javier Fernandez  <jfernandez@igalia.com>

        [CSS Grid Layout] Performance tests are using the old syntax
        https://bugs.webkit.org/show_bug.cgi?id=146061

        Reviewed by Sergio Villar Senin.

        Adapted tests to the new grid tracks definition syntax.

        * Layout/auto-grid-lots-of-data.html:
        * Layout/fixed-grid-lots-of-data.html:

2015-06-08  Filip Pizlo  <fpizlo@apple.com>

        JetStream should have a more rational story for jitter-oriented latency tests
        https://bugs.webkit.org/show_bug.cgi?id=145762

        Reviewed by Geoffrey Garen.

        JetStream has some latency tests that are meant to measure jitter.  Prior to this change, they
        did this by computing the RMS.  But the RMS is a pretty bad metric.  The thing that it rewards
        isn't really the thing that you'd want your browser to do.  These RMS-based tests involve taking
        the geomean of the RMS of some samples and the sample average.  The lower the geomean, the better
        (in the JetStream harness we then invert the scores so that higher is better, but let's ignore
        that for this discussion and assume that lower is better).  Here's an example of how this can go
        bad.  A browser that always computes a task in some horribly long time (say, 1000ms) but never
        varies that time will perform better than a browser that usually computes the task super quickly
        (say, 10ms) and sometimes just a little bit less quickly (say, 15ms).  The former browser will
        have an RMS of 0 and an average of 1000.  The latter will have a RMS somewhere around 3.5 and an
        average of 12.5 (assuming equal probability of 10ms and 15ms).  The geomean of (0, 1000) is 0.
        The geomean of (3.5, 12.5) is 6.6.  Lower is better, so the former browser scores higher - even
        though it's obviously never better to have a browser always complete a task in 1000ms when a
        different browser can do it in 15ms in the worst case.

        JetStream should not have this pathology.  The right way of avoiding it is to replace RMS with
        some other metric of how bad things get.  A good metric is the average of the worst percentile.
        The worst 1% or the worst 5% would be good things to average.  This will catch cases where the VM
        jittered due to JIT or GC, but it never have the pathology that we end up giving the better score
        to a VM whose best case is worst than another VM's worst case.

        For now, this change uses the highest samples above the 95% percentile. I'm not yet sure if that
        is the best thing - it might include too many scores that are around the best-case performance -
        but it's certainly better than RMS and it might be good enough to keep. But because of that
        uncertainty, I'm setting the version to be "1.1-alpha1" to indicate that we aren't ready to
        release this yet.

        * JetStream/Octane2/base.js:
        (.this.Setup.setup.setup):
        (.this.TearDown.tearDown.tearDown):
        (BenchmarkSuite.GeometricMeanTime):
        (BenchmarkSuite.AverageAbovePercentile):
        (BenchmarkSuite.GeometricMeanLatency):
        (BenchmarkSuite.prototype.NotifyStep):
        (BenchmarkSuite.prototype.RunSingleBenchmark):
        * JetStream/Octane2/mandreel.js:
        (setupMandreel):
        (updateMandreelStats):
        (startMandreelTimer):
        (latencyMandreel):
        (tearDownMandreel):
        (RMSMandreel): Deleted.
        * JetStream/Octane2/splay.js:
        (GenerateKey):
        (SplayUpdateStats):
        (InsertNewNode):
        (SplayTearDown):
        (SplayRMS): Deleted.
        * JetStream/create.rb:

2015-06-03  Zalan Bujtas  <zalan@apple.com>

        Skip Dromaeo/jslib-modify-prototype.html for now.

        Unreviewed gardening.

        * Skipped:

2015-05-04  Filip Pizlo  <fpizlo@apple.com>

        Large array shouldn't be slow
        https://bugs.webkit.org/show_bug.cgi?id=144617

        Reviewed by Geoffrey Garen.

        Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
        SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
        long-running. So, hash-map sort of belongs here.

        * LongSpider/hash-map.js: Added.
        (HashMap):
        (HashMap.):
        (.get var):

2015-05-01  Dewei Zhu  <dewei_zhu@apple.com>

        Fix typo bug in Speedometer/resources/main.js
        https://bugs.webkit.org/show_bug.cgi?id=144504

        Reviewed by Ryosuke Niwa.

        * Speedometer/resources/main.js: Fix typo.
        (window.benchmarkClient.totalTimeInDisplayUnit):

2015-04-21  Ryosuke Niwa  <rniwa@webkit.org>

        Add JetStream to PerformanceTests
        https://bugs.webkit.org/show_bug.cgi?id=144024

        Rubber-stamped by Filip Pizlo.

        * JetStream: Added.
        * JetStream/JetStream-Logo.png: Added.
        * JetStream/JetStream-Logo@2x.png: Added.
        * JetStream/JetStream.css: Added.
        * JetStream/JetStreamDriver.js: Added.
        * JetStream/LICENSE.txt: Added.
        * JetStream/LLVM-test-suite-LICENSE.txt: Added.
        * JetStream/Octane: Added.
        * JetStream/Octane/base.js: Added.
        * JetStream/Octane/code-load.js: Added.
        * JetStream/Octane2: Added.
        * JetStream/Octane2/base.js: Added.
        * JetStream/Octane2/box2d.js: Added.
        * JetStream/Octane2/code-load.js: Added.
        * JetStream/Octane2/crypto.js: Added.
        * JetStream/Octane2/deltablue.js: Added.
        * JetStream/Octane2/earley-boyer.js: Added.
        * JetStream/Octane2/gbemu-part1.js: Added.
        * JetStream/Octane2/gbemu-part2.js: Added.
        * JetStream/Octane2/mandreel.js: Added.
        * JetStream/Octane2/navier-stokes.js: Added.
        * JetStream/Octane2/pdfjs.js: Added.
        * JetStream/Octane2/raytrace.js: Added.
        * JetStream/Octane2/regexp.js: Added.
        * JetStream/Octane2/richards.js: Added.
        * JetStream/Octane2/run.js: Added.
        * JetStream/Octane2/splay.js: Added.
        * JetStream/Octane2/typescript-compiler.js: Added.
        * JetStream/Octane2/typescript-input.js: Added.
        * JetStream/Octane2/typescript.js: Added.
        * JetStream/Octane2/zlib-data.js: Added.
        * JetStream/Octane2/zlib.js: Added.
        * JetStream/Octane2Setup.js: Added.
        * JetStream/OctaneSetup.js: Added.
        * JetStream/README: Added.
        * JetStream/Reference.js: Added.
        * JetStream/SimpleSetup.js: Added.
        * JetStream/SunSpiderSetup.js: Added.
        * JetStream/Swoosh.png: Added.
        * JetStream/Swoosh@2x.png: Added.
        * JetStream/TestingSetup.js: Added.
        * JetStream/create.rb: Added.
        * JetStream/docs: Added.
        * JetStream/docs/JetStreamBlogPost.html: Added.
        * JetStream/in-depth-TEMPLATE.html: Added.
        * JetStream/index-TEMPLATE.html: Added.
        * JetStream/simple: Added.
        * JetStream/simple/bigfib.cpp: Added.
        * JetStream/simple/bigfib.cpp.js: Added.
        * JetStream/simple/container.cpp: Added.
        * JetStream/simple/container.cpp.js: Added.
        * JetStream/simple/dry.c: Added.
        * JetStream/simple/dry.c.js: Added.
        * JetStream/simple/float-mm.c: Added.
        * JetStream/simple/float-mm.c.js: Added.
        * JetStream/simple/gcc-loops.cpp: Added.
        * JetStream/simple/gcc-loops.cpp.js: Added.
        * JetStream/simple/hash-map.js: Added.
        * JetStream/simple/n-body.c: Added.
        * JetStream/simple/n-body.c.js: Added.
        * JetStream/simple/quicksort.c: Added.
        * JetStream/simple/quicksort.c.js: Added.
        * JetStream/simple/towers.c: Added.
        * JetStream/simple/towers.c.js: Added.
        * JetStream/sunspider: Added.
        * JetStream/sunspider/3d-cube.js: Added.
        * JetStream/sunspider/3d-raytrace.js: Added.
        * JetStream/sunspider/base64.js: Added.
        * JetStream/sunspider/cordic.js: Added.
        * JetStream/sunspider/crypto-aes.js: Added.
        * JetStream/sunspider/crypto-md5.js: Added.
        * JetStream/sunspider/crypto-sha1.js: Added.
        * JetStream/sunspider/date-format-tofte.js: Added.
        * JetStream/sunspider/date-format-xparb.js: Added.
        * JetStream/sunspider/n-body.js: Added.
        * JetStream/sunspider/regex-dna.js: Added.
        * JetStream/sunspider/tagcloud.js: Added.

2015-04-14  Said Abou-Hallawa  <sabouhallawa@apple.com>

        textPath layout performance improvement.
        https://bugs.webkit.org/show_bug.cgi?id=141570.

        Reviewed by Darin Adler.

        Cut down the time spent in traversing the path for text by 50%. Instead
        of traversing the path twice at a certain length: one time for the position
        and the second time for the angle, we can merge these two passes into one.

        * SVG/TextOnPathSimple.html: Added.
        * SVG/resources/TextOnPathSimple.svg: Added.

2015-04-13  Zalan Bujtas  <zalan@apple.com>

        Clear up the test content when test is done.

        Unreviewed fix.

        * Layout/simple-line-layout-innertext.html:

2015-04-09  Zalan Bujtas  <zalan@apple.com>

        Simple line layout(regression): Calling innerText on RenderFlow with multiple children is slow.
        https://bugs.webkit.org/show_bug.cgi?id=143554

        Reviewed by Antti Koivisto.

        Initialize render flow's segments only when the render flow changes in TextIterator.
        The included performance test shows 6x speedup. (from ~10 runs/sec to ~60 runs/sec)

        * Layout/simple-line-layout-innertext.html: Added.

2015-03-09  Chris Dumez  <cdumez@apple.com>

        [CG] Have Canvas use the IOSurfacePool
        https://bugs.webkit.org/show_bug.cgi?id=142417
        <rdar://problem/20044440>

        Reviewed by Darin Adler.

        Lower the number of different canvas sizes from 1000 to 100 so that
        the test does not require such a huge cache size. With 100, we now
        get over 90% cache hit rate with the default IOSurfacePool size.

        * Canvas/reuse.html:

2015-01-28  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Poor performance on IE's Chalkboard benchmark.
        https://bugs.webkit.org/show_bug.cgi?id=140753.

        Reviewed by Zalan Bujtas.

        * SVG/UnderTheSeeBenchmark.html: Added
        * SVG/WorldcupBenchmark.html: Added.
        * SVG/resources/RenderAnimator.css: Added.
        * SVG/resources/RenderAnimator.js: Added.
        These are benchmarks for the SVG rendering. Mainly we want to measure how fast
        the SVG rendering will be when only a small part of it is drawn.

2015-01-21  Geoffrey Garen  <ggaren@apple.com>

        bmalloc: support aligned allocation
        https://bugs.webkit.org/show_bug.cgi?id=140732

        Reviewed by Andreas Kling.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        * MallocBench/MallocBench/memalign.cpp:
        (test):
        (benchmark_memalign): Added a test for specific interesting memalign values.

        * MallocBench/MallocBench/stress_aligned.cpp: Added.
        (benchmark_stress_aligned):
        * MallocBench/MallocBench/stress_aligned.h: Added. Added a stress test
        for arbitrary memalign values.

2015-01-16  Geoffrey Garen  <ggaren@apple.com>

        bmalloc: added the tiniest bit of testing for aligned allocation
        https://bugs.webkit.org/show_bug.cgi?id=140573

        Reviewed by Andreas Kling.

        Just good enoug to catch two bugs in a preliminary implementation.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        * MallocBench/MallocBench/mbmalloc.cpp:
        * MallocBench/MallocBench/mbmalloc.h:
        * MallocBench/MallocBench/memalign.cpp: Added.
        (benchmark_memalign):
        * MallocBench/MallocBench/memalign.h: Added.

2014-12-09  Myles C. Maxfield  <mmaxfield@apple.com>

        Add performance test related to font fallback
        https://bugs.webkit.org/show_bug.cgi?id=139332

        Reviewed by Simon Fraser.

        * Layout/font-fallback.html: Added.
        * Layout/resources/font-fallback.html: Added.

2014-12-08  Dean Jackson  <dino@apple.com>

        [Apple] Use Accelerate framework to speed-up FEGaussianBlur
        https://bugs.webkit.org/show_bug.cgi?id=139310

        Reviewed by Simon Fraser.

        Add an interactive performance test that measures the speed of a set
        of blur operations on a generated images.

        * Interactive/blur-filter-timing.html: Added.

2014-11-13  Zalan Bujtas  <zalan@apple.com>

        Simple line layout: Add performance test case to measure line layout speed of monolithic text content.
        https://bugs.webkit.org/show_bug.cgi?id=138699

        Reviewed by Antti Koivisto.

        * Layout/line-layout-long-long-text.html: Added.

2014-10-22  Zalan Bujtas  <zalan@apple.com>

        Speed up line parsing for simple line layout (part I)
        https://bugs.webkit.org/show_bug.cgi?id=137275

        Reviewed by Antti Koivisto.

        Extend simple line layout performance test with a few more cases.
        Now we've got:
        <div center
        <div right
        <div justify
        <div white-space: pre (new)
        <div overflow-wrap: break-word (new)
        <pre
        <pre white-space: pre-wrap
        <pre white-space: pre-line (new)
        <pre white-space: nowrap (new)
        <pre white-space: pre-wrap overflow-wrap: break-word
        <div + embedded <span etc.
        <div + br

        * Layout/line-layout-simple.html:

2014-10-15  Andrei Bucur  <abucur@adobe.com>

        [Multicol] Start adding performance tests for the multi-column implementation
        https://bugs.webkit.org/show_bug.cgi?id=137687

        Reviewed by Mihnea Ovidenie.

        This patch creates a Multicol folder inside the Layout performance tests suite. It adds only two tests
        as described below.

        The tests are skipped until the implementation stabilizes.

        * Layout/Multicol/MulticolManyColumns.html: Added.
        This test verifies the performance of the multi-column implementation with two nested multi-column
        containers, the first having 20 columns and the second 10 columns.

        * Layout/Multicol/MulticolNested.html: Added.
        This test verifies the performance of nesting multi-column containers in the presence
        of floats.

        * Layout/Multicol/resources/multicol-content-many-columns.html: Added.
        * Layout/Multicol/resources/multicol-content-nested.html: Added.
        * Skipped: Skip the Multicol folder for now.

2014-09-29  Filip Pizlo  <fpizlo@apple.com>

        It should be fun and easy to run every possible JavaScript benchmark from the command line
        https://bugs.webkit.org/show_bug.cgi?id=137245

        Reviewed by Oliver Hunt.

        This adds the scaffolding for running Octane version 2 inside run-jsc-benchmarks.
        In the future we should just land Octane2 in this directory, and run-jsc-benchmarks
        should be changed to point directly at this directory instead of requiring the
        Octane path to be configured as part of the configuration file.

        * Octane: Added.
        * Octane/wrappers: Added.
        * Octane/wrappers/jsc-box2d.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-boyer.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-closure.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-decrypt.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-deltablue.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-earley.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-encrypt.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-gbemu.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-jquery.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-mandreel.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-navier-stokes.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-pdfjs.js: Added.
        (jscSetUp.PdfJS_window.console.log):
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-raytrace.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-regexp.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-richards.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-splay.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-typescript.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):
        * Octane/wrappers/jsc-zlib.js: Added.
        (jscSetUp):
        (jscTearDown):
        (jscRun):

2014-09-28  Sungmann Cho  <sungmann.cho@navercorp.com>

        Fix some minor typos: psuedo -> pseudo
        https://bugs.webkit.org/show_bug.cgi?id=137192

        Reviewed by Alexey Proskuryakov.

        * Speedometer/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:

2014-09-11  Geoffrey Garen  <ggaren@apple.com>

        Some MallocBench refinements
        https://bugs.webkit.org/show_bug.cgi?id=136750

        Reviewed by Sam Weinig.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::run): Allow for null entries in the object list so that
        we can test in modes that exclude large or small allocations.

        * MallocBench/MallocBench/churn.cpp:
        (benchmark_churn):
        * MallocBench/MallocBench/flickr.cpp:
        (benchmark_flickr):
        * MallocBench/MallocBench/fragment.cpp:
        (benchmark_fragment_iterate):
        * MallocBench/MallocBench/list.cpp:
        (benchmark_list_allocate):
        * MallocBench/MallocBench/reddit.cpp:
        (benchmark_reddit): Updated test runtimes to weight them more equally,
        for the sake of arithmetic mean.

        * MallocBench/MallocBench/stress.cpp:
        (Object::Object):
        (allocate):
        (deallocate):
        (benchmark_stress): Verify the contents of memory as we go. Also,
        force scavenging each time through the loop to test the scavenging path.

        * MallocBench/MallocBench/theverge.cpp:
        (benchmark_theverge):
        * MallocBench/MallocBench/tree.cpp:
        (benchmark_tree_churn): Re-weighted, as above.

2014-09-08  Myles C. Maxfield  <mmaxfield@apple.com>

        PerformanceTests/SVG/SVG-Text.html has unparsable output
        https://bugs.webkit.org/show_bug.cgi?id=136648

        Reviewed by Gavin Barraclough.

        I need to clean up the arbitrary text on the page before telling
        the test runner infrastructure that the test is complete.

        * SVG/SVG-Text.html:

2014-09-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Laying out a TextRun using an SVG font is O(n^2)
        https://bugs.webkit.org/show_bug.cgi?id=136584

        Reviewed by Andreas Kling.

        Time how long it takes to lay out and render some text using an SVG font.

        * SVG/SVG-Text.html: Added.
        * SVG/resources/graffiti.svg: Added.

2014-09-02  Geoffrey Garen  <ggaren@apple.com>

        MallocBench should have a stress test for correctness
        https://bugs.webkit.org/show_bug.cgi?id=136468

        Reviewed by Andreas Kling.

        Added a stress test that allocates randomized sizes of randomized
        lifetimes in randomized order.

        This version of the test reproduces the EWS crash seen in bmalloc
        (<https://bugs.webkit.org/show_bug.cgi?id=132629>).

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp: Sort!
        * MallocBench/MallocBench/stress.cpp: Added.
        (Object::Object):
        (SizeStream::SizeStream):
        (SizeStream::next):
        (benchmark_stress): Usually, we random(0). Surprisingly, though, only
        random(1) reproduces the bug I was looking for.
        * MallocBench/MallocBench/stress.h: Added.

2014-06-02  Ryosuke Niwa  <rniwa@webkit.org>

        Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
        https://bugs.webkit.org/show_bug.cgi?id=133455

        Reviewed by Timothy Hatcher.

        * Speedometer/: Renamed from DoYouEvenBench.
        * Skipped: Updated the path for InteractiveRunner.html

2014-06-02  Ryosuke Niwa  <rniwa@webkit.org>

        Rename DoYouEvenBench 0.17 to Speedometer 1.0 and add a new look.
        https://bugs.webkit.org/show_bug.cgi?id=133455

        Reviewed by Timothy Hatcher.

        Renamed the benchmark to Speedometer and added the new look designed by Timothy Hatcher.

        Also changed the unit of measurements from milliseconds to runs-per-minute averaged over the number
        of the benchmark suites (7 for 1.0). You can divide 420000 by the old benchmark score (in milliseconds)
        to get the new value for the set of tests that are enabled by default in 1.0. You can continue to see
        results in milliseconds on Full.html#ms.

        * DoYouEvenBench/Full.html: Added a bunch of sections and the description of the benchmark.

        * DoYouEvenBench/resources/benchmark-report.js: Remove the newly added content when ran inside a DRT or
        WTR so that run-perf-tests wouldn't error.
        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype._appendFrame): Call a newly added willAddTestFrame callback when it exists.

        * DoYouEvenBench/resources/gauge.png: Added.
        * DoYouEvenBench/resources/gauge@2x.png: Added.
        * DoYouEvenBench/resources/logo.png: Added.
        * DoYouEvenBench/resources/logo@2x.png: Added.
        * DoYouEvenBench/resources/main.css: Replaced the style.

        * DoYouEvenBench/resources/main.js:
        (window.benchmarkClient.willAddTestFrame): Place the iframe right where #testContainer is shown.
        (window.benchmarkClient.willRunTest): Show the name of the suite (e.g. EmberJS-TodoMVC) to run next.
        (window.benchmarkClient.didRunSuites):
        (window.benchmarkClient.willStartFirstIteration): Initialize _timeValues and _finishedTestCount now that
        we have an UI to run the benchmark multiple times without reloading the page.
        (window.benchmarkClient.didFinishLastIteration): Split into smaller pieces.
        (window.benchmarkClient._computeResults): Computes the mean and the statistics for the given time values,
        and also format them in a human readable form.
        (window.benchmarkClient._computeResults.totalTimeInDisplayUnit): Converts ms to runs/min.
        (window.benchmarkClient._computeResults.sigFigFromPercentDelta): Given a percentage error (e.g. 1%),
        returns the number of significant digits required for the mean.
        (window.benchmarkClient._computeResults.toSigFigPrecision): Calls toPrecision with the specified precision
        constrained to be at least the number of non-decimal digits and at most 6.
        (window.benchmarkClient._addDetailedResultsRow): Renamed from _addResult. It now takes the table to which
        to add a row and the iteration number.
        (window.benchmarkClient._updateGaugeNeedle): Added. Controls the angle of the speed indicator.
        (window.benchmarkClient._populateDetailedResults): Added.
        (window.benchmarkClient.prepareUI): Added. It adds an event listener to show a specified section when
        the push state of the document changes, and shows a warning sign when the view port size is too small.
        We do this inside a callback to avoid running it inside DRT / WTR.
        (startBenchmark):
        (showSection): Added.
        (startTest): Added.
        (showResultsSummary): Added.
        (showResultDetails): Added.
        (showAbout): Added.

2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench: Move test states into benchmarkClient and remove the closure
        https://bugs.webkit.org/show_bug.cgi?id=133438

        Reviewed by Benjamin Poulain.

        Moved all local variables in the closure wrapping benchmarkClient onto the object itself
        and removed the closure to improve the readability of the code.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/main.js:
        (window.benchmarkClient.willRunTest):
        (window.benchmarkClient.didRunTest):
        (window.benchmarkClient.didRunSuites):
        (window.benchmarkClient.willStartFirstIteration):
        (window.benchmarkClient.didFinishLastIteration):
        (window.benchmarkClient._addResult): Moved.
        (.): Deleted.

2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench: Split stylesheets and scripts in Full.html into separate files
        https://bugs.webkit.org/show_bug.cgi?id=133437

        Reviewed by Benjamin Poulain.

        Extracted main.js and main.css.

        Also fixed a bug in startBenchmark that disabled suites were counted towards the total number of tests.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/main.css: Added.
        * DoYouEvenBench/resources/main.js: Added.
        (.addResult):
        (window.benchmarkClient):
        (startBenchmark): Renamed from startTest.

2014-06-01  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench: CSS parser warning at line 106 of base.css
        https://bugs.webkit.org/show_bug.cgi?id=133433

        Reviewed by Maciej Stachowiak.

        Removed the old filter CSS property for Internet Explorer. The latest Internet Explorer supports -ms-linear-gradient
        on background CSS property anyways.

        It's interesting that some of the tests only have -webkit- prefixes. Perhaps we should update those subtests.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css:
        (#header:before):
        * DoYouEvenBench/resources/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css:
        (#header:before):

2014-05-31  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench: Ember.js assertion hit at line 20593
        https://bugs.webkit.org/show_bug.cgi?id=133431

        Reviewed by Darin Adler.

        The assertion was hit because ToDoMVC includes jQuery 2.1 and Ember.js 1.3.1 only recognizes jQuery 2.0.
        Port the assertion from Ember.js 1.5.1 to suppress the assertion.

        We should update the entire Ember.js at some point but this would do the job for now.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:

2014-05-31  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench: Prevent frame flattening on iOS
        https://bugs.webkit.org/show_bug.cgi?id=133428

        Reviewed by Andreas Kling.

        Prevent frame flattening on iOS by setting scrolling=no.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype._appendFrame):

2014-05-30  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench spits out 404 errors for learn.json
        https://bugs.webkit.org/show_bug.cgi?id=133416

        Reviewed by Oliver Hunt.

        Add an empty learn.json file so that it won't cause a 404 error when hosted on a http server.

        Bumped the version number to 0.12.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/todomvc/learn.json:

2014-05-23  Geoffrey Garen  <ggaren@apple.com>

        Performance testing, diamond-square terrain generation + canvas
        https://bugs.webkit.org/show_bug.cgi?id=133054

        Reviewed by Ryosuke Niwa.

        This test was written by Hunter Loftis. It originally appeared on his
        blog @ <http://www.playfuljs.com/realistic-terrain-in-130-lines/>.

        I did a bit of editing for format and benchmark suitability.

        * Canvas/terrain.html: Added.

2014-05-13  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench should run 20 iterations in browser
        https://bugs.webkit.org/show_bug.cgi?id=132795

        Reviewed by Gavin Barraclough.

        Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
        a more stable time and account for differences in the runtime environment, particularly,
        ASLR (Address Space Layout Randomization).

        While we can't account for the latter effect when the benchmark is ran inside a browser,
        we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.

        While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
        it's MUCH better than the current sample size of 5.

        * DoYouEvenBench/Full.html:
        (benchmarkClient.iterationCount): Set the default iteration count to 20.
        (startTest): Use benchmarkClient.iterationCount as the iteration count.
        * DoYouEvenBench/resources/benchmark-report.js:
        (benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
        inside run-perf-tests.

2014-05-09  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench should show 95th percentile right next to the mean with ±
        https://bugs.webkit.org/show_bug.cgi?id=132729

        Reviewed by Darin Adler.

        Before this patch, Full.html showed the 95th percentile delta for the arthemtic mean in a separate row
        but this was confusing for some people. Show it right next to mean in the same row separated by ±.

        * DoYouEvenBench/Full.html:

2014-05-08  Ryosuke Niwa  <rniwa@webkit.org>

        DYEBench should use TodoMVC to test FlightJS for consistency
        https://bugs.webkit.org/show_bug.cgi?id=132727

        Reviewed by Andreas Kling.

        Add a test suite for the FlightJS version of TodoMVC, and disable FlightJS-MailClient by default.

        I initially intended to include a wider variety of demo apps in DYEBench
        but that's not happening any time soon so let us use TodoMVC for all frameworks for now.

        We can add more demo apps in v2.

        * DoYouEvenBench/Full.html: Increment the version to 0.10.
        * DoYouEvenBench/InteractiveRunner.html: Don't check disabled suites by default.
        * DoYouEvenBench/resources/tests.js:
        * DoYouEvenBench/resources/todomvc/dependency-examples: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.gitignore: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/.jshintrc: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/app.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/stats.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/data/todos.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/main.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/store.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/main_selector.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/new_item.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/stats.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/todo_list.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/toggle_all.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/ui/with_filters.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/js/utils.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/stats.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/app/templates/todo.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower.json: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/depot/depot.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-sham.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/es5-shim/es5-shim.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/advice.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/base.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/component.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/compose.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/debug.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/index.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/logger.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/registry.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/flight/lib/utils.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/jquery/jquery.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs-text/text.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/requirejs/require.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/index.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/karma.conf.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/package.json: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/readme.md: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/.jshintrc: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/footer.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/new_todo.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/fixture/toggle_all.html: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/mock/datastore.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/stats_spec.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/data/todos_spec.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/new_item_spec.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/stats_spec.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/spec/ui/toggle_all_spec.js: Added.
        * DoYouEvenBench/resources/todomvc/dependency-examples/flight/test/test-main.js: Added.

2014-05-07  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Grid Layout] Remove runtime feature
        https://bugs.webkit.org/show_bug.cgi?id=132382

        Reviewed by Benjamin Poulain.

        Remove set of WebKitCSSGridLayoutEnabled preference.

        * Layout/auto-grid-lots-of-data.html:
        * Layout/fixed-grid-lots-of-data.html:

2014-05-06  Radu Stavila  <stavila@adobe.com>

        [CSSRegions] Enabled regions performance tests by default
        https://bugs.webkit.org/show_bug.cgi?id=128244

        Reviewed by Andreas Kling.

        Enabled regions performance tests.

        * Skipped:

2014-04-25  Andreas Kling  <akling@apple.com>

        Bump jQuery to same version that dromaeo.com uses.

        Rubber-stamped by Ryosuke Niwa.

        * Dromaeo/resources/dromaeo/web/lib/jquery-1.10.2.min.js: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:

2014-04-18  Geoffrey Garen  <ggaren@apple.com>

        Added some more Membuster recordings to MallocBench
        https://bugs.webkit.org/show_bug.cgi?id=131862

        Reviewed by Sam Weinig.

        * MallocBench/MallocBench/Benchmark.cpp:
        (Benchmark::Benchmark):
        (Benchmark::run):
        * MallocBench/MallocBench/Benchmark.h:
        * MallocBench/MallocBench/CommandLine.cpp:
        * MallocBench/MallocBench/CommandLine.h:
        (CommandLine::runs): Added a --runs option, so we can specify zero runs
        for memory warning benchmarks. Those benchmarks want zero runs so that
        they can perform a single warmup, which does not free all allocated
        objects, and then see how far back to 0MB they can get. Running multiple
        times would accumulate leaks, which is not representative of the
        simulated scenario.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::Interpreter):
        (Interpreter::run):
        * MallocBench/MallocBench/Interpreter.h: Support not deallocating all
        objects allocated during the recording, so we can do low memory warning
        memory use measurements, as above.

        * MallocBench/MallocBench/flickr.cpp:
        (benchmark_flickr_memory_warning):
        * MallocBench/MallocBench/main.cpp:
        (main):
        * MallocBench/MallocBench/reddit.cpp:
        (benchmark_reddit_memory_warning):
        * MallocBench/MallocBench/theverge.cpp:
        (benchmark_theverge_memory_warning): Adopt the API above.

        * MallocBench/run-malloc-benchmarks: I took a first pass at listing all
        available benchmarks here. Then I commented out the benchmarks that
        probably aren't reasonable to run by default.

2014-04-18  Geoffrey Garen  <ggaren@apple.com>

        MallocBench: removed the --measure-heap option
        https://bugs.webkit.org/show_bug.cgi?id=131854

        Reviewed by Sam Weinig.

        As of <https://bugs.webkit.org/show_bug.cgi?id=131661>, measuring the
        heap is fast, so there's no reason to disable it.

        * MallocBench/MallocBench/Benchmark.cpp:
        (Benchmark::Benchmark):
        (Benchmark::run):
        (Benchmark::printReport):
        * MallocBench/MallocBench/Benchmark.h:
        * MallocBench/MallocBench/CommandLine.cpp:
        (CommandLine::printUsage):
        * MallocBench/MallocBench/CommandLine.h:
        (CommandLine::heapSize):
        (CommandLine::measureHeap): Deleted.
        * MallocBench/MallocBench/main.cpp:
        (main):

2014-04-16  Alexandru Chiculita  <achicu@adobe.com>

        Improve performance of the RenderLayerCompositor::OverlapMap
        https://bugs.webkit.org/show_bug.cgi?id=115063

        Reviewed by Simon Fraser.

        Testing the performance of computing the overlap of 5000 layers.

        * Layout/layers_overlap_2d.html: Added. Using non-composited layers, to check
        that the performance on the non-composited path is not changing with this patch.
        * Layout/layers_overlap_3d.html: Added. Records the time to do the layout of 5000
        non-overlapping 3D layers.

2014-04-15  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Linking stylesheet instead of inline style definition has ruined ShapesRegions test
        https://bugs.webkit.org/show_bug.cgi?id=131572

        Reviewed by Rob Buis.

        In r167022 I moved the common CSS selectors into RegionsShapes.css, then I linked it into the perf test
        files, but the measurement results dropped down from about 400ms to 10ms. I realized it's caused by the
        linked css rule, so I've put the selectors back into every test case, which fixes the test measurements.

        * Layout/Shapes/resources/RegionsShapes.css: Removed.
        * Layout/Shapes/resources/RegionsShapesContent.html:
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html:
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html:
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html:
        * Layout/Shapes/resources/RegionsShapesContentNoShapes.html:

2014-04-14  Geoffrey Garen  <ggaren@apple.com>

        MallocBench should scavenge explicitly instead of waiting
        https://bugs.webkit.org/show_bug.cgi?id=131661

        Reviewed by Andreas Kling.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj: Don't build mbmalloc
        by default because it will overwrite any other mbmalloc you're working
        with in the WebKitBuild directory.

        * MallocBench/MallocBench/Benchmark.cpp:
        (Benchmark::run): Scavenge explicitly instead of waiting. This is faster,
        and it's the only way to get FastMalloc to scavenge. (That's a bug in
        FastMalloc, but we don't want it to interfere with broader testing.)

        * MallocBench/MallocBench/mbmalloc.cpp:
        * MallocBench/MallocBench/mbmalloc.h: Added a scavenge implementation
        for system malloc.

2014-04-14  Geoffrey Garen  <ggaren@apple.com>

        A few MallocBench record/replay fixes
        https://bugs.webkit.org/show_bug.cgi?id=131627

        Reviewed by Andreas Kling.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::run): Accept 0-sized allocations without asserting because
        WebKit does that sometimes.

        * MallocBench/MallocBench/flickr.ops:
        * MallocBench/MallocBench/flickr_memory_warning.ops:
        * MallocBench/MallocBench/reddit.ops:
        * MallocBench/MallocBench/reddit_memory_warning.ops:
        * MallocBench/MallocBench/theverge.ops:
        * MallocBench/MallocBench/theverge_memory_warning.ops: Updated these
        recordings because a bug in the recording mechanism caused one out of
        every few thousand slot values to be bogus.

2014-04-13  Geoffrey Garen  <ggaren@apple.com>

        Added some website recordings to MallocBench -- taken from Membuster
        https://bugs.webkit.org/show_bug.cgi?id=131601

        Reviewed by Ryosuke Niwa.

        Added flickr, reddit, and theverge -- each recorded from Membuster's
        cache, with and without sending Safari a low memory warning.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj:
        * MallocBench/MallocBench/Benchmark.cpp:
        * MallocBench/MallocBench/flickr.cpp: Added.
        (benchmark_flickr):
        (benchmark_flickr_memory_warning):
        * MallocBench/MallocBench/flickr.h: Added.
        * MallocBench/MallocBench/flickr.ops: Added.
        * MallocBench/MallocBench/flickr_memory_warning.ops: Added.
        * MallocBench/MallocBench/reddit.cpp: Added.
        (benchmark_reddit):
        (benchmark_reddit_memory_warning):
        * MallocBench/MallocBench/reddit.h: Added.
        * MallocBench/MallocBench/reddit.ops: Added.
        * MallocBench/MallocBench/reddit_memory_warning.ops: Added.
        * MallocBench/MallocBench/theverge.cpp: Added.
        (benchmark_theverge):
        (benchmark_theverge_memory_warning):
        * MallocBench/MallocBench/theverge.h: Added.
        * MallocBench/MallocBench/theverge.ops: Added.
        * MallocBench/MallocBench/theverge_memory_warning.ops: Added.

2014-04-13  Geoffrey Garen  <ggaren@apple.com>

        MallocBench record/replay should support realloc
        https://bugs.webkit.org/show_bug.cgi?id=131598

        Reviewed by Ryosuke Niwa.

        * MallocBench/MallocBench.xcodeproj/project.pbxproj: Fixed some linkage
        issues that caused us not to fully link to system malloc in the default
        case. Also marked mbmalloc.dylib as required so the error message will
        be clearer if we mess up.

        * MallocBench/MallocBench/Interpreter.cpp:
        (Interpreter::run):
        * MallocBench/MallocBench/Interpreter.h: Added the realloc case, and
        upgraded one-letter names to full words.

2014-04-11  Dirk Schulze  <krit@webkit.org>

        Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
        https://bugs.webkit.org/show_bug.cgi?id=79659

        Reviewed by Andreas Kling.

        Add performance tests for real this time.

        * Canvas/compositing-drawimage.html: Added.
        * Canvas/compositing-fillRect.html: Added.


2014-04-11  Dirk Schulze  <krit@webkit.org>

        Optimize Canvas fill and drawImage with SourceIn, DestinationIn, SourceOut, and DestinationAtop using transparencyLayer.
        https://bugs.webkit.org/show_bug.cgi?id=79659

        Reviewed by Andreas Kling.

        Add performance tests for fillRect() and drawImage() on composited contexts.

        * Canvas/compositing-drawimage.html: Added.
        * Canvas/compositing-fillRect.html: Added.

2014-04-09  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add no shapes version of RegionsShapes performance test
        https://bugs.webkit.org/show_bug.cgi?id=131455

        Reviewed by Ryosuke Niwa.

        This is a no shapes version of the RegionsShapes performance test. All the content
        will wrap around the floating containers. This way we can compare the runtime/memory
        usage of the RegionsShapes test with/without shapes. The test is skipped by default.

        * Layout/Shapes/RegionsShapesNoShapes.html: Added.
        * Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Added.

2014-04-09  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add no regions version of RegionsShapes performance test
        https://bugs.webkit.org/show_bug.cgi?id=131442

        Reviewed by Ryosuke Niwa.

        We would like have a no regions version for RegionsShapes performance test. The new
        test produces similar layout to RegionsShapes.html without using regions. It is helpful
        for us to do further comparisons when necessary. This test is skipped by default.

        * Layout/Shapes/RegionsShapesNoRegions.html: Added.
        * Layout/Shapes/resources/RegionsShapes.css: Added.
        (html, body):
        (.shape):
        (#circleShape):
        (#imageShape):
        (#insetShape):
        (#roundedInsetShape):
        (#triangleLeft):
        (#triangleRight):
        (#selfIntersectingStar):
        (#region1):
        (#region2):
        (#region3):
        * Layout/Shapes/resources/RegionsShapesContent.html:
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth400.html: Added.
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth600.html: Added.
        * Layout/Shapes/resources/RegionsShapesContentNoRegionsWidth800.html: Added.

2014-04-02  Geoffrey Garen  <ggaren@apple.com>

        Unreviewed.

        Try to ignore some Xcode shmutz in MallocBench.

        * MallocBench/MallocBench.xcodeproj: Added property svn:ignore.

2014-04-02  Geoffrey Garen  <ggaren@apple.com>

        Let's benchmark malloc
        https://bugs.webkit.org/show_bug.cgi?id=131118

        Reviewed by Mark Hahnenberg.

        I want to replace fastMalloc with something faster (fasterMalloc?).
        I wrote these benchmarks to test / drive development.

        * MallocBench: Added.
        * MallocBench/MallocBench: Added.
        * MallocBench/MallocBench.xcodeproj: Added.
        * MallocBench/MallocBench.xcodeproj/project.pbxproj: Added.
        * MallocBench/MallocBench/Benchmark.cpp: Added.
        (allocateHeap):
        (deallocateHeap):
        (Benchmark::Benchmark):
        (Benchmark::printBenchmarks):
        (Benchmark::runOnce):
        (Benchmark::run):
        (Benchmark::printReport):
        (Benchmark::currentTimeMS):
        (Benchmark::currentMemoryBytes):
        * MallocBench/MallocBench/Benchmark.h: Added.
        (Benchmark::Memory::Memory):
        (Benchmark::Memory::operator-):
        (Benchmark::isValid):
        * MallocBench/MallocBench/CPUCount.cpp: Added.
        (cpuCount):
        * MallocBench/MallocBench/CPUCount.h: Added.
        * MallocBench/MallocBench/CommandLine.cpp: Added.
        (CommandLine::printUsage):
        * MallocBench/MallocBench/CommandLine.h: Added.
        (CommandLine::isValid):
        (CommandLine::benchmarkName):
        (CommandLine::isParallel):
        (CommandLine::heapSize):
        (CommandLine::measureHeap):
        * MallocBench/MallocBench/Interpreter.cpp: Added.
        (Interpreter::Interpreter):
        (Interpreter::~Interpreter):
        (Interpreter::run):
        * MallocBench/MallocBench/Interpreter.h: Added.
        * MallocBench/MallocBench/balloon.cpp: Added.
        (benchmark_balloon):
        * MallocBench/MallocBench/balloon.h: Added.
        * MallocBench/MallocBench/big.cpp: Added.
        (benchmark_big):
        * MallocBench/MallocBench/big.h: Added.
        * MallocBench/MallocBench/churn.cpp: Added.
        (HeapDouble::operator new):
        (HeapDouble::operator delete):
        (HeapDouble::HeapDouble):
        (HeapDouble::operator+=):
        (benchmark_churn):
        * MallocBench/MallocBench/churn.h: Added.
        * MallocBench/MallocBench/crash.ops: Added.
        * MallocBench/MallocBench/facebook.cpp: Added.
        (benchmark_facebook):
        * MallocBench/MallocBench/facebook.h: Added.
        * MallocBench/MallocBench/facebook.ops: Added.
        * MallocBench/MallocBench/fragment.cpp: Added.
        (validate):
        (benchmark_fragment):
        (benchmark_fragment_iterate):
        * MallocBench/MallocBench/fragment.h: Added.
        * MallocBench/MallocBench/list.cpp: Added.
        (benchmark_list_allocate):
        (benchmark_list_traverse):
        * MallocBench/MallocBench/list.h: Added.
        * MallocBench/MallocBench/main.cpp: Added.
        (main):
        * MallocBench/MallocBench/mbmalloc.cpp: Added.
        * MallocBench/MallocBench/mbmalloc.h: Added.
        * MallocBench/MallocBench/medium.cpp: Added.
        (benchmark_medium):
        * MallocBench/MallocBench/medium.h: Added.
        * MallocBench/MallocBench/message.cpp: Added.
        (benchmark_message_one):
        (benchmark_message_many):
        * MallocBench/MallocBench/message.h: Added.
        * MallocBench/MallocBench/realloc.cpp: Added.
        (benchmark_realloc):
        * MallocBench/MallocBench/realloc.h: Added.
        * MallocBench/MallocBench/tree.cpp: Added.
        (benchmark_tree_allocate):
        (benchmark_tree_traverse):
        (benchmark_tree_churn):
        * MallocBench/MallocBench/tree.h: Added.
        * MallocBench/run-malloc-benchmarks: Added.

2014-03-29  Mark Lam  <mark.lam@apple.com>

        LongSpider 3d-morph result check is inappropriate.
        <https://webkit.org/b/130928>

        Reviewed by Filip Pizlo.

        The LongSpider 3d-morph component expected result check is incorrect.
        The existing test checks if the leading digit of a sum starts with "-1".
        However, it turned out that the expected sum is in the order of
        -1.8735013540549517e-16 (i.e. very close to 0).  With small errors in
        the terms of the sum adding up, it is very easy for the resultant sum
        to fluctuate.  There is no guarantee that the resultant sum's most
        significant digit will start with -1 either.

        The fix is to do a tolerance check on all the terms of the sum as well
        as the total sum value instead.  The tolerance should be more lenient
        for the sum which accumulates error from the individual terms, then for
        individual terms.

        * LongSpider/3d-morph.js:
        (expect):

2014-03-28  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance tests for Shapes with Regions
        https://bugs.webkit.org/show_bug.cgi?id=129624

        Reviewed by Ryosuke Niwa.

        This tests introduces a real-life like page, which contains different types of shapes within
        shape-outsides. The content flows through regions, which use media queries. The performance test
        loads the actual Shapes-Regions test case into iframes with different page sizes (thus the layout
        triggers the media queries as well), and measures its load time.

        * Layout/RegionsShapes.html: Added.
        * Layout/Shapes/resources/RegionsShapesContent.html: Added.

2014-03-20  Zoltan Horvath  <zoltan@webkit.org>

        Add option for hiding Confidence Interval Delta on the performance tests results page
        https://bugs.webkit.org/show_bug.cgi?id=130483

        Reviewed by Ryosuke Niwa.

        I've found it useful to hide the confidence interval delta from the results table
        sometimes, for example on copying data, or for a clearer look. This patch introduces
        a new button for it on the local results page.

        * resources/results-template.html:

2014-03-20  Laszlo Vidacs  <lvidacs.u-szeged@partner.samsung.com>

        Optimize RenderTable::colToEffCol() for tables without colspans
        https://bugs.webkit.org/show_bug.cgi?id=129298

        Reviewed by Simon Fraser.

        Create an alternative fast path to RenderTable colToEffCol() and effColToCol()
        when there is no colspan or colspan does not exceed the width of table.
        Blink merge https://codereview.chromium.org/154243002 by rhogan

        * Layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html: Added.
        * Layout/large-table-with-collapsed-borders-and-colspans.html: Added.
        * Layout/large-table-with-collapsed-borders-and-no-colspans.html: Added.
        * Layout/resources/large-table-with-collapsed-borders.css: Added.
        * Layout/resources/large-table-with-collapsed-borders.js: Added.

2014-03-14  Maciej Stachowiak  <mjs@apple.com>

        Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
        https://bugs.webkit.org/show_bug.cgi?id=130276
        <rdar://problem/16266927>

        Reviewed by Simon Fraser.

        * Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html:
        * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html:
        * Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html:
        * Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html:
        * LongSpider/3d-morph.js:
        * LongSpider/3d-raytrace.js:
        * LongSpider/math-cordic.js:
        * LongSpider/string-tagcloud.js:
        * Parser/resources/html5-8266.html:
        * Parser/resources/html5.html:

2014-03-10  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance tests for SVG shape with shape-margin
        https://bugs.webkit.org/show_bug.cgi?id=129930

        Reviewed by Ryosuke Niwa.

        The test is skipped by default.

        * Layout/Shapes/ShapeOutsideSVGWithMargin.html: Added.
        * Layout/Shapes/resources/shape.svg: Added.

2014-02-19  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance test for stacked floats with shape-outsides
        https://bugs.webkit.org/show_bug.cgi?id=128821

        Reviewed by Brent Fulgham.

        This tests generate stacked floats content with shape-outsides.
        The test is skipped by default.

        * Layout/Shapes/ShapeOutsideStackedPolygons.html: Added.

2014-02-15  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance test for raster shape with shape-margin
        https://bugs.webkit.org/show_bug.cgi?id=128770

        Reviewed by Ryosuke Niwa.

        This patch introduces a new performance test for image valued shapes,
        where shape-margin is applied on the shape.
        The test is skipped by default.

        * Layout/Shapes/ShapeOutsideRasterWithMargin.html: Added.

2014-02-14  Ryosuke Niwa  <rniwa@webkit.org>

        Improve the appearance of DYEBench
        https://bugs.webkit.org/show_bug.cgi?id=128866

        Reviewed by Antti Koivisto.

        Add a div that shows progress during the test. Also show 95th percentile,
        and use a table instead of pre to show results.

        * DoYouEvenBench/Full.html:
        (.addResult): Added. Shows results in a table.
        (benchmarkClient.willRunTest): Added to show the progress bar.
        (benchmarkClient.didRunTest):
        (benchmarkClient.didRunSuites):
        (benchmarkClient.didFinishLastIteration): Compute 95th percentile using Statistics.js

        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkRunner.prototype._appendFrame): Fix the bug where marginLeft and marginTop
        weren't correctly parsed. We were treating top as left and bottom as top somehow.
        (BenchmarkRunner.prototype._runTestAndRecordResults): Fixed a typo.

2014-02-13  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance test for complex polygon with shape-margin
        https://bugs.webkit.org/show_bug.cgi?id=128769

        Reviewed by Ryosuke Niwa.

        This patch modifies the logic of createShapeOutsideTest to accept multiple
        CSS properties from the test. The patch adds performance test for complex
        polygon shape (self intersecting at multiple places) case, moreover we
        apply shape-margin on the polygon also.

        * Layout/Shapes/ShapeOutsideContentBox.html:
        * Layout/Shapes/ShapeOutsideInset.html:
        * Layout/Shapes/ShapeOutsidePolygonWithMargin.html: Added.
        * Layout/Shapes/ShapeOutsideRaster.html:
        * Layout/Shapes/ShapeOutsideSimplePolygon.html:
        * Layout/Shapes/resources/shapes.js:

2014-02-13  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add performance test for raster shape
        https://bugs.webkit.org/show_bug.cgi?id=128746

        Reviewed by Ryosuke Niwa.

        This patch adds performance testing for image valued shape-outside.
        The test is skipped by default for now.

        * Layout/Shapes/ShapeOutsideRaster.html: Added.
        * Layout/Shapes/resources/shape.gif: Added.

2014-02-10  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add initial performance tests for polygon shape
        https://bugs.webkit.org/show_bug.cgi?id=128554

        Reviewed by Ryosuke Niwa.

        This patch adds performance testing for simple polygon shape-outside.
        The Shapes performance tests directory is skipped by default.

        * Layout/Shapes/ShapeOutsideSimplePolygon.html: Added.

2014-02-07  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add initial performance tests for inset shape
        https://bugs.webkit.org/show_bug.cgi?id=128378

        Reviewed by Ryosuke Niwa.

        * Layout/Shapes/ShapeOutsideContentBox.html: Move js to shapes.js.
        * Layout/Shapes/ShapeOutsideInset.html: Added.
        * Layout/Shapes/resources/shapes.js: Added.
        (.):

2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>

        Undelete the "build" directory erroneously removed in r163427.

        * DoYouEvenBench/resources/todomvc/labs/architecture-examples/react/bower_components/director/build:

2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>

        Revert the change made in r162216 as it broke the benchmark on shipping Safari.

        * DoYouEvenBench/resources/benchmark-runner.js:

2014-02-04  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Update Ember.js test case
        https://bugs.webkit.org/show_bug.cgi?id=128227

        Reviewed by Benjamin Poulain.

        Updated the Ember.js TodoMVC implementation.

        * DoYouEvenBench/resources/tests.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower.json:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-data/ember-data.js: Added.
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/index.html:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/app.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/helpers/pluralize.js: Added.
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/models/todo.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/router.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/js/views/todos_view.js: Added.
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/readme.md:
        * DoYouEvenBench/resources/todomvc/architecture-examples/emberjs/test.html:

2014-02-04  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Add initial performance test for shape-outside: content-box
        https://bugs.webkit.org/show_bug.cgi?id=128190

        Reviewed by Ryosuke Niwa.

        I've introduced Shapes subdirectory in Layout, every CSS Shapes related performance tests should
        go there in the future. The initial performance tests uses 'shape-outside: content-box' in order
        to tests the code paths of the Shapes implementation. I also introduced shapes.js, which allows us
        to easily add new, simple performance tests for shape-outside.

        The entire progress is tracked under #128188 meta bug.

        * Layout/Shapes/ShapeOutsideContentBox.html: Added.
        * Layout/Shapes/resources/shapes.css: Added.
        * Layout/Shapes/resources/shapes.js: Added.
        * Skipped: We skip running the tests by default for now.

2014-01-17  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Regions] Minor fixes in regions performance tests
        https://bugs.webkit.org/show_bug.cgi?id=127041

        Reviewed by Ryosuke Niwa.

        Fix minor issues in CSS Regions performance tests.

        * Layout/RegionsAuto.html: Change type to lower case.
        * Layout/RegionsAutoMaxHeight.html: Ditto.
        * Layout/RegionsFixed.html: Ditto.
        * Layout/RegionsFixedShort.html: Ditto.
        * Layout/RegionsSelection.html: Ditto. Move test methods from regions.js.
        * Layout/resources/regions.js: Remove moved methods.

2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>

        Host DoYouEvenBench on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=127185

        Reviewed by Benjamin Poulain.

        Compute the resources directory relative to the benchmark-runner's location
        so that we can load tests even if the runner HTML was located elsewhere.

        * DoYouEvenBench/Full.html:
        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkState._containingDirectory):

2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Move flightjs-example-app and todomvc into resources
        https://bugs.webkit.org/show_bug.cgi?id=127183

        Rubber-stamped by Anders Carlsson.

        * DoYouEvenBench/InteractiveRunner.html: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
        * DoYouEvenBench/benchmark.html: Removed.
        * DoYouEvenBench/flightjs-example-app: Removed.
        * DoYouEvenBench/flightjs-example-app/LICENSE.md: Removed.
        * DoYouEvenBench/flightjs-example-app/README.md: Removed.
        * DoYouEvenBench/flightjs-example-app/app: Removed.
        * DoYouEvenBench/flightjs-example-app/app/boot: Removed.
        * DoYouEvenBench/flightjs-example-app/app/boot/page.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_data: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/css: Removed.
        * DoYouEvenBench/flightjs-example-app/app/css/custom.css: Removed.
        * DoYouEvenBench/flightjs-example-app/app/data.js: Removed.
        * DoYouEvenBench/flightjs-example-app/app/templates.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Removed.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jquery: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/mustache: Removed.
        * DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Removed.
        * DoYouEvenBench/flightjs-example-app/components/requirejs: Removed.
        * DoYouEvenBench/flightjs-example-app/components/requirejs/require.js: Removed.
        * DoYouEvenBench/flightjs-example-app/index.html: Removed.
        * DoYouEvenBench/flightjs-example-app/karma.conf.js: Removed.
        * DoYouEvenBench/flightjs-example-app/package.json: Removed.
        * DoYouEvenBench/flightjs-example-app/requireMain.js: Removed.
        * DoYouEvenBench/resources/benchmark-runner.js:
        * DoYouEvenBench/resources/flightjs-example-app: Copied from PerformanceTests/DoYouEvenBench/flightjs-example-app.
        * DoYouEvenBench/resources/todomvc: Copied from PerformanceTests/DoYouEvenBench/todomvc.
        * DoYouEvenBench/todomvc: Removed.
        * DoYouEvenBench/todomvc/architecture-examples: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower.json: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/index.html: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/app.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services/todoStorage.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/readme.md: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/package.json: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/readme.md: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower.json: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/index.html: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/app.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections/todos.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models/todo.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers/router.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/app-view.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/todo-view.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/readme.md: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower.json: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/index.html: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/app.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/store.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/todo.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/router.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/readme.md: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/test.html: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower.json: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/css/app.css: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/index.html: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/js/app.js: Removed.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/readme.md: Removed.
        * DoYouEvenBench/todomvc/labs: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower.json: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/LICENSE: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/README.md: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.min.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/ender.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/JSXTransformer.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/bower.json: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.min.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/index.html: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/app.jsx: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/footer.jsx: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/todoItem.jsx: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/utils.jsx: Removed.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/readme.md: Removed.
        * DoYouEvenBench/todomvc/license.md: Removed.
        * DoYouEvenBench/todomvc/readme.md: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower.json: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/index.html: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/app.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/controller.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/helpers.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/model.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/store.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/view.js: Removed.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/readme.md: Removed.
        * Skipped:

2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix. Skip HTML files that are not tests.

        * Skipped:

2014-01-16  Ryosuke Niwa  <rniwa@webkit.org>

        Automate DoYouEvenBench
        https://bugs.webkit.org/show_bug.cgi?id=124497

        Reviewed by Geoffrey Garen.

        Enable DoYouEvenBench/Full.html on perf bots by default.

        Put a space between the time and ms, and fixed a typo in runner.js so that the aggregator name will be reported.

        * DoYouEvenBench/Full.html:
        * Skipped:
        * resources/runner.js:

2014-01-15  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Regions] Add performance tests for selection with mixed content
        https://bugs.webkit.org/show_bug.cgi?id=126427

        Reviewed by Ryosuke Niwa.

        Add new performance tests for selection in CSS Regions mixing regular
        content with regions. 2 new tests are added, one checking select all
        command and another simulating a user selection passing through all the
        paragraphs (similar to Layout/RegionsSelection.html).

        Test are skipped for now while implementation of selection in CSS
        Regions is still evolving.

        * Layout/RegionsExtendingSelectionMixedContent.html: Added.
        * Layout/RegionsSelectAllMixedContent.html: Added.
        * Layout/resources/regions.css:
        (.regular):
        * Layout/resources/regions.js:
        * Skipped:

2014-01-14  Ryosuke Niwa  <rniwa@webkit.org>

        Make DoYouEvenBench runnable by run-perf-tests
        https://bugs.webkit.org/show_bug.cgi?id=127030

        Reviewed by Andreas Kling.

        Added Full.html that runs 5 iterations of DoYouEvenBench. This is the canonical DoYouEvenBench,
        which is also runnable by run-perf-tests.

        * DoYouEvenBench/Full.html: Added.

        * DoYouEvenBench/benchmark.html:
        (startTest): Updated the code to account for the fact old measuredValues is pushed down to tests
        property and we now have total property so that we don't have to manually compute the total.

        * DoYouEvenBench/resources/benchmark-report.js: Added. When we're inside a DRT/WTR, use
        PerfTestRunner to output that can be parsed by run-perf-tests. Do the same when the query part
        or the fragment part of the current URL is "webkit" for debugging purposes.

        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkRunner):
        (BenchmarkRunner.prototype._appendFrame): Position the frame at (0, 0) inside DRT and WTR since
        we have exactly 800px by 600px inside those two test runners. Also always insert the iframe as
        the first child of body to avoid inserting it after the pre inserted by the test runner.
        (BenchmarkRunner.prototype.step): Initializes _measuredValues.
        (BenchmarkRunner.prototype.runAllSteps): Merged callNextStep in benchmark.html.
        (BenchmarkRunner.prototype.runMultipleIterations): Added.
        (BenchmarkRunner.prototype._runTestAndRecordResults): Compute the grand total among suites.
        Also push down the sync and async time into tests property for consistency.
        (BenchmarkRunner.prototype._finalize):

        * Dromaeo/resources/dromaeorunner.js:
        (DRT.testObject): Renamed dromaeoIterationCount to customIterationCount as this option is also
        used by DoYouEvenBench.

        * resources/runner.js: Ditto.
        (.finish): Spit out the aggregator name.

2014-01-07  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Turn BenchmarkRunner into a real class
        https://bugs.webkit.org/show_bug.cgi?id=126613

        Reviewed by Stephanie Lewis.

        Made BenchmarkRunner an instantiatable class. Made tests.js simply create an array of suite objects
        instead of calling BenchmarkRunner.Suite now that we can have mulitple instances of BenchmarkRunner.

        * DoYouEvenBench/benchmark.html:
        (formatTestName): Moved and renamed from BenchmarkRunner._testName.
        (createUIForSuites): Extracted from a giant blob of code.
        (startTest): Ditto.
        * DoYouEvenBench/resources/benchmark-runner.js:
        (BenchmarkRunner): Added.
        (BenchmarkRunner.prototype.waitForElement):
        (BenchmarkRunner.prototype._removeFrame):
        (BenchmarkRunner.prototype._appendFrame):
        (BenchmarkRunner.prototype._waitAndWarmUp):
        (BenchmarkRunner.prototype._runTest):
        (BenchmarkState.prototype.prepareCurrentSuite):
        (BenchmarkRunner.prototype.step):
        (BenchmarkRunner.prototype._runTestAndRecordResults):
        (BenchmarkRunner.prototype._finalize):
        * DoYouEvenBench/resources/tests.js:

2014-01-07  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Extract tests and runner code from benchmark.js/html
        https://bugs.webkit.org/show_bug.cgi?id=126596

        Reviewed by Stephanie Lewis.

        Extracted benchmark-runner.js and tests.js out of benchmark.js and benchmark.html.

        Added a "client" interface to BenchmarkRunner so that benchmark.html could register necessary hooks to
        update its UI. Also made BenchmarkRunner store a tree of results so that the serialization of test names
        could be isolated from BenchmarkRunner itself in the future.

        * DoYouEvenBench/benchmark.html:
        Moved the code to instantiate and update UI here from benchmark.js. The test code was moved out of this
        file into resources/tests.js.

        * DoYouEvenBench/resources/benchmark-runner.js: Renamed from PerformanceTests/DoYouEvenBench/benchmark.js.
        (SimplePromise): Moved from benchmark.js
        (SimplePromise.prototype.then): Ditto.
        (SimplePromise.prototype.resolve): Ditto.
        (BenchmarkTestStep): Added. Wraps each test step.
        (BenchmarkRunner.suite): Moved from benchmark.js.
        (BenchmarkRunner.setClient): Added.
        (BenchmarkRunner.waitForElement): Moved.
        (BenchmarkRunner._removeFrame): Ditto.
        (BenchmarkRunner._appendFrame): Ditto. Set the width and the height of the iframe as they're more than
        presentational as they affect performance.
        (BenchmarkRunner._waitAndWarmUp): Ditto.
        (BenchmarkRunner._runTest): Ditto.
        (BenchmarkRunner._testName): Ditto.
        (BenchmarkState): Ditto.
        (BenchmarkState.prototype.currentSuite): Ditto.
        (BenchmarkState.prototype.currentTest): Ditto.
        (BenchmarkState.prototype.next): Ditto.
        (BenchmarkState.prototype.isFirstTest): Ditto.
        (BenchmarkState.prototype.prepareCurrentSuite): Ditto.
        (BenchmarkRunner.step): Ditto.
        (BenchmarkRunner._runTestAndRecordResults): Ditto. Note the code to update the UI has been move to
        benchmark.html. Also moved the code to accumulate the totals here from _finalize.
        (BenchmarkRunner._finalize): Moved.

        * DoYouEvenBench/resources/tests.js: Copied from PerformanceTests/DoYouEvenBench/benchmark.html.
        Uses BenchmarkTestStep instead of an array for each test step.

2014-01-02  Myles C. Maxfield  <mmaxfield@apple.com>

        Allow ImageBuffer to re-use IOSurfaces
        https://bugs.webkit.org/show_bug.cgi?id=125477

        Reviewed by Geoff Garen.

        This test times creating a variety of different sizes of canvases
        once some have already been created. The second creation of the
        canvases should re-use the existing IOSurfaces.

        * Canvas/reuse.html: Added.

2013-12-23  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r160945.
        http://trac.webkit.org/changeset/160945
        https://bugs.webkit.org/show_bug.cgi?id=126164

        Seems to have broken multiple canvas tests (Requested by ap on
        #webkit).

        * Canvas/reuse.html: Removed.

2013-12-09  Myles C. Maxfield  <mmaxfield@apple.com>

        Allow ImageBuffer to re-use IOSurfaces
        https://bugs.webkit.org/show_bug.cgi?id=125477

        Reviewed by Geoff Garen.

        This test times creating a variety of different sizes of canvases
        once some have already been created. The second creation of the
        canvases should re-use the existing IOSurfaces.

        * Canvas/reuse.html: Added.

2013-12-15  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION: 2x regression on Dromaeo DOM query tests
        https://bugs.webkit.org/show_bug.cgi?id=125377

        Reviewed by Filip Pizlo.

        Added a micro-benchmark for updating a named property on document.

        * Bindings/update-name-getter.html: Added.
        * Skipped:

2013-12-03  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Regions] Fix Layout/RegionsSelection.html in Mac platform
        https://bugs.webkit.org/show_bug.cgi?id=124963

        Reviewed by Ryosuke Niwa.

        Layout/RegionsSelection.html introduced in r159488 was not working in
        Mac platform because of it was trying to use mouse events out of the
        window dimensions. Use collapse() and extend() methods from Selection
        object to solve the issue.

        * Layout/resources/regions.js: Use collapse() and extend() instead of
        mouse events.

2013-11-27  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix after r159805.

        * resources/runner.js:

2013-11-26  Sergio Villar Senin  <svillar@igalia.com>

        [CSS Grid Layout] Support grid-definition-{rows|columns} repeat() syntax
        https://bugs.webkit.org/show_bug.cgi?id=103312

        Reviewed by Andreas Kling.

        Use the repeat() syntax to build the huge grids used by the
        performance tests.

        * Layout/auto-grid-lots-of-data.html:
        * Layout/fixed-grid-lots-of-data.html:

2013-11-26  Ryosuke Niwa  <rniwa@webkit.org>

        Record subtest values in Dromaeo tests
        https://bugs.webkit.org/show_bug.cgi?id=124498

        Reviewed by Andreas Kling.

        Made Dromaeo's test runner report values in DRT.progress via newly added PerfTestRunner.reportValues.

        * Dromaeo/resources/dromaeorunner.js:
        (.): Moved the definition out of DRT.setup.
        (DRT.setup): Ditto.
        (DRT.testObject): Extracted from DRT.setup. Set the subtest name and continueTesting.
        continueTesting is set true for subtests; i.e. when name is specified.
        (DRT.progress): Call PerfTestRunner.reportValues to report subtest results.
        (DRT.teardown): Call PerfTestRunner.reportValues instead of measureValueAsync.

        * resources/runner.js: Made various changes for newly added PerfTestRunner.reportValues.
        (.): Moved the initialization of completedIterations, results, jsHeapResults, and mallocHeapResults into
        start since they need to be initialized before running each subtest. Initialize logLines here since we
        need to use the same logger for all subtests.
        (.start): Initialize the variables mentioned above here. Also respect doNotLogStart used by reportValues.
        (ignoreWarmUpAndLog): Added doNotLogProgress. Used by reportValues since it reports all values at once.
        (finish): Compute the metric name such as FrameFrame and Runs from unit. Also don't log or notify done
        when continueTesting is set on the test object.
        (PerfTestRunner.reportValues): Added. Reports all values for the main/sub test.

2013-11-26  Ryosuke Niwa  <rniwa@webkit.org>

        Remove replay performance tests as it's not actively maintained
        https://bugs.webkit.org/show_bug.cgi?id=124764

        Reviewed by Andreas Kling.

        Removed the replay performance tests. We can add them back when time comes.

        * Replay/Chinese/chinaz.com.replay: Removed.
        * Replay/Chinese/www.163.com.replay: Removed.
        * Replay/Chinese/www.alipay.com.replay: Removed.
        * Replay/Chinese/www.baidu.com.replay: Removed.
        * Replay/Chinese/www.csdn.net.replay: Removed.
        * Replay/Chinese/www.douban.com.replay: Removed.
        * Replay/Chinese/www.hao123.com.replay: Removed.
        * Replay/Chinese/www.xinhuanet.com.replay: Removed.
        * Replay/Chinese/www.xunlei.com.replay: Removed.
        * Replay/Chinese/www.youku.com.replay: Removed.
        * Replay/English/beatonna.livejournal.com.replay: Removed.
        * Replay/English/cakewrecks.blogspot.com.replay: Removed.
        * Replay/English/chemistry.about.com.replay: Removed.
        * Replay/English/digg.com.replay: Removed.
        * Replay/English/en.wikipedia.org-rorschach_test.replay: Removed.
        * Replay/English/icanhascheezburger.com.replay: Removed.
        * Replay/English/imgur.com-gallery.replay: Removed.
        * Replay/English/online.wsj.com.replay: Removed.
        * Replay/English/stockoverflow.com-best-comment.replay: Removed.
        * Replay/English/www.alibaba.com.replay: Removed.
        * Replay/English/www.amazon.com-kindle.replay: Removed.
        * Replay/English/www.apple.com.replay: Removed.
        * Replay/English/www.cnet.com.replay: Removed.
        * Replay/English/www.dailymotion.com.replay: Removed.
        * Replay/English/www.ehow.com-prevent-fire.replay: Removed.
        * Replay/English/www.filestube.com-amy-adams.replay: Removed.
        * Replay/English/www.foxnews.replay: Removed.
        * Replay/English/www.huffingtonpost.com.replay: Removed.
        * Replay/English/www.imdb.com-twilight.replay: Removed.
        * Replay/English/www.mozilla.com-all-order.replay: Removed.
        * Replay/English/www.php.net.replay: Removed.
        * Replay/English/www.reddit.com.replay: Removed.
        * Replay/English/www.telegraph.co.uk.replay: Removed.
        * Replay/English/www.w3.org-htmlcss.replay: Removed.
        * Replay/English/www.w3schools.com-html.replay: Removed.
        * Replay/English/www.youtube.com-music.replay: Removed.
        * Replay/French/www.orange.fr.replay: Removed.
        * Replay/Italian/www.repubblica.it.replay: Removed.
        * Replay/Japanese/2ch.net-newsplus.replay: Removed.
        * Replay/Japanese/entameblog.seesaa.net.replay: Removed.
        * Replay/Japanese/ja.wikipedia.org.replay: Removed.
        * Replay/Japanese/www.hatena.ne.jp.replay: Removed.
        * Replay/Japanese/www.livedoor.com.replay: Removed.
        * Replay/Japanese/www.nicovideo.jp.replay: Removed.
        * Replay/Japanese/www.rakuten.co.jp.replay: Removed.
        * Replay/Japanese/www.yahoo.co.jp.replay: Removed.
        * Replay/Korean/www.naver.com.replay: Removed.
        * Replay/Persian/blogfa.com.replay: Removed.
        * Replay/Polish/www.wp.pl.replay: Removed.
        * Replay/Portuguese/www.uol.com.br.replay: Removed.
        * Replay/Russian/lenta.ru.replay: Removed.
        * Replay/Russian/vkontakte.ru-help.replay: Removed.
        * Replay/Russian/www.ixbt.com.replay: Removed.
        * Replay/Russian/www.kp.ru.replay: Removed.
        * Replay/Russian/www.liveinternet.ru.replay: Removed.
        * Replay/Russian/www.pravda.ru.replay: Removed.
        * Replay/Russian/www.rambler.ru.replay: Removed.
        * Replay/Russian/www.ucoz.ru.replay: Removed.
        * Replay/Russian/www.yandex.ru.replay: Removed.
        * Replay/Spanish/www.taringa.net.replay: Removed.
        * Replay/Swedish/www.flashback.se.replay: Removed.
        * Replay/Swedish/www.tradera.com.replay: Removed.
        * Replay/www.google.com.replay: Removed.
        * Replay/www.techcrunch.com.replay: Removed.
        * Replay/www.youtube.com.replay: Removed.

2013-11-22  Ryosuke Niwa  <rniwa@webkit.org>

        Layout Test editing/deleting/password-delete-performance.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=124781

        Reviewed by Alexey Proskuryakov.

        Add a new performance test to replace editing/deleting/password-delete-performance.html.
        We skip this test by default since it's a micro benchmark.

        * Interactive/DeletingInPasswordField.html: Added.
        * Skipped:

2013-11-18  Sergio Villar Senin  <svillar@igalia.com>

        [CSS Grid Layout] Improve content-sized track layout
        https://bugs.webkit.org/show_bug.cgi?id=124408

        Reviewed by Dean Jackson.

        From Blink r156122 by <jchaffraix@chromium.org>

        New test to check the performance of layouting grids with content sized tracks.

        * Layout/auto-grid-lots-of-data.html: Added.

2013-11-08  Sergio Villar Senin  <svillar@igalia.com>

        [CSS Grid Layout] Run the content-sized tracks sizing algorithm only when required
        https://bugs.webkit.org/show_bug.cgi?id=124039

        Reviewed by Dean Jackson.

        From Blink r156028 and r156168 by <jchaffraix@chromium.org>.

        New performance tests for layouts in grids with fixed size tracks.

        * Layout/fixed-grid-lots-of-data.html: Added.

2013-11-19  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Regions] Add performance test for selection
        https://bugs.webkit.org/show_bug.cgi?id=119230

        Reviewed by Ryosuke Niwa.

        Add new performance test for selection in CSS Regions. It checks a
        selection from the first region to the last one, passing through all the
        regions.

        Test is skipped for now while implementation of selection in CSS Regions
        is still evolving.

        * Layout/RegionsSelection.html: Added.
        * Layout/resources/regions.js:
        (.):
        * Skipped:

2013-11-18  Ryosuke Niwa  <rniwa@webkit.org>

        Simplify and reformat the output of performance tests inside test runners
        https://bugs.webkit.org/show_bug.cgi?id=124496

        Reviewed by Antti Koivisto.

        As a preparation to support subtests for Dromaeo and DoYouEvenBench, simplify the output performance tests generate.
        Also modernize the output to better support "metric" concept we introduced a while ago.

        New output on Dromaeo/dom-attr looks like this:
        -----------------------------------------------
        Running 5 times
        getAttribute -> [1105, 1108, 1134, 1137, 1154]
        element.property -> [1634, 1655, 1685, 1696, 1723]
        setAttribute -> [646.3536463536464, 651, 651, 656.3436563436563, 658]
        element.property = value -> [934, 949, 963, 964, 974]
        element.expando = value -> [419, 419.5804195804196, 421.57842157842157, 425.57442557442556, 429]
        element.expando -> [501, 517, 519.4805194805194, 521.4785214785214, 525]

            1: 117.40644785571585 runs/s
            2: 118.84720469666297 runs/s
            3: 119.80547640905021 runs/s
            4: 120.51886194758805 runs/s
            5: 121.51924380569295 runs/s

        :Time -> [117.40644785571585, 118.84720469666297, 119.80547640905021, 120.51886194758805, 121.51924380569295] runs/s
            mean: 119.619446942942 runs/s
            median: 119.80547640905021 runs/s
            stdev: 1.5769040458730506 runs/s
            min: 117.40644785571585 runs/s
            max: 121.51924380569295 runs/s
        -----------------------------------------------

        * Dromaeo/resources/dromaeorunner.js:
        (DRT.progress): Use the new format for subtest reports.
        * resources/runner.js:
        (.): Declare verboseLogging, which is set to true outside of test runners.
        (PerfTestRunner.logInfo): Use verboseLogging instead of directly checking window.testRunner.
        (PerfTestRunner.logDetail): Added. Logs informative text with a label such as "mean: 123 s" with 4-space indentation.
        (PerfTestRunner.logStatistics): Use logDetail.
        (.start): Initialize verboseLogging. Also log "Running 20 times" as an informative log using logDetail.
        (.ignoreWarmUpAndLog): Use logDetail for showing the progress. These logs were useless inside test runners anyway
        because perftest didn't get to see any output until the test finished running.
        (.finish): Call logStatistics with metric name as opposed to a label. Each metric name is now prefixed with ':' to be
        distinguishable from subtests, making the new format forward compatible.

2013-11-18  Ryosuke Niwa  <rniwa@webkit.org>

        [Performance tests] Interactive/SelectAll.html throws an exception
        https://bugs.webkit.org/show_bug.cgi?id=124495

        Reviewed by Antti Koivisto

        Return a boolean indicating whether more values are needed or not in
        PerfTestRunner.measureValueAsync so that runTest can terminate gracefully.

        * Interactive/SelectAll.html:
        (runTest): Don't schedule a timer for runTest if we've got enough values.
        * resources/runner.js:
        (PerfTestRunner.measureValueAsync): Returns true iff more values are needed.

2013-11-13  Antti Koivisto  <antti@apple.com>

        This was supposed to test overflow-wrap:break-word instead of word-break:break-all.

        Rubber-stamped by Andreas Kling.

        * Layout/line-layout-simple.html:

2013-11-12  Andreas Kling  <akling@apple.com>

        Remove body onload handler from html5-8266.html that was causing
        the test to sometimes finish before doing anything interesting.

        Unskip Parser/HTML5-8266-FullRender.html now that it's stable.

        Rubber-stamped by Antti Koivisto.

        * Parser/resources/html5-8266.html:
        * Skipped:

2013-11-12  Andreas Kling  <akling@apple.com>

        Neutralize external resource loads in the new HTML5 spec copy.

        Skip Parser/HTML5-8266-FullRender.html until I can make it less flaky.

        * Parser/resources/html5-8266.html:
        * Skipped:

2013-11-12  Andreas Kling  <akling@apple.com>

        Import a fresh version of the full HTML5 spec for perf testing.

        Rubber-stamped by Antti Koivisto.

        * Parser/HTML5-8266-FullRender.html: Added.
        * Parser/HTML5-8266-ParseOnly.html: Added.
        * Parser/resources/html5-8266.html: Added.

2013-11-09  Antti Koivisto  <antti@apple.com>

        Add subtest for word-break:break-all to Layout/line-layout-simple.html
        https://bugs.webkit.org/show_bug.cgi?id=124103

        Reviewed by Andreas Kling.

        * Layout/line-layout-simple.html:

        Combination "white-space:pre-wrap; word-break:break-all" is common for pure text.

2013-11-08  Antti Koivisto  <antti@apple.com>

        Add line layout performance test that exercises more cases
        https://bugs.webkit.org/show_bug.cgi?id=124041

        Reviewed by Anders Carlsson.

        The existing line-layout.html covers the most basic left-aligned case only.
        Add a test with more coverage for things that are mostly not yet supported by the simple
        line layout path:

        - centered text
        - right aligned text
        - justified text
        - pre
        - white-space:pre-wrap
        - text with simple inlines
        - text with br

        * Layout/line-layout-simple.html: Added.

2013-10-25  Sergio Villar Senin  <svillar@igalia.com>

        Use a Vector instead of HashSet to computed the orderValues in RenderFlexibleBox
        https://bugs.webkit.org/show_bug.cgi?id=118620

        Reviewed by Antti Koivisto.

        From Blink r152960 by <ojan@chromium.org>

        New performance test for layouts in flexboxes.

        * Layout/flexbox-lots-of-data.html: Added.

2013-10-24  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r157916.
        http://trac.webkit.org/changeset/157916
        https://bugs.webkit.org/show_bug.cgi?id=123274

        Broke Layout/flexbox-lots-of-data.html on perfbot (Requested
        by ap on #webkit).

        * Layout/flexbox-lots-of-data.html: Removed.

2013-10-14  Sergio Villar Senin  <svillar@igalia.com>

        Use a Vector instead of HashSet to computed the orderValues in RenderFlexibleBox
        https://bugs.webkit.org/show_bug.cgi?id=118620

        Reviewed by Antti Koivisto.

        From Blink r152960 by <ojan@chromium.org>

        New performance test for layouts in flexboxes.

        * Layout/flexbox-lots-of-data.html: Added.

2013-10-06  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Make it work on Internet Explorer 11 Release Preview
        https://bugs.webkit.org/show_bug.cgi?id=122406

        Reviewed by Darin Adler.

        On Internet Explorer 11, $(elem).closest('li').data('id') fails to find the containig li of elem once
        the first item is marked complete or deleted until we get back to the event loop in the jQuery/TodoMVC.
        Worked around this limitation by overriding app.getTodo to use each item's id computed in advance.

        Also use $.text instead of execCommand('InsertText') in FlightJS/MailClient since Internet Explorer
        doesn't support execCommand('InsertText'). Also select the recipient to avoid exceptions.

        * DoYouEvenBench/benchmark.html:

2013-10-05  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Add Facebook's React TodoMVC test case
        https://bugs.webkit.org/show_bug.cgi?id=122379

        Reviewed by Andreas Kling.

        Add React/TodoMVC as a new test case. Somehow we beat Firefox on this one as well.

        * DoYouEvenBench/benchmark.html:
        * DoYouEvenBench/todomvc/labs: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower.json: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/LICENSE: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/README.md: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/director.min.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/director/build/ender.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/JSXTransformer.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/bower.json: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/react/react.min.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/index.html: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/app.jsx: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/footer.jsx: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/todoItem.jsx: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/js/utils.jsx: Added.
        * DoYouEvenBench/todomvc/labs/architecture-examples/react/readme.md: Added.

2013-09-25  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Add a test case for FlightJS
        https://bugs.webkit.org/show_bug.cgi?id=121926

        Reviewed by Antti Koivisto.

        Add a FlightJS test case.

        * DoYouEvenBench/benchmark.html:
        * DoYouEvenBench/benchmark.js:
        * DoYouEvenBench/flightjs-example-app: Added.
        * DoYouEvenBench/flightjs-example-app/LICENSE.md: Added.
        * DoYouEvenBench/flightjs-example-app/README.md: Added.
        * DoYouEvenBench/flightjs-example-app/app: Added.
        * DoYouEvenBench/flightjs-example-app/app/boot: Added.
        * DoYouEvenBench/flightjs-example-app/app/boot/page.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_data: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_data/compose_box.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_data/mail_items.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_data/move_to.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/compose_box.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/folders.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_controls.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/mail_items.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/move_to_selector.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/component_ui/with_select.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/css: Added.
        * DoYouEvenBench/flightjs-example-app/app/css/custom.css: Added.
        * DoYouEvenBench/flightjs-example-app/app/data.js: Added.
        * DoYouEvenBench/flightjs-example-app/app/templates.js: Added.
        * DoYouEvenBench/flightjs-example-app/components: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.css: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/css/bootstrap.min.css: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/bootstrap/js/bootstrap.min.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/.gitignore: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/CHANGES: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/LICENSE: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/README.md: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/component.json: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-sham.min.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/es5-shim.min.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/package.json: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/helpers/h.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/index.html: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/lib/json2.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-array.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-date.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-function.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-object.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/es5-shim/tests/spec/s-string.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/.travis.yml: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/advice.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/component.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/compose.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/index.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/logger.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/registry.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/lib/utils.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug: Added.
        * DoYouEvenBench/flightjs-example-app/components/flight/tools/debug/debug.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/LICENSE.md: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/README.md: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/bower.json: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib: Added.
        * DoYouEvenBench/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/jquery: Added.
        * DoYouEvenBench/flightjs-example-app/components/jquery/component.json: Added.
        * DoYouEvenBench/flightjs-example-app/components/jquery/composer.json: Added.
        * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/jquery/jquery.min.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/mustache: Added.
        * DoYouEvenBench/flightjs-example-app/components/mustache/mustache.js: Added.
        * DoYouEvenBench/flightjs-example-app/components/requirejs: Added.
        * DoYouEvenBench/flightjs-example-app/components/requirejs/require.js: Added.
        * DoYouEvenBench/flightjs-example-app/index.html: Added.
        * DoYouEvenBench/flightjs-example-app/karma.conf.js: Added.
        * DoYouEvenBench/flightjs-example-app/package.json: Added.
        * DoYouEvenBench/flightjs-example-app/requireMain.js: Added.

2013-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        DoYouEvenBench: Indentations in benchmark.js and benchmark.html are all messed up
        https://bugs.webkit.org/show_bug.cgi?id=121597

        Reviewed by Anders Carlsson.

        Fixed indentations.

        * DoYouEvenBench/benchmark.html:
        * DoYouEvenBench/benchmark.js:
        (SimplePromise.prototype.resolve.else):
        (SimplePromise.prototype.resolve):
        (BenchmarkRunner.waitForElement.resolveIfReady):
        (BenchmarkRunner.waitForElement):
        (BenchmarkRunner._waitAndWarmUp.Fibonacci):
        (BenchmarkRunner._finalize):

2013-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        Add an AngularJS test to DoYouEvenBench
        https://bugs.webkit.org/show_bug.cgi?id=121595

        Reviewed by Antti Koivisto.

        * DoYouEvenBench/benchmark.html:
        * DoYouEvenBench/todomvc/architecture-examples/angularjs: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower.json: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular-mocks/angular-mocks.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/angular/angular.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/index.html: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/app.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoBlur.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/js/services/todoStorage.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/readme.md: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/config/testacular.conf.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/package.json: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/readme.md: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/directivesSpec.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/angularjs/test/unit/todoCtrlSpec.js: Added.

2013-09-17  Ryosuke Niwa  <rniwa@webkit.org>

        Add a not completely unrealistic DOM Benchmark
        https://bugs.webkit.org/show_bug.cgi?id=121361

        Reviewed by Filip Pizlo.

        Add a DOM benchmark based on TodoMVC for vanilla JS, Ember.js, Backbone.js, and jQuery.
        We'll add more frameworks and demo apps as we go.

        * DoYouEvenBench: Added.
        * DoYouEvenBench/benchmark.html: Added.
        * DoYouEvenBench/benchmark.js: Added.
        (SimplePromise):
        (SimplePromise.prototype.then):
        (SimplePromise.prototype.resolve.else):
        (SimplePromise.prototype.resolve):
        (BenchmarkRunner.suite):
        (BenchmarkRunner.waitForElement.resolveIfReady):
        (BenchmarkRunner.waitForElement):
        (BenchmarkRunner._removeFrame):
        (BenchmarkRunner._appendFrame):
        (BenchmarkRunner._waitAndWarmUp.Fibonacci):
        (BenchmarkRunner._testName):
        (BenchmarkRunner._testItemId):
        (BenchmarkRunner.listSuites.button.onclick):
        (BenchmarkRunner.listSuites.callNextStep):
        (BenchmarkRunner.listSuites):
        (BenchmarkState):
        (BenchmarkState.prototype.currentSuite):
        (BenchmarkState.prototype.currentTest):
        (BenchmarkState.prototype.next):
        (BenchmarkState.prototype.isFirstTest):
        (BenchmarkState.prototype.prepareCurrentSuite.frame.onload):
        (BenchmarkRunner.step):
        (BenchmarkRunner._runTestAndRecordResults):
        (BenchmarkRunner._finalize):
        * DoYouEvenBench/todomvc: Added.
        * DoYouEvenBench/todomvc/architecture-examples: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower.json: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone.localStorage/backbone.localStorage.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/backbone/backbone.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/jquery/jquery.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/bower_components/underscore/underscore.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/index.html: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/app.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/collections/todos.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/models/todo.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/routers/router.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/app-view.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/js/views/todo-view.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/backbone/readme.md: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower.json: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember-localstorage-adapter/localstorage_adapter.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/ember/ember.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/handlebars/handlebars.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/jquery/jquery.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/index.html: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/app.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todo_controller.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/controllers/todos_controller.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/libs/ember-data.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/store.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/models/todo.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/js/views/edit_todo_view.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/readme.md: Added.
        * DoYouEvenBench/todomvc/architecture-examples/emberjs/test.html: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower.json: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/handlebars/handlebars.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/jquery/jquery.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/css/app.css: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/index.html: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/js/app.js: Added.
        * DoYouEvenBench/todomvc/architecture-examples/jquery/readme.md: Added.
        * DoYouEvenBench/todomvc/license.md: Added.
        * DoYouEvenBench/todomvc/readme.md: Added.
        * DoYouEvenBench/todomvc/vanilla-examples: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower.json: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.css: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/base.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/bower_components/todomvc-common/bg.png: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/index.html: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/app.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/controller.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/helpers.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/model.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/store.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/js/view.js: Added.
        * DoYouEvenBench/todomvc/vanilla-examples/vanillajs/readme.md: Added.
        * Skipped:

2013-09-04  Filip Pizlo  <fpizlo@apple.com>

        Introduce a version of SunSpider that runs for a really long time (about 1 sec on my machine)

        Rubber stamped by Mark Hahnenberg.

        This isn't meant for serious VM-to-VM performance comparisons, but it is useful
        to see how these benchmarks behave when they're completely warmed up.

        * LongSpider: Added.
        * LongSpider/3d-cube.js: Added.
        (DrawLine):
        (CalcCross):
        (CalcNormal):
        (CreateP):
        (MMulti):
        (VMulti):
        (VMulti2):
        (MAdd):
        (Translate):
        (RotateX):
        (RotateY):
        (RotateZ):
        (DrawQube):
        (Loop):
        (Init):
        * LongSpider/3d-morph.js: Added.
        (loops.3500.nx.120.nz.120.morph):
        * LongSpider/3d-raytrace.js: Added.
        (createVector):
        (sqrLengthVector):
        (lengthVector):
        (addVector):
        (subVector):
        (scaleVector):
        (normaliseVector):
        (add):
        (sub):
        (scalev):
        (dot):
        (scale):
        (cross):
        (normalise):
        (transformMatrix):
        (invertMatrix):
        (Triangle):
        (Triangle.prototype.intersect):
        (Scene):
        (Scene.prototype.intersect):
        (Scene.prototype.blocked):
        (Camera):
        (Camera.prototype.generateRayPair):
        (renderRows):
        (Camera.prototype.render):
        (raytraceScene.floorShader):
        (raytraceScene):
        (arrayToCanvasCommands):
        * LongSpider/access-binary-trees.js: Added.
        (TreeNode):
        (TreeNode.prototype.itemCheck):
        (bottomUpTree):
        * LongSpider/access-fannkuch.js: Added.
        (fannkuch):
        * LongSpider/access-nbody.js: Added.
        (Body):
        (Body.prototype.offsetMomentum):
        (Jupiter):
        (Saturn):
        (Uranus):
        (Neptune):
        (Sun):
        (NBodySystem):
        (NBodySystem.prototype.advance):
        (NBodySystem.prototype.energy):
        * LongSpider/access-nsieve.js: Added.
        (pad):
        (nsieve):
        (sieve):
        * LongSpider/bitops-3bit-bits-in-byte.js: Added.
        (fast3bitlookup):
        (TimeFunc):
        * LongSpider/bitops-bits-in-byte.js: Added.
        (bitsinbyte):
        (TimeFunc):
        * LongSpider/bitops-nsieve-bits.js: Added.
        (pad):
        (primes):
        (sieve):
        * LongSpider/controlflow-recursive.js: Added.
        (ack):
        (fib):
        (tak):
        * LongSpider/crypto-aes.js: Added.
        (Cipher):
        (SubBytes):
        (ShiftRows):
        (MixColumns):
        (AddRoundKey):
        (KeyExpansion):
        (SubWord):
        (RotWord):
        (AESEncryptCtr):
        (AESDecryptCtr):
        (escCtrlChars):
        * LongSpider/crypto-md5.js: Added.
        (hex_md5):
        (b64_md5):
        (str_md5):
        (hex_hmac_md5):
        (b64_hmac_md5):
        (str_hmac_md5):
        (md5_vm_test):
        (core_md5):
        (md5_cmn):
        (md5_ff):
        (md5_gg):
        (md5_hh):
        (md5_ii):
        (core_hmac_md5):
        (safe_add):
        (bit_rol):
        (str2binl):
        (binl2str):
        (binl2hex):
        (binl2b64):
        * LongSpider/crypto-sha1.js: Added.
        (hex_sha1):
        (b64_sha1):
        (str_sha1):
        (hex_hmac_sha1):
        (b64_hmac_sha1):
        (str_hmac_sha1):
        (sha1_vm_test):
        (core_sha1):
        (sha1_ft):
        (sha1_kt):
        (core_hmac_sha1):
        (safe_add):
        (rol):
        (str2binb):
        (binb2str):
        (binb2hex):
        (binb2b64):
        * LongSpider/date-format-tofte.js: Added.
        (arrayExists):
        (.a):
        (.A):
        (.B):
        (.d):
        (.D):
        (.F):
        (.g):
        (.G):
        (.h):
        (.H):
        (.i):
        (.j):
        (.l):
        (.L):
        (.m):
        (.M):
        (.n):
        (.O):
        (.r):
        (.S):
        (.s):
        (.t):
        (.U):
        (.W):
        (.w):
        (.Y):
        (.y):
        (.z):
        (Date.prototype.formatDate):
        * LongSpider/date-format-xparb.js: Added.
        (Date.prototype.dateFormat):
        (Date.createNewFormat):
        (Date.getFormatCode):
        (Date.parseDate):
        (Date.createParser):
        (Date.formatCodeToRegex):
        (Date.prototype.getTimezone):
        (Date.prototype.getGMTOffset):
        (Date.prototype.getDayOfYear):
        (Date.prototype.getWeekOfYear):
        (Date.prototype.isLeapYear):
        (Date.prototype.getFirstDayOfMonth):
        (Date.prototype.getLastDayOfMonth):
        (Date.prototype.getDaysInMonth):
        (Date.prototype.getSuffix):
        (String.escape):
        * LongSpider/math-cordic.js: Added.
        (FIXED):
        (FLOAT):
        (DEG2RAD):
        (cordicsincos):
        (cordic):
        * LongSpider/math-partial-sums.js: Added.
        (partial):
        * LongSpider/math-spectral-norm.js: Added.
        (A):
        (Au):
        (Atu):
        (AtAu):
        (spectralnorm):
        * LongSpider/string-base64.js: Added.
        (toBase64):
        (base64ToString):
        * LongSpider/string-fasta.js: Added.
        (rand):
        (makeCumulative):
        (fastaRepeat):
        (fastaRandom):
        * LongSpider/string-tagcloud.js: Added.
        (.Array.prototype.toJSONString):
        (.Boolean.prototype.toJSONString):
        (.Date.prototype.toJSONString):
        (.Number.prototype.toJSONString):
        (.Object.prototype.toJSONString):
        (.):

2013-06-10  Radu Stavila  <stavila@adobe.com>

        [CSS Regions] Rename region-overflow to region-fragment
        https://bugs.webkit.org/show_bug.cgi?id=117397

        Renamed -webkit-region-overflow to -webkit-region-fragment according to the new working draft
        at http://www.w3.org/TR/2013/WD-css3-regions-20130528/#the-region-fragment-property

        Reviewed by Alexander Pavlov.

        * Layout/resources/regions.css:

2013-06-05  Zan Dobersek  <zdobersek@igalia.com>

        Move MemoryInfo under window.internals
        https://bugs.webkit.org/show_bug.cgi?id=117197

        Reviewed by Ryosuke Niwa.

        * resources/runner.js: Remove the setMemoryEnabled call, it's not required anymore as the memory
        info is now accessed through window.internals and doesn't need the setting to be enabled to work.

2013-05-30  Ryosuke Niwa  <rniwa@webkit.org>

        Web Inspector: tests in PerformanceTests/inspector/ are timing out
        https://bugs.webkit.org/show_bug.cgi?id=77024

        Reviewed by Andreas Kling.

        These tests have been disabled for ages and don't conform to the standard format.

        * Skipped:
        * inspector: Removed.
        * inspector/console-300-lines.html: Removed.
        * inspector/first-open-elements.html: Removed.
        * inspector/first-open-resources.html: Removed.
        * inspector/first-open-scripts.html.broken: Removed.
        * inspector/heap-snapshot-advanced.html: Removed.
        * inspector/heap-snapshot-performance-test.js: Removed.
        * inspector/heap-snapshot.html: Removed.
        * inspector/inspector-startup-time.html: Removed.
        * inspector/network-append-30-requests.html.broken: Removed.
        * inspector/performance-test.js: Removed.
        * inspector/show-panel.html.broken: Removed.

2013-05-27  Benjamin Poulain  <benjamin@webkit.org>

        Add a balanced benchmark for QuerySelector
        https://bugs.webkit.org/show_bug.cgi?id=116811

        Reviewed by Sam Weinig.

        The goal of this benchmark is to have an overview of querySelector as typically used
        by webpages.

        It uses queries similar to what is used by popular websites and applies somewhat
        similar weighting for each type of query.

        The tree used for the queries is intentionally kept simple to ensure we measure QuerySelector
        a not purely the overhead of traversal.

        * CSS/QuerySelector.html: Added.
        * CSS/resources/query-selector.html: Added.

2013-05-18  Ryosuke Niwa  <rniwa@webkit.org>

        Add a performance test for copying
        https://bugs.webkit.org/show_bug.cgi?id=116394

        Reviewed by Andreas Kling.

        Added. We're going to skip this test by default since it's such a microbenchmark, and also because
        it currently takes 30 minutes to run. As insane as it sounds, each copy takes rouhgly 57 seconds.

        Running Interactive/CopyAll.html (1 of 1)
        RESULT Interactive: CopyAll: Time= 57618.05 ms
        median= 57135.0 ms, stdev= 1542.07271571 ms, min= 55095.0 ms, max= 60913.0 ms
        RESULT Interactive: CopyAll: JSHeap= 102811.2 bytes
        median= 103272.0 bytes, stdev= 1115.28148913 bytes, min= 100648.0 bytes, max= 103504.0 bytes
        RESULT Interactive: CopyAll: Malloc= 446408712.0 bytes
        median= 459156772.0 bytes, stdev= 20007346.3266 bytes, min= 415564040.0 bytes, max= 462011928.0 bytes
        Finished: 1766.883236 s

        * Interactive/CopyAll.html: Added.
        * Skipped:

2013-05-13  Seokju Kwon  <seokju.kwon@gmail.com>

        Web Inspector: Get rid of native-memory-snapshot in performance test
        https://bugs.webkit.org/show_bug.cgi?id=116013

        Reviewed by Andreas Kling.

        Remove native-memory-snapshot.html from PerformanceTests.

        * inspector/native-memory-snapshot.html: Removed.
        * inspector/performance-test.js:
        (initialize_TimeTracker.Timer):
        (initialize_TimeTracker.Timer.prototype._dump):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest):

2013-04-10  Benjamin Poulain  <bpoulain@apple.com>

        Mass remove all the empty directories

        Rubberstamped by Ryosuke Niwa.

        * Bindings/resources: Removed.

2013-04-02  Glenn Adams  <glenn@skynav.com>

        Need japanese line layout performance test
        https://bugs.webkit.org/show_bug.cgi?id=113811

        Reviewed by Ryosuke Niwa.

        Will be used by https://bugs.webkit.org/show_bug.cgi?id=105692 to test potential performance regression
        for Japanese (and other CJK) line break changes.

        * Layout/LineLayoutJapanese.html: Added.
        * Skipped: Skip this test by default.

2013-03-29  Andrei Bucur  <abucur@adobe.com>

        [CSS Regions] Add performance tests
        https://bugs.webkit.org/show_bug.cgi?id=113303

        Reviewed by Antti Koivisto.

        Add simple performance tests for regions, without nested named flows: a region chain and a flow article.
        The regions.js script is used to generate the tests and can set the following parameters: the number of regions,
        the number of paragraphs, the regions width, height, max-height and the propability of a forced break after a paragraph.

        The tests are skipped for now. They should be enabled once the regions performance is stable enough to create a baseline.

        * Layout/RegionsAuto.html: Added. A few regions with a short article. The regions have auto-height and some
        paragraphs (80%) have forced breaks after. Stress test for the auto-height algorithm.
        * Layout/RegionsAutoMaxHeight.html: Added. A lot of regions with auto-height and max-height. Tests the impact of
        max-height on the auto-height algorithm.
        * Layout/RegionsFixed.html: Added. A lot of regions with a long article. Some paragraphs (50%) have forced breaks after.
        Stress test for the regions layout algorithm.
        * Layout/RegionsFixedShort.html: Added. A lot of short regions with a long content. Tests the impact of unforced breaks
        on the layout speed.
        * Layout/resources/regions.css: Added.
        (.articleInFlow):
        (.articleNone):
        (.region):
        (.contentParagraph):
        (.breakAfter):
        (.regionContainer):
        * Layout/resources/regions.js: Added.
        (.):
        * Skipped:

2013-03-26  Ryosuke Niwa  <rniwa@webkit.org>

        Add a performance tests for selecting all content in a document
        https://bugs.webkit.org/show_bug.cgi?id=113358

        Reviewed by Levi Weintraub.

        Add a performance test for selecting all. We wait for paint to happen by setTimeout(~, 0).

        Example outputs:
            RESULT Interactive: SelectAll: Time= 652.6 ms
            median= 644.5 ms, stdev= 54.6177144967 ms, min= 599.0 ms, max= 773.0 ms

            RESULT Interactive: SelectAll: Time= 654.4 ms
            median= 633.5 ms, stdev= 55.9223145368 ms, min= 600.0 ms, max= 769.0 ms

            RESULT Interactive: SelectAll: Time= 657.9 ms
            median= 640.0 ms, stdev= 54.1420159833 ms, min= 604.0 ms, max= 774.0 ms

        * Interactive/SelectAll.html: Added.
        * Skipped:

2013-03-19  Alexei Filippov  <alph@chromium.org>

        Web Inspector: Fix heap profiler performance tests.
        https://bugs.webkit.org/show_bug.cgi?id=112701

        Reviewed by Yury Semikhatsky.

        The tests were broken by profile types refactoring.

        * inspector/heap-snapshot-performance-test.js:
        (test.performanceTest.step0):
        (test.performanceTest.step1):

2013-03-05  Eric Seidel  <eric@webkit.org>

        Add html-parser-threaded perf test now that the threaded parser is enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=111200

        Reviewed by Ryosuke Niwa.

        The old srcdoc test no longer triggers the threaded parser due to compatibility fixes.

        * Parser/html-parser-threaded.html: Renamed from PerformanceTests/Parser/html-parser-srcdoc.html.
        * Skipped: Unfortunately this new test is still skipped too.

2013-03-04  Eric Seidel  <eric@webkit.org>

        Add PerformanceTest for document startup via iframe append/remove
        https://bugs.webkit.org/show_bug.cgi?id=111389

        Reviewed by Kentaro Hara.

        We'd like pages with lots of iframes to be fast.
        This test shows that at least for V8/Chromium we spend
        all our time booting v8.

        On my 32-core linux machine I see about 70 runs/sec in
        Release and 5 runs/sec in Debug.

        * DOM/iframe-append-remove.html: Added.

2013-03-03  Ryosuke Niwa  <rniwa@webkit.org>

        Some perf. tests have variances that differ greatly between runs
        https://bugs.webkit.org/show_bug.cgi?id=97510

        Reviewed by Benjamin Poulain.

        In order to control the number of iterations and processes to use from run-perf-tests, always use 20
        iterations on all tests except Dromaeo, where even doing 5 iterations is prohibitively slow, by default.
        Without this change, it'll become extremely hard for us to tweak the number of iterations and processes
        to use from run-perf-tests.

        * Animation/balls.html:
        * DOM/DOMTable.html:
        * DOM/resources/dom-perf.js:
        (runBenchmarkSuite.PerfTestRunner.measureTime):
        * Dromaeo/resources/dromaeorunner.js:
        * Layout/floats_100_100.html:
        * Layout/floats_100_100_nested.html:
        * Layout/floats_20_100.html:
        * Layout/floats_20_100_nested.html:
        * Layout/floats_2_100.html:
        * Layout/floats_2_100_nested.html:
        * Layout/floats_50_100.html:
        * Layout/floats_50_100_nested.html:
        * Layout/subtree-detaching.html:
        * Parser/html5-full-render.html:
        * SVG/SvgHitTesting.html:
        * resources/runner.js:
        * resources/results-template.html:

2013-02-25  Ryosuke Niwa  <rniwa@webkit.org>

        Use perf.webkit.org JSON format in results page
        https://bugs.webkit.org/show_bug.cgi?id=110842

        Reviewed by Benjamin Poulain.

        Updated the results page template to use the new JSON format.

        Since new JSON format doesn't contain statistics such as stdev and min, added statistics.js to compute
        these values. Also use 95% percentile confidence interval instead of standard deviation in various places.

        * resources/results-template.html: Added statistics.js as dependency.
        (TestResult): Updated to take a metric instead of its test. Replaced stdev() with confidenceIntervalDelta()
        now that we have a fancy Statistics class.

        (TestRun.webkitRevision):
        (PerfTestMetric): Renamed from PerfTest since this object now encapsulates each measurement (such as time,
        JS heap, and malloc) in test. Also added a conversion table from a metric name to a unit since new format
        doesn't contain units.
        (PerfTestMetric.name): Updated to compute the full metric name from test name and metric name, matching
        the old behavior.
        (PerfTestMetric.isMemoryTest): Explicitly look for 'JSHeap' and 'Malloc' tests.
        (PerfTestMetric.smallerIsBetter):

        (attachPlot): Deleted the code to deal with tests that don't provide individual iteration measurement
        since such tests no longer exist. Also fixed up the code compute y-axis range.

        (createTableRow.markupForRun): Updated to use confidenceIntervalDelta() instead of stdev().

        (init.addTests): Added. Recursively add metrics.

        * resources/statistics.js: Added. Imported from perf.webkit.org.
        (Statistics.max):
        (Statistics.min):
        (Statistics.sum):
        (Statistics.squareSum):
        (Statistics.sampleStandardDeviation):
        (Statistics.supportedConfidenceLevels):
        (Statistics.confidenceIntervalDelta):
        (Statistics.confidenceInterval):

2013-02-11  Alexei Filippov  <alph@chromium.org>

        Web Inspector: Split Profiler domain in protocol into Profiler and HeapProfiler
        https://bugs.webkit.org/show_bug.cgi?id=108653

        Reviewed by Yury Semikhatsky.

        Currently CPU and heap profilers share the same domain 'Profiler' in the protocol.
        In fact these two profile types have not too much in common. So put each into its own domain.
        It should also help when Profiles panel gets split into several tools.
        This is the phase 1 which adds InspectorHeapProfilerAgent but doesn't
        change the original InspectorProfilerAgent.

        * inspector/heap-snapshot-performance-test.js:
        (test.performanceTest.cleanup):

2013-02-05  Dominik Röttsches  <dominik.rottsches@intel.com>

        Add a performance test for arabic line breaking
        https://bugs.webkit.org/show_bug.cgi?id=108948

        Reviewed by Eric Seidel.

        Adding a perfomance test based to exercise the complex
        font path used in rendering arabic script.

        * Layout/ArabicLineLayout.html: Added.
        * Skipped: New test skipped by default as per Ryosuke's request.

2013-01-23  Yury Semikhatsky  <yurys@chromium.org>

        Web Inspector: some measurements are missing in PerformanceTests/inspector/heap-*.html
        https://bugs.webkit.org/show_bug.cgi?id=107687

        Reviewed by Pavel Feldman.

        * inspector/heap-snapshot-performance-test.js: override methods on JSHeapSnapshot instead
        of HeapSnapshot, otherwise overrides from JSHeapSnapshot will rule.

2013-01-18  Ryosuke Niwa  <rniwa@webkit.org>

        Skip DOM/TraverseChildNodes.html as intended in r140070.

        * Skipped:

2013-01-17  Dominic Cooney  <dominicc@chromium.org>

        Unreviewed, re-land r140051.

        I overzealously rolled this out; the test was intended to be
        skipped, but was not skipped because of a typo in Skipped. See
        <https://bugs.webkit.org/show_bug.cgi?id=107210>

        * Parser/html-parser-srcdoc.html: Added.
        * Skipped: Big-P Parser.

2013-01-17  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r140051.
        http://trac.webkit.org/changeset/140051
        https://bugs.webkit.org/show_bug.cgi?id=107210

        html-parser-srcdoc.html failing on Chromium Linux Perf and
        Chromium Mac Perf with a lot of error spew about blocked
        script execution in 'about:srcdoc' (Requested by dominicc on
        #webkit).

        * Parser/html-parser-srcdoc.html: Removed.
        * Skipped:

2013-01-16  Ryosuke Niwa  <rniwa@webkit.org>

        Remove NodeListsNodeData when it's no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=107074

        Reviewed by Darin Adler.

        Added a micro benchmark to see the benefit of removing NodeListsNodeData.
        The test traverses all elements in the html5 specification page and accesses childNodes.

        Don't enable this test for now since it's really a micro benchmark specifically
        designed to test this patch.

        * DOM/TraverseChildNodes.html: Added.
        * Skipped: Don't enable newly added test by default.
        * resources/results-template.html: Compare against the unscaled unit (e.g. "bytes") as
        opposed to scaled units such as "K bytes".
        * resources/runner.js:
        (.start): Moved the code to call currentTest.setup from measureRunsPerSecondOnce so that
        it'll be ran for all test types, namely of PerfTestRunner.measureTime.
        (.measureRunsPerSecondOnce):

2013-01-17  Eric Seidel  <eric@webkit.org>

        Add a version of the html-parser benchmark which uses srcdoc instead of document.write so it tests the threaded parser
        https://bugs.webkit.org/show_bug.cgi?id=107158

        Reviewed by Ryosuke Niwa.

        Currently this test even opts-in to the threaded parser if available.
        We'll remove that line when the threaded parser becomes default or goes away.

        * Parser/html-parser-srcdoc.html: Added.

2013-01-16  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        inconsistency in drawImage with target rect negative dimensions.
        https://bugs.webkit.org/show_bug.cgi?id=100026

        Reviewed by Dean Jackson.

        Create a drawImage performance test. There is no significative change
        in performance: 27144.6851528 runs/s without the patch; 27153.517612
        runs/s with the patch. Test is currently skipped.

        * Canvas/drawimage.html: Added.
        * Skipped:

2013-01-15  Dominic Cooney  <dominicc@chromium.org>

        Allow zero values as results from the runFunction.
        https://bugs.webkit.org/show_bug.cgi?id=102500

        Reviewed by Kentaro Hara.

        DOM/DOMWalk.js fails on the Chromium Win perf bot because one or
        more parts of the test usually return zero at some point.

        * resources/runner.js: Accept merely non-negative results.

2012-12-28  Yury Semikhatsky  <yurys@chromium.org>

        Web Inspector: rename distanceToWindow to distance
        https://bugs.webkit.org/show_bug.cgi?id=105823

        Reviewed by Pavel Feldman.

        Updated heap profiler performance test after renaming distanceToWindow to distance.

        * inspector/heap-snapshot-performance-test.js:

2012-12-18  Hayato Ito  <hayato@chromium.org>

        Use element.webkitCreateShadowRoot instead of WebKitShadowRoot in PerformanceTests.
        https://bugs.webkit.org/show_bug.cgi?id=105256

        Reviewed by Dimitri Glazkov.

        WebKitShadowRoot constructor was deleted in favor of element.webkitCreateShadowRoot().

        * ShadowDOM/ChangingClassNameShadowDOM.html:
        * ShadowDOM/ChangingSelect.html:
        * ShadowDOM/ContentReprojection.html:
        * ShadowDOM/DistributionWithMultipleShadowRoots.html:
        * ShadowDOM/LargeDistributionWithLayout.html:
        * ShadowDOM/MultipleInsertionPoints.html:
        * ShadowDOM/ShadowReprojection.html:
        * ShadowDOM/SmallDistributionWithLayout.html:

2012-12-17  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] LargeDistributionWithLayout.html should be updated
        https://bugs.webkit.org/show_bug.cgi?id=105242

        Reviewed by Ryosuke Niwa.

        Since this test was written when distribution took O(N^2). However, now it's almost O(N), so this test finishes
        in very short time. We should convert it unit to runs/s.

        This test contains a some error to cause test failure, e.g. using obsolete API, so they also should be fixed.

        * ShadowDOM/LargeDistributionWithLayout.html:

2012-12-13  Ryosuke Niwa  <rniwa@webkit.org>

        [chromium perf] DOM/DOMWalk.html failures
        https://bugs.webkit.org/show_bug.cgi?id=104866

        Reviewed by Eric Seidel.

        Use PerfTestRunner.now which in turn uses window.performance.now() when it's available.

        * DOM/resources/dom-perf.js:
        (Interval.start):
        (Interval.stop):
        (BenchmarkSuite.prototype.RunSingle):

2012-12-05  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] Performance tests for ShadowDOM distribution
        https://bugs.webkit.org/show_bug.cgi?id=103617

        Reviewed by Dimitri Glazkov.

        We would like to measure ShadowDOM distribution performance in various cases.
        In this patch, we add performance tests for several distribution patterns.

        * ShadowDOM/ContentReprojection.html: Added.
        * ShadowDOM/DistributionWithMultipleShadowRoots.html: Added.
        * ShadowDOM/LargeDistributionWithLayout.html: Added.
        * ShadowDOM/MultipleInsertionPoints.html: Added.
        * ShadowDOM/ShadowReprojection.html: Added.
        * ShadowDOM/SmallDistributionWithLayout.html: Added.

2012-12-05  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] Performance tests of distribution for changing className
        https://bugs.webkit.org/show_bug.cgi?id=103612

        Reviewed by Dimitri Glazkov.

        We would like to measure ShadowDOM performance and compare it to the similar functional HTML without using ShadowDOM.
        In this patch, we add a case when classNames of distributed elemeents are changed.

        * ShadowDOM/ChangingClassName.html: Added.
        * ShadowDOM/ChangingClassNameShadowDOM.html: Added.

2012-12-03  Ryosuke Niwa  <rniwa@webkit.org>

        Dromaeo should report individual test result
        https://bugs.webkit.org/show_bug.cgi?id=99800

        Reviewed by Eric Seidel.

        Made one small modification to Droameo's webrunner.js so that it reports individual runs/s values
        for each subtest. This allows us to compute the aggregated run/s for each iteration like other
        performance tests.

        Also stop measuring memory usage in Dromaeo tests because some Dromaeo tests (e.g. jslib-modify-jquery)
        have unrealistic memory usage, and measuring them at the time of teardown doesn't make much sense.

        * Animation/balls.html: Fixed typo: measureValueAync.
        * Dromaeo/resources/dromaeo/web/webrunner.js:

        * Dromaeo/resources/dromaeorunner.js:
        (DRT.setup): Call prepareToMeasureValuesAsync so that DRT.teardown can use meausreValueAsync, and log
        "Running 5 times". Since the log container will be inserted before iframe, we need to explicitly insert
        the iframe as the first child of the body element to avoid logs from affecting the iframe's position.
        Also specify the number of iterations by calling PerfTestRunner.iterationCount() so that we may adjust
        the number of iterations in PerfTestRunner.

        (DRT.progress): Log individual measurement for each subtest.
        (DRT.teardown): Compute the aggregated result for each iteration, and log them using measureValueAsync.

        * resources/runner.js:
        (PerfTestRunner.logStatistics): Merged printStatistics since it's no longer needed after r131638.
        (PerfTestRunner): Removed getAndPrintMemoryStatistics since it was used only in Dromaeo tests but
        we no longer measure memory usage in Dromaeo tests.

        (start): Increment completedRuns from -1 to 0 for Dromaeo tests where we don't want to ignore the initial
        measurement. Note that ignoreWarmUpAndLog ignores the measurements for which completedRuns is negative.

        (ignoreWarmUpAndLog): We don't measure memory usage in Dromaeo tests. See above.
        (PerfTestRunner.iterationCount): Added. This abstraction allows us to auto-adjust the number of iterations from
        run-perf-tests in near future.
        (PerfTestRunner.measureValueAsync): Renamed from measureValueAync.

2012-11-29  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] Performance tests of distribution for changing select attribute
        https://bugs.webkit.org/show_bug.cgi?id=103611

        Reviewed by Hajime Morita.

        We would like to measure ShadowDOM performance and compare it to the similar functional HTML without using ShadowDOM.
        In this patch, we add a case when select attribute of HTMLContentElement is changed.

        * ShadowDOM/ChangingSelect.html: Added.
        * ShadowDOM/ChangingSelectWithoutShadow.html: Added.
        * Skipped:

2012-11-19  Shinya Kawanaka  <shinyak@chromium.org>

        Changing id, className, or attribute should invalidate distribution
        https://bugs.webkit.org/show_bug.cgi?id=100738

        Reviewed by Dimitri Glazkov.

        Added test code to modify id/class/attribute.

        * DOM/ModifyAttribute.html: Added.
        * DOM/resources/dom-perf/modify-attribute.js: Added.
        (ModifyAttribute.CreateElementToSetUp):
        (ModifyAttribute.ModifyId):
        (ModifyAttribute.ModifyClass):
        (ModifyAttribute.ModifyTitle):

2012-11-14  Ryosuke Niwa  <rniwa@webkit.org>

        runCount in runner.js should be renamed to iterationCount
        https://bugs.webkit.org/show_bug.cgi?id=102208

        Reviewed by Tony Chang.

        Prior to this patch, there were terminology confusions between "runs" and "iterations".
        The term "run" should refer to running a performance test once, and "iteration" should
        refer to one measurement in the test. i.e. Executing run-perf-should once will result in
        a single "run" of performance tests and each test may execute multiple "iterations"
        to complete the run.

        Unfortunately, we still overload the meaning of "runs" in "runs/s" (is "function calls/s")
        but that could be addressed in a separate patch.

        * Animation/balls.html:
        * DOM/DOMTable.html:
        * DOM/resources/dom-perf.js:
        * Layout/floats_100_100.html:
        * Layout/floats_100_100_nested.html:
        * Layout/floats_20_100.html:
        * Layout/floats_20_100_nested.html:
        * Layout/floats_2_100.html:
        * Layout/floats_2_100_nested.html:
        * Layout/floats_50_100.html:
        * Layout/floats_50_100_nested.html:
        * Layout/subtree-detaching.html:
        * Parser/html5-full-render.html:
        * SVG/SvgHitTesting.html:
        * resources/runner.js:

2012-11-13  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, rolling out r134367.
        http://trac.webkit.org/changeset/134367
        https://bugs.webkit.org/show_bug.cgi?id=100738

        Speculative rollout, could have cause Dromaeo setAttribute
        perf regression.

        * DOM/ModifyAttribute.html: Removed.
        * DOM/resources/dom-perf/modify-attribute.js: Removed.

2012-11-12  Shinya Kawanaka  <shinyak@chromium.org>

        Changing id, className, or attribute should invalidate distribution
        https://bugs.webkit.org/show_bug.cgi?id=100738

        Reviewed by Dimitri Glazkov.

        Added test code to modify id/class/attribute.

        * DOM/ModifyAttribute.html: Added.
        * DOM/resources/dom-perf/modify-attribute.js: Added.
        (ModifyAttribute.CreateElementToSetUp):
        (ModifyAttribute.ModifyId):
        (ModifyAttribute.ModifyClass):
        (ModifyAttribute.ModifyTitle):

2012-11-06  Adam Barth  <abarth@webkit.org>

        DOMImplementation should use ScriptWrappable
        https://bugs.webkit.org/show_bug.cgi?id=101279

        Reviewed by Eric Seidel.

        This simple PerformanceTest measure how quickly we can access
        document.implementation. The goal of this performance test is just to
        validate that using ScriptWrappable actually makes the bindings faster.

        * Bindings/document-implementation.html: Added.

2012-11-05  Geoffrey Garen  <ggaren@apple.com>

        WebKit should have performance tests for book chapter reflow
        https://bugs.webkit.org/show_bug.cgi?id=101271

        Reviewed by Dan Bernstein.

        I grabbed a book chapter from the Project Gutenberg front page:

        * Layout/chapter-reflow-once.html: Added.
        * Layout/chapter-reflow-thrice.html: Added.
        * Layout/chapter-reflow-twice.html: Added.
        * Layout/chapter-reflow.html: Added.

        I also created a torture-test random text generator:

        * Layout/chapter-reflow-once-random.html: Added.

2012-10-29  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #7 (last)
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #7 (last) commit of the whole patch.

        * PageLoad: Removed.
        * PageLoad/svg: Removed.
        * PageLoad/svg/LICENSES: Removed.
        * PageLoad/svg/files: Removed.
        * PageLoad/svg/files/33041-Samurai.svg: Removed.
        * PageLoad/svg/files/42450-under the see.svg: Removed.
        * PageLoad/svg/files/world-iso.svg: Removed.
        * PageLoad/svg/svg.pltsuite: Removed.
        * SVG/Samurai.html: Added.
        * SVG/UnderTheSee.html: Added.
        * SVG/WorldIso.html: Added.
        * SVG/resources/LICENSES: Copied from PerformanceTests/PageLoad/svg/LICENSES.
        * SVG/resources/Samurai.svg: Copied from PerformanceTests/PageLoad/svg/files/33041-Samurai.svg.
        * SVG/resources/UnderTheSee.svg: Copied from PerformanceTests/PageLoad/svg/files/42450-under%20the%20see.svg.
        * SVG/resources/WorldIso.svg: Copied from PerformanceTests/PageLoad/svg/files/world-iso.svg.
        * SVG/resources/svg.pltsuite: Copied from PerformanceTests/PageLoad/svg/svg.pltsuite.
        * Skipped: Rename the files on the skipped list also.

2012-10-26  Eric Seidel  <eric@webkit.org>

        Add a microbenchmark for Hindi (complex-text) line-layout
        https://bugs.webkit.org/show_bug.cgi?id=100024

        Reviewed by Ryosuke Niwa.

        I wrote this to make sure that we don't regress line-breaking performance
        for the complex-text codepath. This test has shown me that TOT is
        already 5% slower than Safari 6.0.1 here. :(

        * Layout/hindi-line-layout.html: Added.

2012-10-26  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #6
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #6 commit of the whole patch.

        * PageLoad/svg/files/gearflowers.svg: Removed.
        * PageLoad/svg/files/hereGear4.svg: Removed.
        * PageLoad/svg/files/worldcup.svg: Removed.
        * SVG/GearFlowers.html: Added.
        * SVG/HereGear.html: Added.
        * SVG/Worldcup.html: Added.
        * SVG/resources/GearFlowers.svg: Copied from PerformanceTests/PageLoad/svg/files/gearflowers.svg.
        * SVG/resources/HereGear.svg: Copied from PerformanceTests/PageLoad/svg/files/hereGear4.svg.
        * SVG/resources/Worldcup.svg: Copied from PerformanceTests/PageLoad/svg/files/worldcup.svg.
        * Skipped: Rename the files on the skipped list also.

2012-10-26  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #5
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #5 commit of the whole patch.

        * PageLoad/svg/files/Harvey_Rayner.svg: Removed.
        * PageLoad/svg/files/Sierpinski_carpet_6.svg: Removed.
        * PageLoad/svg/files/mtsthelens.svg: Removed.
        * PageLoad/svg/files/mtsthelens0.jpg: Removed.
        * SVG/HarveyRayner.html: Added.
        * SVG/MtSaintHelens.html: Added.
        * SVG/SierpinskiCarpet.html: Added.
        * SVG/resources/HarveyRayner.svg: Copied from PerformanceTests/PageLoad/svg/files/Harvey_Rayner.svg.
        * SVG/resources/MtSaintHelens.svg: Copied from PerformanceTests/PageLoad/svg/files/mtsthelens.svg.
        * SVG/resources/SierpinskiCarpet.svg: Copied from PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg.
        * SVG/resources/mtsthelens0.jpg: Copied from PerformanceTests/PageLoad/svg/files/mtsthelens0.jpg.
        * Skipped: Rename the files on the skipped list also.

2012-10-25  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #4
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #4 commit of the whole patch.

        * PageLoad/svg/files/france.svg: Removed.
        * PageLoad/svg/files/francobollo_gnome_ezechi_02.svg: Removed.
        * SVG/France.html: Added.
        * SVG/FrancoBolloGnomeEzechi.html: Added.
        * SVG/resources/France.svg: Copied from PerformanceTests/PageLoad/svg/files/france.svg.
        * SVG/resources/FrancoBolloGnomeEzechi.svg: Copied from PerformanceTests/PageLoad/svg/files/francobollo_gnome_ezechi_02.svg.
        * Skipped: Rename the files on the skipped list also.

2012-10-25  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #3
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #3 commit of the whole patch.

        * PageLoad/svg/files/42470-flower_from_my_garden_v2.svg: Removed.
        * PageLoad/svg/files/44057-drops on a blade.svg: Removed.
        * PageLoad/svg/files/deb9frac1.svg: Removed.
        * PageLoad/svg/files/food_leif_lodahl_01.svg: Removed.
        * SVG/Debian.html: Added.
        * SVG/DropsOnABlade.html: Added.
        * SVG/FlowerFromMyGarden.html: Added.
        * SVG/FoodLeifLodahl.html: Added.
        * SVG/resources/Debian.svg: Copied from PerformanceTests/PageLoad/svg/files/deb9frac1.svg.
        * SVG/resources/DropsOnABlade.svg: Copied from PerformanceTests/PageLoad/svg/files/44057-drops%20on%20a%20blade.svg.
        * SVG/resources/FlowerFromMyGarden.svg: Copied from PerformanceTests/PageLoad/svg/files/42470-flower_from_my_garden_v2.svg.
        * SVG/resources/FoodLeifLodahl.svg: Copied from PerformanceTests/PageLoad/svg/files/food_leif_lodahl_01.svg.

2012-10-24  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #2
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #2 commit of the whole patch.

        * PageLoad/svg/files/cacuts_01.svg: Removed.
        * PageLoad/svg/files/cowboy.svg: Removed.
        * PageLoad/svg/files/crawfish2_ganson.svg: Removed.
        * SVG/Cactus.html: Added.
        * SVG/Cowboy.html: Added.
        * SVG/CrawFishGanson.html: Added.
        * SVG/resources/Cactus.svg: Copied from PerformanceTests/PageLoad/svg/files/cacuts_01.svg.
        * SVG/resources/Cowboy.svg: Copied from PerformanceTests/PageLoad/svg/files/cowboy.svg.
        * SVG/resources/CrawFishGanson.svg: Copied from PerformanceTests/PageLoad/svg/files/crawfish2_ganson.svg.
        * Skipped: Remove az-lizard_benji_park_01.svg from the skipped list.

2012-10-24  Zoltan Horvath  <zoltan@webkit.org>

        Turn PageLoad tests into simple performancetests, commit #1
        https://bugs.webkit.org/show_bug.cgi?id=99899

        Reviewed by Ryosuke Niwa.

        We cannot provide an elegant way to measure the memory consumption of the PageLoad tests, but we can turn them into simple
        performance tests and measure their memory footprint and performance that way. This change moves and renames the related files
        to their new location and adds html/js wrappers for them.

        This is the #1 commit of the whole patch.

        * PageLoad/svg/files/az-lizard_benji_park_01.svg: Removed.
        * PageLoad/svg/files/bamboo_01.svg: Removed.
        * SVG/AzLizardBenjiPark.html: Added.
        * SVG/Bamboo.html: Added.
        * SVG/resources: Added.
        * SVG/resources/AzLizardBenjiPark.svg: Copied from PerformanceTests/PageLoad/svg/files/az-lizard_benji_park_01.svg.
        * SVG/resources/Bamboo.svg: Copied from PerformanceTests/PageLoad/svg/files/bamboo_01.svg.

2012-10-24  Zoltan Horvath  <zoltan@webkit.org>

        REGRESSION(r131982): Skip SVG/SvgNestedUse.html performancetest since it is crashing
        https://bugs.webkit.org/show_bug.cgi?id=100262

        Unreviewed.

        Skip until proper fix.

        * Skipped: Add SVG/SvgNestedUse.html

2012-10-23  Zoltan Horvath  <zoltan@webkit.org>

        Store the loaded file locally in measurePageLoadTime
        https://bugs.webkit.org/show_bug.cgi?id=100172

        Reviewed by Csaba Osztrogonác.

        Store the loaded file as a local variable instead of attaching it to the test object.
        Handle chunkSize inside test.run.

        * resources/runner.js:
        (.):

2012-10-23  Zoltan Horvath  <zoltan@webkit.org>

        Add measurePageLoadTime function to PerfTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=100029

        Reviewed by Ryosuke Niwa.

        Adopt chunk based loading logic from html5-full-render.html into measurePageLoadTime function,
        this is needed to measure the performance and the memory consumption of the PageLoadTests as
        we do it for all other performancetests.

        * Parser/html5-full-render.html: Move the behavior to runner.js.
        * resources/runner.js:
        (.): Add measurePageLoadTime function.

2012-10-22  Adam Barth  <abarth@webkit.org>

        [V8] Vastly simplify V8GCController's NodeVisitor
        https://bugs.webkit.org/show_bug.cgi?id=99884

        Reviewed by Kentaro Hara.

        Adds some performance tests for the garbage collector.

        * Bindings/gc-forest.html: Added.
        * Bindings/gc-mini-tree.html: Added.
        * Bindings/gc-tree.html: Added.

2012-10-17  Ryosuke Niwa  <rniwa@webkit.org>

        Bump up the number of iterations of html5-full-render to 5
        https://bugs.webkit.org/show_bug.cgi?id=99657

        Reviewed by Andreas Kling.

        Now that html5-full-render.html runs in less than 15 seconds after r131553,
        we can afford to get 5 instead of 2 samples.

        * Parser/html5-full-render.html:

2012-10-17  Ryosuke Niwa  <rniwa@webkit.org>

        Rename PerfTestRunner.runPerSecond to PerfTestRunner.measureRunsPerSecond for consistency
        https://bugs.webkit.org/show_bug.cgi?id=99642

        Reviewed by Dirk Pranke.

        Renamed the method.

        * Bindings/append-child.html:
        * Bindings/create-element.html:
        * Bindings/event-target-wrapper.html:
        * Bindings/first-child.html:
        * Bindings/get-attribute.html:
        * Bindings/get-element-by-id.html:
        * Bindings/get-elements-by-tag-name.html:
        * Bindings/id-getter.html:
        * Bindings/id-setter.html:
        * Bindings/insert-before.html:
        * Bindings/node-list-access.html:
        * Bindings/scroll-top.html:
        * Bindings/set-attribute.html:
        * Bindings/typed-array-construct-from-array.html:
        * Bindings/typed-array-construct-from-same-type.html:
        * Bindings/typed-array-construct-from-typed.html:
        * Bindings/typed-array-set-from-typed.html:
        * Bindings/undefined-first-child.html:
        * Bindings/undefined-get-element-by-id.html:
        * Bindings/undefined-id-getter.html:
        * CSS/CSSPropertySetterGetter.html:
        * CSS/CSSPropertyUpdateValue.html:
        * CSS/PseudoClassSelectors.html:
        * DOM/textarea-dom.html:
        * DOM/textarea-edit.html:
        * Interactive/resources/window-resize.js:
        * Layout/flexbox-column-nowrap.html:
        * Layout/flexbox-column-wrap.html:
        * Layout/flexbox-row-nowrap.html:
        * Layout/flexbox-row-wrap.html:
        * Layout/line-layout.html:
        * Parser/css-parser-yui.html:
        * Parser/innerHTML-setter.html:
        * Parser/query-selector-deep.html:
        * Parser/query-selector-first.html:
        * Parser/query-selector-last.html:
        * Parser/simple-url.html:
        * Parser/textarea-parsing.html:
        * Parser/tiny-innerHTML.html:
        * Parser/url-parser.html:
        * Parser/xml-parser.html:
        * SVG/SvgNestedUse.html:
        * resources/runner.js:

2012-10-17  Ryosuke Niwa  <rniwa@webkit.org>

        Performance test should support asynchronous tests
        https://bugs.webkit.org/show_bug.cgi?id=95668

        Reviewed by Dirk Pranke.

        Added PerfTestRunner.prepareToMeasureValuesAsync and PerfTestRunner.measureValueAsync,
        and deployed it in Animation/balls.

        * Animation/balls.html:
        * resources/runner.js:

2012-10-16  Elliott Sprehn  <esprehn@chromium.org>

        html5-full-render.html test uses substring but meant substr
        https://bugs.webkit.org/show_bug.cgi?id=99495

        Reviewed by Adam Barth.

        This test intended to chunk up the HTML5 spec into chunks of 500k chars, but used
        substring(to,from) instead of substr(from,length) so it actually loaded 5x more
        content than was in the HTML5 spec.

        * Parser/html5-full-render.html:

2012-10-11  James Simonsen  <simonjam@chromium.org>

        unprefix window.performance.webkitNow()
        https://bugs.webkit.org/show_bug.cgi?id=88278

        Reviewed by Tony Gentilcore.

        * resources/runner.js: Bind to proper object to avoid invalid invocation errors.

2012-10-08  Ryosuke Niwa  <rniwa@webkit.org>

        Skip Layout/subtree-detaching.html temporarily as it's very noisy and
        takes 112s to run on Chromium Mac. This is tracked by the bug 98708.

        * Skipped:

2012-10-08  Ryosuke Niwa  <rniwa@webkit.org>

        Perf. test results page is broken when runs have different sets of tests
        https://bugs.webkit.org/show_bug.cgi?id=98691

        Reviewed by Daniel Bates.

        Add "missing" columns for tests that are missing some runs.

        Also fix regressions from the previous patch:
        - Make reference run switch work again
        - Load jquery plugins from the remote server when the jquery is loaded from the remote server.

        * resources/results-template.html:

2012-10-08  Ryosuke Niwa  <rniwa@webkit.org>

        Perf test pesults page takes forever to load on a machine with a slow Internet connection
        https://bugs.webkit.org/show_bug.cgi?id=98561

        Reviewed by Ojan Vafai.

        Try loading jquery both locally and remotely, and use the same method to load the remaining
        jquery plugins when either one succeeds.

        * resources/results-template.html:

2012-10-04  Hayato Ito  <hayato@chromium.org>

        [Refactoring] Introduce a traversal strategy in SelectorChecker
        https://bugs.webkit.org/show_bug.cgi?id=97298

        Reviewed by Antti Koivisto.

        Introduces querySelector() performance tests to check SelectorChecker performance.

        * CSS/PseudoClassSelectors.html: Added.

2012-10-03  Philip Rogers  <pdr@google.com>

        Force GC between PageLoad tests.
        https://bugs.webkit.org/show_bug.cgi?id=98203

        Reviewed by Ryosuke Niwa.

        Previously, our PageLoad PerfTests had multi-modal distributions,
        typically with a small cluster at 1-2x the median. This turned out
        to be caused by not garbage collecting between tests!

        This patch adds a new file, force-gc.html, and loads this file between
        PageLoad tests to force a GC. I manually verified that this cleans up
        our perf test outliers.

        * resources/force-gc.html: Added.

2012-10-03  Julien Chaffraix  <jchaffraix@webkit.org>

        Add a performance test for subtree detaching
        https://bugs.webkit.org/show_bug.cgi?id=98281

        Reviewed by Eric Seidel.

        The new test tries to stress detaching on a heavy subtree (2 levels deep but with 1,000 nodes per level).
        We set display: none on the root and measure the time it takes to update the tree. Note that we will also
        measure the time taken by recalcStyle and relayout but I don't think we can avoid that.

        * Layout/subtree-detaching.html: Added.

2012-10-02  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix after r130135. Dromaeo tests only report single memory value,
        and computeStatistics should report variance as 0 in such cases.

        * resources/runner.js:

2012-10-02  Philip Rogers  <pdr@google.com>

        Fix PerfTest standard deviation calculation.
        https://bugs.webkit.org/show_bug.cgi?id=98115

        Reviewed by Ryosuke Niwa.

        Previously our standard deviation calculation was incorrect. This patch
        updates perftest.py's algorithm to calculate the sample standard deviation
        (with Bessel's correction) using Knuth's online algorithm:
        http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm
        An existing test has been modified to prove our new results.

        This patch also updates runner.js to use Bessel's correction in
        its sample standard deviation calculation, which is more accurate
        for small sample sizes.

        Additionally, runner.js has been modified to not calculate
        the 'sum' statistic, which was not very useful.

        * resources/runner.js:
        (PerfTestRunner.computeStatistics):

2012-10-01  Ryosuke Niwa  <rniwa@webkit.org>

        PerfTestRunner: Move all functions into the closure and always use double quotation for string literals
        https://bugs.webkit.org/show_bug.cgi?id=98093

        Reviewed by Ojan Vafai.

        Move all methods of PerfTestRunner into the closure that defines it.
        Also always use double quotations for string literals for consistency.

        * resources/runner.js:

2012-10-01  Ryosuke Niwa  <rniwa@webkit.org>

        Encapsulate private properties in PerfTestRunner better
        https://bugs.webkit.org/show_bug.cgi?id=97833

        Reviewed by Ojan Vafai.

        This patch moves "private" methods and properties of PerfTestRunner into a closure so that they're
        inaccssible from outside. Also catch exceptions from test.run, test.done, and other runner code
        to ensure we call notifyDone() even if we broke tests. Otherwise DRT will timeout and we end up
        waiting for 10 minutes per each broken test on bots.

        * resources/runner.js:
        (PerfTestRunner.gc):
        (logInDocument): Extracted from PerfTestRunner.log.
        (PerfTestRunner.log): Moved.
        (logFatalError): Added.
        (start): Renamed from PerfTestRunner._start.
        (scheduleNextRun): Extracted from PerfTestRunner._runLoop. Also catch any exceptions that happen
        in the runner and ignoreWarmUpAndLog so that we don't end up timing out. We call logFatalError in
        such cases, which in turn ensures notifyDone() is called.
        (ignoreWarmUpAndLog): Renamed from PerfTestRunner._ignoreWarmUpAndLog.
        (finish): Extracted from PerfTestRunner._runLoop.
        (PerfTestRunner.measureTime): Moved. The initialization of runCount is moved into start().
        (measureTimeOnce): Renamed from PerfTestRunner._measureTimeOnce.
        (PerfTestRunner.runPerSecond): Moved. Ditto about runCount.
        (measureRunsPerSecondOnce): Renamed from PerfTestRunner._measureRunsPerSecondOnce.
        (callRunAndMeasureTime): Renamed from PerfTestRunner._perSecondRunnerIterator.

2012-10-01  Florin Malita  <fmalita@chromium.org>

        Add a performance test for nested <use> elements
        https://bugs.webkit.org/show_bug.cgi?id=98047

        Reviewed by Ryosuke Niwa.

        Currently at ~5 runs per second on my workstation, but should go up significantly (100+)
        after landing a fix for https://bugs.webkit.org/show_bug.cgi?id=97905.

        * SVG/SvgNestedUse.html: Added.

2012-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Add back test.runCount for runPerSecond as it's used by tests in fast/harness/perftests.

        * resources/runner.js:
        (PerfTestRunner.runPerSecond):

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix after r129824.

        * DOM/resources/dom-perf.js:
        (runBenchmarkSuite):

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        Remove unused features and reduce code duplications in PerfTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=97852

        Reviewed by Kentaro Hara.

        Made the following refactoring changes:
        - Remove PerfTestRunner.info since it's never used.
        - Moved the js heap/malloc related functions up to where they belong.
        - Moved the initialization of _callsPerIteration, _test, and -description into _start,
          and stopped initializing _runFunction and _doneFunction since both test times now
          use _test object.
        - Made _measureTimeOnce and _measureRunsPerSecondOnce return the measured value
          instead of calling ignoreWarmUpAndLog and _runLoop to share the code; they're now
          called in _measureRunsPerSecondOnce.

        * resources/runner.js:
        (PerfTestRunner.storeHeapResults): Moved.
        (PerfTestRunner.getUsedMallocHeap): Moved.
        (PerfTestRunner.getUsedJSHeap): Moved.
        (PerfTestRunner.getAndPrintMemoryStatistics): Moved.
        (PerfTestRunner._scheduleNextMeasurementOrNotifyDone): Renamed from _runLoop. Calls
        ignoreWarmUpAndLog and schedules the next call.
        (PerfTestRunner._measureTimeOnce): Renamed from _runner.
        (PerfTestRunner._start): Renamed from initAndStartLoop.
        (PerfTestRunner.measureTime):
        (PerfTestRunner.runPerSecond):
        (PerfTestRunner._measureRunsPerSecondOnce): Renamed from _measureRunsPerSecondOnce.
        (PerfTestRunner._perSecondRunnerIterator):

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        PerfTestRunner.run should take an object
        https://bugs.webkit.org/show_bug.cgi?id=97743

        Reviewed by Kentaro Hara.

        Rename PerfTestRunner.run to PerfTestRunner.measureTime and make it take an object instead of
        5 arguments. Also get rid of PerfTestRunner._loopsPerRun since it's no longer used (it's always 1).

        * CSS/StyleSheetInsert.html:
        * DOM/resources/dom-perf.js:
        * Layout/floats_100_100.html:
        * Layout/floats_100_100_nested.html:
        * Layout/floats_20_100.html:
        * Layout/floats_20_100_nested.html:
        * Layout/floats_2_100.html:
        * Layout/floats_2_100_nested.html:
        * Layout/floats_50_100.html:
        * Layout/floats_50_100_nested.html:
        * Parser/html-parser.html:
        * Parser/html5-full-render.html:
        * SVG/SvgCubics.html:
        * SVG/SvgHitTesting.html:
        * resources/runner.js:

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        PerformanceTests/CSS/StyleSheetInsert.html has a time-dependent non-Gaussian distribution
        https://bugs.webkit.org/show_bug.cgi?id=97741

        Reviewed by Antti Koivisto.

        Reset the content in the iframe in each run so that the runtime from each run follows a normal distribution.
        We can cleanup this code once my patch to replace the argument list of run by an object is landed.

        * CSS/StyleSheetInsert.html:

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        Unreviewed. Minor appearance tweaks after r129813.

        * resources/results-template.html:

2012-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        Results page should warn about time-dependent distributions
        https://bugs.webkit.org/show_bug.cgi?id=97818

        Reviewed by Ojan Vafai.

        Add a simple linear regression analysis on results page to detect time-dependent distributions.
        We add a warning sign (inline SVG) when the regression gave us a slope of at least 0.01 and a R^2 of at least 0.6.
        Also added time-series graphs per run under the bar graphs so that humans can manually inspect them.

        A nice follow up would be to add some normality test (e.g. Shapiro-Wilk) to detect bi-modal distributions
        but we probably need to restructure the code to run it asynchronously since normality tests are slow.

        * resources/results-template.html:

2012-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Use runPerSecond in PerformanceTests/Bindings/typed-array* and event-target-wrapper
        https://bugs.webkit.org/show_bug.cgi?id=97625

        Reviewed by Eric Seidel.

        Use PerfTestRunner.runPerSecond instead of PerfTestRunner.run. Also reduce the fixed number of
        elements and iterations in these tests by a factor of 10 since runPerSecond can dynamically
        adjust the number of function calls.

        * Bindings/event-target-wrapper.html:
        * Bindings/typed-array-construct-from-array.html:
        * Bindings/typed-array-construct-from-same-type.html:
        * Bindings/typed-array-construct-from-typed.html:
        * Bindings/typed-array-set-from-typed.html:

2012-09-25  Antti Koivisto  <antti@apple.com>

        Optimize stylesheet insertions
        https://bugs.webkit.org/show_bug.cgi?id=97627

        Reviewed by Andreas Kling.

        Add synthetic performance test for avoiding style recalcs on stylesheet inserts.

        * CSS/StyleSheetInsert.html: Added.

2012-09-25  Ryosuke Niwa  <rniwa@webkit.org>

        Skip Dromaeo/jslib-modify-jquery.html per bug 95376.
        It runs out of memory on Chromium port, and it takes unreasonably long time (~5 minutes)
        to run on other ports.

        * Skipped:

2012-09-20  Ryosuke Niwa  <rniwa@webkit.org>

        Results page should show indivisual value
        https://bugs.webkit.org/show_bug.cgi?id=97178

        Reviewed by Tony Chang.

        Show indivisual values instead of statistics (min, max, stdev).

        * resources/results-template.html:

2012-09-20  Ryosuke Niwa  <rniwa@webkit.org>

        run-perf-tests should record individual value instead of statistics
        https://bugs.webkit.org/show_bug.cgi?id=97155

        Reviewed by Hajime Morita.

        Report the list of values as "values" so that run-perf-tests can parse them.

        * resources/runner.js:
        (PerfTestRunner.computeStatistics):
        (PerfTestRunner.printStatistics):

2012-09-20  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129091.
        http://trac.webkit.org/changeset/129091
        https://bugs.webkit.org/show_bug.cgi?id=97205

        It broke perf tests everywhere (Requested by Ossy on #webkit).

        * resources/runner.js:
        (PerfTestRunner.computeStatistics):
        (PerfTestRunner.printStatistics):

2012-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        run-perf-tests should record indivisual value instead of statistics
        https://bugs.webkit.org/show_bug.cgi?id=97155

        Reviewed by Hajime Morita.

        Report the list of values as "values" so that run-perf-tests can parse them.

        * resources/runner.js:
        (PerfTestRunner.computeStatistics):
        (PerfTestRunner.printStatistics):

2012-09-17  Ryosuke Niwa  <rniwa@webkit.org>

        Perf test results is incomprehensive
        https://bugs.webkit.org/show_bug.cgi?id=94668

        Reviewed by Eric Seidel.

        Overhauled the results page to have a tabular view. Clicking on each row shows a flot graph we used to have.
        For each run and test, we show the mean value with the standard deviation along with the percent difference
        against the reference run chosen by the user if the difference is statistically significant; it also indicates
        whether the new value is progression or not.

        The unit of each test is adjusted automatically using SI prefixes (Kilo, Mega, Milli), and rows can be sorted
        by each column. Time and memory results are separated into two tabs.

        * resources/jquery.tablesorter.min.js: Added.
        * resources/results-template.html:

2012-09-14  Ryosuke Niwa  <rniwa@webkit.org>

        Use performance.webkitNow in PerfTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=92826

        Reviewed by Eric Seidel.

        Use performance.webkitNow with Date.now as a fallback for more accurate time measurements.

        * resources/runner.js:
        (PerfTestRunner._runner):
        (PerfTestRunner._perSecondRunnerIterator):

2012-09-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r128562.
        http://trac.webkit.org/changeset/128562
        https://bugs.webkit.org/show_bug.cgi?id=96747

        It broke perf tests on Qt and Chromium (Requested by Ossy on
        #webkit).

        * resources/runner.js:
        (PerfTestRunner._runner):
        (PerfTestRunner._perSecondRunnerIterator):

2012-09-14  Ryosuke Niwa  <rniwa@webkit.org>

        Use performance.webkitNow in PerfTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=92826

        Reviewed by Eric Seidel.

        Use performance.webkitNow with Date.now as a fallback for more acurate time measurements.

        * resources/runner.js:
        (PerfTestRunner._runner):
        (PerfTestRunner._perSecondRunnerIterator):

2012-08-23  Ilya Tikhonovsky  <loislo@chromium.org>

        WebInspector: unreviewed single line test fix.

        The test has to open profiles panel explicitly because it is creating lazily.

        * inspector/heap-snapshot-performance-test.js:

2012-08-15  Scott Graham  <scottmg@chromium.org>

        Rename window.internals.fastMallocStatistics to mallocStatistics
        https://bugs.webkit.org/show_bug.cgi?id=94033

        Reviewed by Adam Barth.

        * resources/runner.js:
        (PerfTestRunner.storeHeapResults):
        (PerfTestRunner.getUsedMallocHeap):
        (PerfTestRunner.getAndPrintMemoryStatistics):
        (PerfTestRunner.initAndStartLoop):

2012-08-10  Ryosuke Niwa  <rniwa@webkit.org>

        Unreviewed; fix an insanely silly typo.

        * resources/results-template.html:

2012-08-09  Ryosuke Niwa  <rniwa@webkit.org>

        Another build fix after r125178.

        * resources/runner.js:

2012-08-09  Zoltan Horvath  <zoltan@webkit.org>

        Add memory measurement to balls.html and dromaeorunner.js
        https://bugs.webkit.org/show_bug.cgi?id=93617

        Reviewed by Adam Barth.

        Since we added memory measurement support to performance tests we need to modify these tests.

        * Animation/balls.html:
        * Dromaeo/resources/dromaeorunner.js:

2012-08-09  Zoltan Horvath  <zoltan@webkit.org>

        JSHeap and FastMallocStatistics based memory measurement for performance-tests
        https://bugs.webkit.org/show_bug.cgi?id=90858

        Reviewed Ryosuke Niwa.

        Measure the memory usage of the performancetests with the help of the windows.memory.usedJSHeapSize
        object and the window.internals.fastMallocStatistics() function call.

        * resources/runner.js:
        (PerfTestRunner.logStatistics):
        (PerfTestRunner.printStatistics):
        (PerfTestRunner.storeHeapResults):
        (PerfTestRunner.getUsedFastMallocHeap):
        (PerfTestRunner.getUsedJSHeap):
        (PerfTestRunner.getAndPrintMemoryStatistics):
        (PerfTestRunner.ignoreWarmUpAndLog):
        (PerfTestRunner.initAndStartLoop):

2012-08-08  Benjamin Poulain  <benjamin@webkit.org>

        Calling internals from the performance test runner prevents manual running
        https://bugs.webkit.org/show_bug.cgi?id=93527

        Reviewed by Ryosuke Niwa.

        Since r125065, it is impossible to run the Performance tests manually. The problem is
        "internals" is not defined when running outside the test runner, so the whole script
        evaluation fails.

        * resources/runner.js: Verify is window.internals is available before invoking something on it.

2012-08-08  Zoltan Horvath  <zoltan@webkit.org>

        Set access to MemoryInfo enabled for the performance tests
        https://bugs.webkit.org/show_bug.cgi?id=92498

        Reviewed by Ryosuke Niwa.

        We need access to console.memory for the memory measurements.

        * resources/runner.js:

2012-08-07  Ryosuke Niwa  <rniwa@webkit.org>

        run-perf-tests should support --no-show-results
        https://bugs.webkit.org/show_bug.cgi?id=93409

        Reviewed by Dirk Pranke.

        Add a flot as a separate file and load it as an external resource.

        Also include scripts as external resources from both local filesystem and webkit.org
        so that it continues to work regardless of where you put it.

        It breaks when someone else receives the file and save it somewhere and doesn't have
        a network connection but that seems like a scenario we don't care that much.

        * resources/jquery.flot.min.js: Added.
        * resources/results-template.html:

2012-08-06  Ryosuke Niwa  <rniwa@webkit.org>

        run-webkit-tests should have ability to add description to its JSON output
        https://bugs.webkit.org/show_bug.cgi?id=93296

        Reviewed by Dirk Pranke.

        Parse description and show it with the WebKit revision on the results page. Also use bar graphs
        instead of line graphs since we're not depicting the time series here per arv's suggestion.
        Finally, add the ability to adjust y-axis between the adjusted value and 0 (plot even doesn't adjust
        y-axis automatically now) by a mouse click.

        * resources/results-template.html:

2012-08-04  Ryosuke Niwa  <rniwa@webkit.org>

        Use testRunner instead of layoutTestController in performance tests
        https://bugs.webkit.org/show_bug.cgi?id=93184

        Reviewed by Adam Barth.

        * Animation/balls.html:
        * Dromaeo/resources/dromaeorunner.js:
        * inspector/console-300-lines.html:
        * inspector/inspector-startup-time.html:
        * inspector/network-append-30-requests.html.broken:
        * inspector/show-panel.html.broken:
        * resources/runner.js:
        (PerfTestRunner.logInfo):
        (PerfTestRunner.initAndStartLoop):

2012-08-02  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        TypedArray set method is slow when called with another typed array
        https://bugs.webkit.org/show_bug.cgi?id=92556

        Reviewed by Kenneth Russell.

        * Bindings/typed-array-set-from-typed.html: Added.

2012-07-28  Ryosuke Niwa  <rniwa@webkit.org>

        run-perf-tests should generate a results page
        https://bugs.webkit.org/show_bug.cgi?id=92575

        Reviewed by Eric Seidel.

        Add a results page template. This page includes flot and flot.fillbetween.
        jQuery and the json that contains test results are injected by run-perf-tests.

        * resources/results-template.html: Added.

2012-07-27  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        use createUninitialized when creating TypedArray from another array
        https://bugs.webkit.org/show_bug.cgi?id=92518

        Reviewed by Kenneth Russell.

        * Bindings/typed-array-construct-from-array.html: Added.

2012-07-27  Ryosuke Niwa  <rniwa@webkit.org>

        Add more Russian replay performance tests
        https://bugs.webkit.org/show_bug.cgi?id=92462

        Reviewed by Tony Chang.

        Add more Russian sites as suggested by loislo.

        * Replay/Russian/lenta.ru.replay: Added.
        * Replay/Russian/www.ixbt.com.replay: Added.
        * Replay/Russian/www.kp.ru.replay: Added.
        * Replay/Russian/www.liveinternet.ru.replay: Added.
        * Replay/Russian/www.pravda.ru.replay: Added.

2012-07-26  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        constructing TypedArray from another TypedArray is slow
        https://bugs.webkit.org/show_bug.cgi?id=90838

        Reviewed by Kenneth Russell.

        * Bindings/typed-array-construct-from-same-type.html: Added.
        * Bindings/typed-array-construct-from-typed.html: Added.

2012-07-25  Ryosuke Niwa  <rniwa@webkit.org>

        Import more replay performance tests from Mozilla's Tp5 test suite
        https://bugs.webkit.org/show_bug.cgi?id=92229

        Reviewed by Andreas Kling.

        Add more replay tests based on Mozilla's Tp5 test suite [1]. Unfortunately,
        we cannot import all URLs because some of them are not archived on archive.org
        and others do not replay well on web-page-replay. Nonethless, we're still adding
        60+ URLs in this patch.

        [1] http://people.mozilla.org/~jmaher/tp5.manifest

        * Replay/Chinese: Added.
        * Replay/Chinese/chinaz.com.replay: Added.
        * Replay/Chinese/www.163.com.replay: Added.
        * Replay/Chinese/www.alipay.com.replay: Added.
        * Replay/Chinese/www.baidu.com.replay: Added.
        * Replay/Chinese/www.csdn.net.replay: Added.
        * Replay/Chinese/www.douban.com.replay: Added.
        * Replay/Chinese/www.hao123.com.replay: Added.
        * Replay/Chinese/www.xinhuanet.com.replay: Added.
        * Replay/Chinese/www.xunlei.com.replay: Added.
        * Replay/Chinese/www.youku.com.replay: Added.
        * Replay/English: Added.
        * Replay/English/beatonna.livejournal.com.replay: Added.
        * Replay/English/cakewrecks.blogspot.com.replay: Added.
        * Replay/English/chemistry.about.com.replay: Added.
        * Replay/English/digg.com.replay: Added.
        * Replay/English/en.wikipedia.org-rorschach_test.replay: Added.
        * Replay/English/icanhascheezburger.com.replay: Added.
        * Replay/English/imgur.com-gallery.replay: Added.
        * Replay/English/online.wsj.com.replay: Added.
        * Replay/English/stockoverflow.com-best-comment.replay: Added.
        * Replay/English/www.alibaba.com.replay: Added.
        * Replay/English/www.amazon.com-kindle.replay: Added.
        * Replay/English/www.apple.com.replay: Added.
        * Replay/English/www.cnet.com.replay: Added.
        * Replay/English/www.dailymotion.com.replay: Added.
        * Replay/English/www.ehow.com-prevent-fire.replay: Added.
        * Replay/English/www.filestube.com-amy-adams.replay: Added.
        * Replay/English/www.foxnews.replay: Added.
        * Replay/English/www.huffingtonpost.com.replay: Added.
        * Replay/English/www.imdb.com-twilight.replay: Added.
        * Replay/English/www.mozilla.com-all-order.replay: Added.
        * Replay/English/www.php.net.replay: Added.
        * Replay/English/www.reddit.com.replay: Added.
        * Replay/English/www.telegraph.co.uk.replay: Added.
        * Replay/English/www.w3.org-htmlcss.replay: Added.
        * Replay/English/www.w3schools.com-html.replay: Added.
        * Replay/English/www.youtube.com-music.replay: Added.
        * Replay/French: Added.
        * Replay/French/www.orange.fr.replay: Added.
        * Replay/German: Added.
        * Replay/Italian: Added.
        * Replay/Italian/www.repubblica.it.replay: Added.
        * Replay/Japanese/entameblog.seesaa.net.replay: Added.
        * Replay/Japanese/www.hatena.ne.jp.replay: Added.
        * Replay/Japanese/www.nicovideo.jp.replay: Added.
        * Replay/Korean: Added.
        * Replay/Korean/www.naver.com.replay: Added.
        * Replay/Persian: Added.
        * Replay/Persian/blogfa.com.replay: Added.
        * Replay/Polish: Added.
        * Replay/Polish/www.wp.pl.replay: Added.
        * Replay/Portuguese: Added.
        * Replay/Portuguese/www.uol.com.br.replay: Added.
        * Replay/Russian: Added.
        * Replay/Russian/vkontakte.ru-help.replay: Added.
        * Replay/Russian/www.rambler.ru.replay: Added.
        * Replay/Russian/www.ucoz.ru.replay: Added.
        * Replay/Russian/www.yandex.ru.replay: Added.
        * Replay/Spanish: Added.
        * Replay/Spanish/www.taringa.net.replay: Added.

2012-07-24  Ryosuke Niwa  <rniwa@webkit.org>

        Add some Japanese and Swedish websites to replay tests
        https://bugs.webkit.org/show_bug.cgi?id=92076

        Reviewed by Andreas Kling.

        Added new replay tests as follows.

        * Replay/Japanese: Added.
        * Replay/Japanese/2ch.net-newsplus.replay: Added.
        * Replay/Japanese/ja.wikipedia.org.replay: Added.
        * Replay/Japanese/www.livedoor.com.replay: Added.
        * Replay/Japanese/www.rakuten.co.jp.replay: Added.
        * Replay/Japanese/www.yahoo.co.jp.replay: Added.
        * Replay/Swedish: Added.
        * Replay/Swedish/www.flashback.se.replay: Added.
        * Replay/Swedish/www.tradera.com.replay: Added.
        * Replay/www.techcrunch.com.replay: Added.

2012-07-18  MORITA Hajime  <morrita@google.com>

        Add window resize benchmark
        https://bugs.webkit.org/show_bug.cgi?id=91070

        Reviewed by Ryosuke Niwa.

        Added window-resize.html which exercise html5.html. This test
        resizes the window and forces re-layout repeatedly.

        * Interactive/resources/window-resize.js: Added.
        * Interactive/window-resize.html: Added.
        * Parser/resources/html5.html: Modified to inject driver scripts.

2012-07-11  Philip Rogers  <pdr@google.com>

        Add a performance test for hit testing in SVG
        https://bugs.webkit.org/show_bug.cgi?id=90811

        Reviewed by Ryosuke Niwa.

        The shape rendering code is changing a lot and I'd like a performance test to
        make sure we don't regress, and to track our improvements.

        Performance results in my Linux desktop:
            RESULT SVG: SvgHitTesting= 105.0 ms
            median= 103.5 ms, stdev= 4.60434577329 ms, min= 101.0 ms, max= 116.0 ms

            RESULT SVG: SvgHitTesting= 97.8 ms
            median= 96.5 ms, stdev= 2.67581763205 ms, min= 95.0 ms, max= 102.0 ms

            RESULT SVG: SvgHitTesting= 104.3 ms
            median= 104.0 ms, stdev= 1.41774468788 ms, min= 102.0 ms, max= 107.0 ms

            RESULT SVG: SvgHitTesting= 103.6 ms
            median= 103.5 ms, stdev= 1.2 ms, min= 102.0 ms, max= 106.0 ms

        * SVG/SvgHitTesting.html: Added.

2012-07-03  Jan Keromnes  <janx@linux.com>

        Web Inspector: WebInspector.TextViewer should be renamed WebInspector.TextEditor
        https://bugs.webkit.org/show_bug.cgi?id=89939

        Reviewed by Vsevolod Vlasov.

        * inspector/first-open-scripts.html.broken:

2012-06-22  Philip Rogers  <pdr@google.com>

        Make SvgCubics performance test more consistent
        https://bugs.webkit.org/show_bug.cgi?id=89778

        Reviewed by Ryosuke Niwa.

        Previously this test ran twice for each iteration, but this led to inconsistent repaints.
        This change updates the test to only run once per iteration, and adds even more cubics
        so that the test runs consistently in the 80ms range on my Linux desktop.

        Performance results on my desktop:
            RESULT SVG: SvgCubics= 80.5 ms
            median= 82.0 ms, stdev= 3.04138126515 ms, min= 75.0 ms, max= 85.0 ms

            RESULT SVG: SvgCubics= 80.1 ms
            median= 81.0 ms, stdev= 4.27668095607 ms, min= 74.0 ms, max= 88.0 ms

            RESULT SVG: SvgCubics= 81.45 ms
            median= 83.0 ms, stdev= 4.01839520207 ms, min= 75.0 ms, max= 89.0 ms

            RESULT SVG: SvgCubics= 78.9 ms
            median= 80.0 ms, stdev= 4.75289385533 ms, min= 72.0 ms, max= 87.0 ms

        * SVG/SvgCubics.html:

2012-06-22  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: partially instrument DOM Tree native memory.
        https://bugs.webkit.org/show_bug.cgi?id=89568

        This patch adds MemoryInstrumentation class that counts all visited
        objects and calls reportMemoryUsage.

        Reviewed by Yury Semikhatsky.

        * inspector/native-memory-snapshot.html:

2012-06-21  Kentaro Hara  <haraken@chromium.org>

        Add a perf-test for innerHTML setter for a large DOM tree
        https://bugs.webkit.org/show_bug.cgi?id=89723

        Reviewed by Ryosuke Niwa.

        We want a benchmark for innerHTML setter for the following reason:

        - innerHTML setter is widely used in the real world.
        - I am planning to optimize innerHTML setter in the near future.
        - I want to use the innerHTML setter benchmark for the patch of bug 88834.

        Performance results in my Linux desktop:

        RESULT Parser: innerHTML-setter= 289.782649995 runs/s
        median= 290.046269741 runs/s, stdev= 1.06575112224 runs/s, min= 286.831812256 runs/s, max= 291.005291005 runs/s

        RESULT Parser: innerHTML-setter= 289.020706132 runs/s
        median= 289.093298292 runs/s, stdev= 0.985203313093 runs/s, min= 286.831812256 runs/s, max= 290.620871863 runs/s

        RESULT Parser: innerHTML-setter= 288.912051701 runs/s
        median= 291.005291005 runs/s, stdev= 3.65241325588 runs/s, min= 283.505154639 runs/s, max= 292.553191489 runs/s

        RESULT Parser: innerHTML-setter= 288.644186666 runs/s
        median= 288.713910761 runs/s, stdev= 1.31889053717 runs/s, min= 286.085825748 runs/s, max= 290.620871863 runs/s

        RESULT Parser: innerHTML-setter= 288.698714577 runs/s
        median= 288.713910761 runs/s, stdev= 1.03938198202 runs/s, min= 286.458333333 runs/s, max= 290.237467018 runs/s

        * Parser/innerHTML-setter.html: Added.

2012-06-20  Philip Rogers  <pdr@google.com>

        Add a performance test for paths in SVG
        https://bugs.webkit.org/show_bug.cgi?id=89547

        Reviewed by Ryosuke Niwa.

        This change adds the first performance test for SVG paths.
        In the test we modify complex cubic paths in several ways, testing:
        transformations, clipping, d attribute changes, stroke properties,
        text on a path, and opacity.

        Sample test results on my Linux desktop:
            RESULT SVG: SvgCubics= 68.85 ms
            median= 69.5 ms, stdev= 4.70398767005 ms, min= 56.0 ms, max= 75.0 ms

            RESULT SVG: SvgCubics= 68.4 ms
            median= 69.0 ms, stdev= 3.51283361405 ms, min= 59.0 ms, max= 74.0 ms

            RESULT SVG: SvgCubics= 66.95 ms
            median= 67.0 ms, stdev= 3.4420197559 ms, min= 59.0 ms, max= 74.0 ms

            RESULT SVG: SvgCubics= 70.2 ms
            median= 71.5 ms, stdev= 3.23419232576 ms, min= 63.0 ms, max= 74.0 ms

        * SVG: Added.
        * SVG/SvgCubics.html: Added.

2012-06-20  Tom Zakrajsek  <tomz@codeaurora.org>

        Import themaninblue.com/experiment/AnimationBenchmark/ as performance tests
        https://bugs.webkit.org/show_bug.cgi?id=78789

        Reviewed by Ryosuke Niwa.

        Added PerfTestRunner fixture around it.

        * Animation/balls.html: Added.

2012-06-18  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: native memory snapshot performance and coverage test implementation.
        https://bugs.webkit.org/show_bug.cgi?id=89363

        We have to track the performance of MemoryAgent.getProcessMemoryDistribution.
        Also this test will work as a burn down chart for Unknown memory metric.

        Reviewed by Pavel Feldman.

        * inspector/native-memory-snapshot.html: Added.
        * inspector/performance-test.js:
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.reportSize):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest):

2012-06-05  Alexei Filippov  <alexeif@chromium.org>

        Web Inspector: serialize edge counts instead of indexes in heap snapshot
        https://bugs.webkit.org/show_bug.cgi?id=88324

        The serialized node structure currently holds an index
        of its first containment edge in the edges array.
        The index can be quite big (up to 7 digits for large snapshots).
        The patch changes the serialization format to pass
        node containment edge count instead. For most nodes the count
        is just a single digit number.
        This reduces serialized snapshot size and therefore its transfer time.

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot-performance-test.js:

2012-06-04  Alexei Filippov  <alexeif@chromium.org>

        Web Inspector: speed up _calculateRetainedSizes function
        https://bugs.webkit.org/show_bug.cgi?id=87863

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot-advanced.html: Added.
        * inspector/heap-snapshot-performance-test.js: Copied from PerformanceTests/inspector/heap-snapshot.html.
        (test.performanceTest.step0):
        (test.performanceTest.step1):
        (test.performanceTest.step2):
        (test.performanceTest.cleanup):
        (test.performanceTest.done):
        (test.performanceTest):
        (test):
        * inspector/heap-snapshot.html:

2012-06-03  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a benchmark of querySelector() for an element that appears in the depths in the document
        https://bugs.webkit.org/show_bug.cgi?id=88202

        Reviewed by Ryosuke Niwa.

        query-selector-first.html tests querySelector() for an element
        that appears at the head of the document. query-selector-last.html
        tests querySelector() for an element that appears at the tail of
        the document. In addition, we want a benchmark of querySelector()
        for an element that appears in the depths in the document.

        Test results in my Linux desktop:

        RESULT Parser: query-selector-deep= 460.776980611 runs/s
        median= 460.947503201 runs/s, stdev= 1.72274941942 runs/s, min= 455.696202532 runs/s, max= 463.32046332 runs/s

        RESULT Parser: query-selector-deep= 458.925050915 runs/s
        median= 459.183673469 runs/s, stdev= 1.47930124139 runs/s, min= 454.545454545 runs/s, max= 460.947503201 runs/s

        RESULT Parser: query-selector-deep= 461.866981491 runs/s
        median= 461.538461538 runs/s, stdev= 1.14613123359 runs/s, min= 459.183673469 runs/s, max= 463.917525773 runs/s

        RESULT Parser: query-selector-deep= 453.922010788 runs/s
        median= 454.258855898 runs/s, stdev= 1.77279123317 runs/s, min= 447.204968944 runs/s, max= 455.696202532 runs/s

        RESULT Parser: query-selector-deep= 454.666321221 runs/s
        median= 454.545454545 runs/s, stdev= 1.65775667417 runs/s, min= 451.127819549 runs/s, max= 456.852791878 runs/s

        * Parser/query-selector-deep.html: Added.

2012-06-03  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Make query-selector-last.html more realistic
        https://bugs.webkit.org/show_bug.cgi?id=88203

        Reviewed by Ryosuke Niwa.

        query-selector-last.html tests querySelector() for an element
        that appears after 1000 div elements, all of which have the same
        id and class. To test the performance of querySelector() under
        a lot of ids and classes, we should make the ids and classes of
        the 1000 elements different.

        This patch degrades the performance of query-selector-last.html
        by 3.6%.

        [Before]
        RESULT Parser: query-selector-last= 476.382274152 runs/s
        median= 476.821192053 runs/s, stdev= 1.14578875814 runs/s, min= 474.308300395 runs/s, max= 478.087649402 runs/s

        RESULT Parser: query-selector-last= 478.423061861 runs/s
        median= 478.723404255 runs/s, stdev= 1.54876867255 runs/s, min= 473.684210526 runs/s, max= 481.347773767 runs/s

        RESULT Parser: query-selector-last= 479.849287174 runs/s
        median= 480.0 runs/s, stdev= 1.69849752498 runs/s, min= 475.561426684 runs/s, max= 481.927710843 runs/s

        RESULT Parser: query-selector-last= 476.765438846 runs/s
        median= 477.453580902 runs/s, stdev= 1.8724488664 runs/s, min= 471.821756225 runs/s, max= 478.723404255 runs/s

        RESULT Parser: query-selector-last= 481.715340644 runs/s
        median= 481.637742305 runs/s, stdev= 1.81446361145 runs/s, min= 475.561426684 runs/s, max= 483.675937122 runs/s

        [After]
        RESULT Parser: query-selector-last= 458.866623582 runs/s
        median= 459.183673469 runs/s, stdev= 1.48881464737 runs/s, min= 453.972257251 runs/s, max= 460.947503201 runs/s

        RESULT Parser: query-selector-last= 460.363532897 runs/s
        median= 460.358056266 runs/s, stdev= 1.58512056995 runs/s, min= 456.273764259 runs/s, max= 462.130937099 runs/s

        RESULT Parser: query-selector-last= 457.727448451 runs/s
        median= 458.015267176 runs/s, stdev= 1.23681915516 runs/s, min= 453.972257251 runs/s, max= 459.183673469 runs/s

        RESULT Parser: query-selector-last= 465.57336853 runs/s
        median= 465.717981889 runs/s, stdev= 1.6616925374 runs/s, min= 460.947503201 runs/s, max= 467.532467532 runs/s

        RESULT Parser: query-selector-last= 459.836252019 runs/s
        median= 459.770114943 runs/s, stdev= 1.84485630505 runs/s, min= 455.696202532 runs/s, max= 462.724935733 runs/s

        * Parser/query-selector-last.html:

2012-06-01  Ryosuke Niwa  <rniwa@webkit.org>

        Add public page loading performance tests using web-page-replay
        https://bugs.webkit.org/show_bug.cgi?id=84008

        Reviewed by Dirk Pranke.

        Add replay tests for google.com and youtube.com as examples.

        * Replay: Added.
        * Replay/www.google.com.replay: Added.
        * Replay/www.youtube.com.replay: Added.

2012-05-30  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a benchmark for querySelector()
        https://bugs.webkit.org/show_bug.cgi?id=87742

        Reviewed by Ryosuke Niwa.

        Now I am optimizing querySelector() (bug 87625).
        This patch adds a performance test for querySelector().
        query-selector-first.html queries an element that appears
        at the head of the document. On the other hand,
        query-selector-last.html queries an element that appears
        at the tail of the document.

        Test results in my desktop:

        [query-selector-first.html]
        RESULT Parser: query-selector-first= 252.339803014 runs/s
        median= 253.646265594 runs/s, stdev= 2.32610873209 runs/s, min= 248.138957816 runs/s, max= 254.777070064 runs/s

        RESULT Parser: query-selector-first= 252.688468897 runs/s
        median= 252.684876579 runs/s, stdev= 3.60008778708 runs/s, min= 246.002460025 runs/s, max= 258.397932817 runs/s

        RESULT Parser: query-selector-first= 253.466019656 runs/s
        median= 254.129606099 runs/s, stdev= 1.78002675664 runs/s, min= 247.831474597 runs/s, max= 254.777070064 runs/s

        RESULT Parser: query-selector-first= 256.245078189 runs/s
        median= 257.06940874 runs/s, stdev= 2.84722072201 runs/s, min= 249.687890137 runs/s, max= 259.74025974 runs/s

        RESULT Parser: query-selector-first= 252.203100497 runs/s
        median= 252.047989175 runs/s, stdev= 1.75233446036 runs/s, min= 248.138957816 runs/s, max= 255.427841635 runs/s

        [query-selector-last.html]
        RESULT Parser: query-selector-last= 356.009616076 runs/s
        median= 355.781448539 runs/s, stdev= 0.841519086864 runs/s, min= 354.430379747 runs/s, max= 358.056265985 runs/s

        RESULT Parser: query-selector-last= 360.735271001 runs/s
        median= 361.057532424 runs/s, stdev= 1.12253219867 runs/s, min= 358.514724712 runs/s, max= 362.225097025 runs/s

        RESULT Parser: query-selector-last= 359.598592463 runs/s
        median= 359.435173299 runs/s, stdev= 0.816538258728 runs/s, min= 358.056265985 runs/s, max= 360.824742268 runs/s

        RESULT Parser: query-selector-last= 357.260651715 runs/s
        median= 357.598978289 runs/s, stdev= 1.17393159885 runs/s, min= 353.982300885 runs/s, max= 358.974358974 runs/s

        RESULT Parser: query-selector-last= 351.696240713 runs/s
        median= 351.980025916 runs/s, stdev= 1.14200564038 runs/s, min= 348.692403487 runs/s, max= 353.535353535 runs/s

        * Parser/query-selector-first.html: Added.
        * Parser/query-selector-last.html: Added.

2012-05-25  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: HeapSnapshot: introduce performance counter for HeapSnapshotConstructorsDataGrid._aggregatesReceived method.
        https://bugs.webkit.org/show_bug.cgi?id=87393

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot.html:

2012-05-25  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: HeapProfiler's perf test: each N-th run pushes the run results N-th times.
        https://bugs.webkit.org/show_bug.cgi?id=87476

        The time tracking wrappers were attaching on each run.

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot.html:

2012-05-22  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: HeapProfiler: upstream retainedSize calculation.
        https://bugs.webkit.org/show_bug.cgi?id=87107

        This patch upstreams V8::HeapSnapshotGenerator::CalculateRetainedSizes function to front-end.
        After that we will be able to drop retainedSize field from the snapshot serialized data.
        See meta-bug https://bugs.webkit.org/show_bug.cgi?id=87089

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot.html: add counter for the _calculateRetainedSize method.

2012-05-21  Kent Tamura  <tkent@chromium.org>

        Add performance tests for <textarea>
        https://bugs.webkit.org/show_bug.cgi?id=86994

        Reviewed by Ryosuke Niwa.

        * DOM/textarea-dom.html: Added.
        * DOM/textarea-edit.html: Added.
        * Parser/textarea-parsing.html: Added.

2012-05-18  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: upstream build dominators tree procedure from v8.
        https://bugs.webkit.org/show_bug.cgi?id=86640

        The idea is to reduce transfer size and move all the post-processing steps to the front-end.
        The JS implementation is ~1.5 times slower.

        Reviewed by Yury Semikhatsky.

        Covered by existing tests and performance tests.

        * inspector/heap-snapshot.html:

2012-05-18  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Remove Bindings/dom-attributes.html
        https://bugs.webkit.org/show_bug.cgi?id=86820

        Reviewed by Ryosuke Niwa.

        Bindings/dom-attributes.html is just a collection of random
        DOM attributes and methods. Now we've added more reasonable
        micro benchmarks by classifying DOM binding call paths, we
        can remove Bindings/dom-attributes.html.

        * Bindings/dom-attributes.html: Removed.

2012-05-18  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a binding benchmark for getElementById() for an undefined id
        https://bugs.webkit.org/show_bug.cgi?id=86812

        Reviewed by Ryosuke Niwa.

        We should remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        This patch adds a benchmark for document.getElementById() for an undefined id.
        This benchmark covers 'getElementById (not in document)' in Dromaeo/dom-query.html,
        and other Node-query methods that return a null.'

        (Note: This benchmark is slower than document.getElementById() for a defined id.
        We will fix the performance issue soon.)

        Test results in my Linux desktop:

        RESULT Bindings: undefined-get-element-by-id= 271.945751345 runs/s
        median= 273.122389532 runs/s, stdev= 6.78219237299 runs/s, min= 257.4002574 runs/s, max= 281.690140845 runs/s

        RESULT Bindings: undefined-get-element-by-id= 269.105872408 runs/s
        median= 268.948655257 runs/s, stdev= 5.73707323755 runs/s, min= 257.4002574 runs/s, max= 278.128950695 runs/s

        RESULT Bindings: undefined-get-element-by-id= 269.987513372 runs/s
        median= 272.952853598 runs/s, stdev= 5.30252336078 runs/s, min= 255.754475703 runs/s, max= 273.97260274 runs/s

        RESULT Bindings: undefined-get-element-by-id= 270.169625901 runs/s
        median= 271.604938272 runs/s, stdev= 5.29502391906 runs/s, min= 258.064516129 runs/s, max= 278.481012658 runs/s

        RESULT Bindings: undefined-get-element-by-id= 269.054631422 runs/s
        median= 267.966292802 runs/s, stdev= 6.27197240579 runs/s, min= 258.064516129 runs/s, max= 278.481012658 runs/s

        * Bindings/undefined-get-element-by-id.html: Added.

2012-05-18  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a binding benchmark for getElementsByTagName()
        https://bugs.webkit.org/show_bug.cgi?id=86810

        Reviewed by Ryosuke Niwa.

        We should remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        This patch adds a benchmark for document.getElementsByTagName().
        This benchmark covers 'getElementsByTagName (not in document)',
        'getElementsByTagName', 'getElementsByName (not in document)'
        and 'getElementsByName' in Dromaeo/dom-query.html, and other DOM
        methods that return a NodeList.

        Test results in my Linux desktop:

        RESULT Bindings: get-elements-by-tag-name= 364.542328875 runs/s
        median= 366.972477064 runs/s, stdev= 5.25387955333 runs/s, min= 351.317440402 runs/s, max= 368.421052632 runs/s

        RESULT Bindings: get-elements-by-tag-name= 364.341569369 runs/s
        median= 366.492146597 runs/s, stdev= 4.867374197 runs/s, min= 352.644836272 runs/s, max= 367.936925099 runs/s

        RESULT Bindings: get-elements-by-tag-name= 363.924242967 runs/s
        median= 366.013071895 runs/s, stdev= 5.16768212289 runs/s, min= 351.317440402 runs/s, max= 367.936925099 runs/s

        RESULT Bindings: get-elements-by-tag-name= 365.332594438 runs/s
        median= 367.454068241 runs/s, stdev= 6.17046918572 runs/s, min= 350.0 runs/s, max= 370.37037037 runs/s

        RESULT Bindings: get-elements-by-tag-name= 363.999514324 runs/s
        median= 366.492146597 runs/s, stdev= 5.31235674905 runs/s, min= 350.877192982 runs/s, max= 368.421052632 runs/s

        * Bindings/get-elements-by-tag-name.html: Added.

2012-05-18  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add 7 micro benchmarks for DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=86816

        Reviewed by Ryosuke Niwa.

        We should remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.
        This patch adds seven micro benchmarks for DOM bindings.

        id-getter.html covers 'element.property' in Dromaeo/dom-attr.html,
        'innerHTML' in Dromaeo/dom-modify.html, and other DOM attributes that
        return a String.

        id-setter.html covers 'element.property = value' in Dromaeo/dom-attr.html,
        and other DOM attributes that sets a String.

        undefined-id-getter.html covers undefined DOM attributes that return an empty String.

        append-child.html covers 'appendChild' and 'removeChild' in Dromaeo/dom-modify.html.

        insert-before.html covers 'insertBefore' in Dromaeo/dom-modify.html and replaceChild().

        create-element.html covers 'createElement', 'createTextNode' and 'cloneNode'
        in Dromaeo/dom-modify.html, and other DOM methods that return a new Node object.

        node-list-access.html covers 'childNodes' in Dromaeo/dom-traverse.html,
        and other DOM attributes that access NodeList.

        Test results in my Linux desktop:

        [id-getter]
        RESULT Bindings: id-getter= 550.517821097 runs/s
        median= 550.688360451 runs/s, stdev= 0.970723739106 runs/s, min= 548.628428928 runs/s, max= 552.070263488 runs/s

        RESULT Bindings: id-getter= 550.655839847 runs/s
        median= 550.688360451 runs/s, stdev= 1.03312821884 runs/s, min= 549.313358302 runs/s, max= 552.070263488 runs/s

        RESULT Bindings: id-getter= 550.277753355 runs/s
        median= 550.344180225 runs/s, stdev= 1.19960683464 runs/s, min= 547.945205479 runs/s, max= 552.070263488 runs/s

        RESULT Bindings: id-getter= 550.072271009 runs/s
        median= 550.344180225 runs/s, stdev= 1.38925152131 runs/s, min= 547.263681592 runs/s, max= 552.070263488 runs/s

        RESULT Bindings: id-getter= 548.802050235 runs/s
        median= 548.628428928 runs/s, stdev= 1.18244513683 runs/s, min= 545.905707196 runs/s, max= 550.688360451 runs/s

        [id-setter]
        RESULT Bindings: id-setter= 211.370591663 runs/s
        median= 210.803689065 runs/s, stdev= 1.4555795889 runs/s, min= 209.973753281 runs/s, max= 214.285714286 runs/s

        RESULT Bindings: id-setter= 215.439081352 runs/s
        median= 214.797136038 runs/s, stdev= 1.50920388121 runs/s, min= 213.049267643 runs/s, max= 218.446601942 runs/s

        RESULT Bindings: id-setter= 216.721698466 runs/s
        median= 215.956886352 runs/s, stdev= 1.54090749644 runs/s, min= 214.285714286 runs/s, max= 219.78021978 runs/s

        RESULT Bindings: id-setter= 216.343019087 runs/s
        median= 215.827338129 runs/s, stdev= 1.46619894553 runs/s, min= 215.053763441 runs/s, max= 218.97810219 runs/s

        RESULT Bindings: id-setter= 216.799288017 runs/s
        median= 215.956886352 runs/s, stdev= 1.49100776978 runs/s, min= 215.311004785 runs/s, max= 219.78021978 runs/s

        [undefined-id-getter]
        RESULT Bindings: undefined-id-getter= 494.104255241 runs/s
        median= 494.132368875 runs/s, stdev= 1.13092821109 runs/s, min= 490.797546012 runs/s, max= 495.662949195 runs/s

        RESULT Bindings: undefined-id-getter= 493.921802916 runs/s
        median= 493.827160494 runs/s, stdev= 1.25097443119 runs/s, min= 490.196078431 runs/s, max= 495.662949195 runs/s

        RESULT Bindings: undefined-id-getter= 491.976485667 runs/s
        median= 492.004920049 runs/s, stdev= 0.947090576896 runs/s, min= 490.196078431 runs/s, max= 493.827160494 runs/s

        RESULT Bindings: undefined-id-getter= 491.987710185 runs/s
        median= 494.132368875 runs/s, stdev= 8.66602543327 runs/s, min= 454.545454545 runs/s, max= 495.662949195 runs/s

        RESULT Bindings: undefined-id-getter= 494.195515847 runs/s
        median= 494.437577256 runs/s, stdev= 1.06135681702 runs/s, min= 490.797546012 runs/s, max= 495.662949195 runs/s

        [append-child]
        RESULT Bindings: append-child= 260.628237026 runs/s
        median= 260.926399352 runs/s, stdev= 2.55231060598 runs/s, min= 256.739409499 runs/s, max= 265.604249668 runs/s

        RESULT Bindings: append-child= 280.796193436 runs/s
        median= 280.791435348 runs/s, stdev= 2.53961321867 runs/s, min= 277.427490542 runs/s, max= 286.085825748 runs/s

        RESULT Bindings: append-child= 279.856209714 runs/s
        median= 280.25477707 runs/s, stdev= 2.85447647301 runs/s, min= 275.344180225 runs/s, max= 284.237726098 runs/s

        RESULT Bindings: append-child= 280.834502714 runs/s
        median= 280.25477707 runs/s, stdev= 2.67738046429 runs/s, min= 277.427490542 runs/s, max= 287.206266319 runs/s

        RESULT Bindings: append-child= 274.723872106 runs/s
        median= 273.291925466 runs/s, stdev= 3.03671746706 runs/s, min= 272.614622057 runs/s, max= 282.413350449 runs/s

        [insert-before]
        RESULT Bindings: insert-before= 180.986913006 runs/s
        median= 180.878552972 runs/s, stdev= 0.758038687299 runs/s, min= 180.18018018 runs/s, max= 183.968462549 runs/s

        RESULT Bindings: insert-before= 186.339916144 runs/s
        median= 186.170212766 runs/s, stdev= 0.869022097127 runs/s, min= 185.676392573 runs/s, max= 189.798339265 runs/s

        RESULT Bindings: insert-before= 189.45344838 runs/s
        median= 189.349112426 runs/s, stdev= 0.811854866567 runs/s, min= 187.79342723 runs/s, max= 192.539109507 runs/s

        RESULT Bindings: insert-before= 189.363295991 runs/s
        median= 189.349112426 runs/s, stdev= 0.75387713097 runs/s, min= 188.014101058 runs/s, max= 192.076830732 runs/s

        RESULT Bindings: insert-before= 189.252041642 runs/s
        median= 189.349112426 runs/s, stdev= 0.840447225363 runs/s, min= 187.573270809 runs/s, max= 192.076830732 runs/s

        [create-element]
        RESULT Bindings: create-element= 280.675830077 runs/s
        median= 280.701824914 runs/s, stdev= 0.788606343054 runs/s, min= 279.441117764 runs/s, max= 282.542885974 runs/s

        RESULT Bindings: create-element= 276.427631436 runs/s
        median= 277.227722772 runs/s, stdev= 3.39874667549 runs/s, min= 262.417994377 runs/s, max= 279.162512463 runs/s

        RESULT Bindings: create-element= 277.156894411 runs/s
        median= 277.227722772 runs/s, stdev= 1.13255119226 runs/s, min= 274.914089347 runs/s, max= 278.884462151 runs/s

        RESULT Bindings: create-element= 278.066825356 runs/s
        median= 278.191822254 runs/s, stdev= 0.686497782792 runs/s, min= 276.953511375 runs/s, max= 279.162512463 runs/s

        RESULT Bindings: create-element= 276.431538109 runs/s
        median= 276.406712734 runs/s, stdev= 0.759593662298 runs/s, min= 275.229357798 runs/s, max= 278.053624628 runs/s

        [node-list-access]
        RESULT Bindings: node-list-access= 222.747504073 runs/s
        median= 222.772277228 runs/s, stdev= 0.789027527555 runs/s, min= 221.674876847 runs/s, max= 224.159402242 runs/s

        RESULT Bindings: node-list-access= 220.722448287 runs/s
        median= 221.266217576 runs/s, stdev= 1.65463497875 runs/s, min= 217.391304348 runs/s, max= 222.222222222 runs/s

        RESULT Bindings: node-list-access= 222.195870443 runs/s
        median= 222.222222222 runs/s, stdev= 0.489709262091 runs/s, min= 221.13022113 runs/s, max= 223.048327138 runs/s

        RESULT Bindings: node-list-access= 221.431121677 runs/s
        median= 221.538545435 runs/s, stdev= 0.608292116087 runs/s, min= 220.048899756 runs/s, max= 222.772277228 runs/s

        RESULT Bindings: node-list-access= 219.001367135 runs/s
        median= 221.538545435 runs/s, stdev= 4.65773933007 runs/s, min= 209.973753281 runs/s, max= 222.496909765 runs/s

        * Bindings/append-child.html: Added.
        * Bindings/create-element.html: Added.
        * Bindings/id-getter.html: Added.
        * Bindings/id-setter.html: Added.
        * Bindings/insert-before.html: Added.
        * Bindings/node-list-access.html: Added.
        * Bindings/undefined-id-getter.html: Added.

2012-05-18  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a binding benchmark for div.setAttribute()
        https://bugs.webkit.org/show_bug.cgi?id=86815

        Reviewed by Ryosuke Niwa.

        We should remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        This patch adds a benchmark for div.setAttribute(). This benchmark
        covers 'setAttribute' in Dromaeo/dom-attr.html and other DOM methods
        that return an undefined.

        Test results in my Linux desktop:

        RESULT Bindings: set-attribute= 793.745073252 runs/s
        median= 791.589665765 runs/s, stdev= 6.00467159709 runs/s, min= 785.27607362 runs/s, max= 808.080808081 runs/s

        RESULT Bindings: set-attribute= 790.858444164 runs/s
        median= 787.918921436 runs/s, stdev= 7.86264953655 runs/s, min= 780.234070221 runs/s, max= 806.04534005 runs/s

        RESULT Bindings: set-attribute= 787.277571417 runs/s
        median= 784.31372549 runs/s, stdev= 7.45363346657 runs/s, min= 778.588807786 runs/s, max= 804.020100503 runs/s

        RESULT Bindings: set-attribute= 782.401393791 runs/s
        median= 779.062978802 runs/s, stdev= 6.48250081621 runs/s, min= 777.642770352 runs/s, max= 796.019900498 runs/s

        RESULT Bindings: set-attribute= 791.792516608 runs/s
        median= 791.556728232 runs/s, stdev= 6.49182980397 runs/s, min= 779.220779221 runs/s, max= 808.080808081 runs/s

        * Bindings/set-attribute.html: Added.

2012-05-17  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a binding benchmark for div.getAttribute()
        https://bugs.webkit.org/show_bug.cgi?id=86814

        Reviewed by Ryosuke Niwa.

        We should remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        This patch adds a benchmark for div.getAttribute(). This benchmark
        covers 'getAttribute' in Dromaeo/dom-attr.html, and other DOM methods
        that return a String.

        Test results in my Linux desktop:

        RESULT Bindings: get-attribute= 250.088158538 runs/s
        median= 250.469728765 runs/s, stdev= 4.66551901315 runs/s, min= 240.673886883 runs/s, max= 256.739409499 runs/s

        RESULT Bindings: get-attribute= 250.209764698 runs/s
        median= 250.626959986 runs/s, stdev= 4.12030002477 runs/s, min= 241.254523522 runs/s, max= 255.102040816 runs/s

        RESULT Bindings: get-attribute= 248.907532887 runs/s
        median= 250.312891114 runs/s, stdev= 3.23173125874 runs/s, min= 240.673886883 runs/s, max= 251.572327044 runs/s

        RESULT Bindings: get-attribute= 250.243680844 runs/s
        median= 250.783797637 runs/s, stdev= 4.19327170024 runs/s, min= 240.963855422 runs/s, max= 255.102040816 runs/s

        RESULT Bindings: get-attribute= 245.329046608 runs/s
        median= 244.948040416 runs/s, stdev= 2.24314248534 runs/s, min= 240.384615385 runs/s, max= 248.756218905 runs/s

        * Bindings/get-attribute.html: Added.

2012-05-17  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a binding benchmark for getElementById()
        https://bugs.webkit.org/show_bug.cgi?id=86808

        Reviewed by Ryosuke Niwa.

        Currently Bindings/dom-attributes.html is just a collection
        of random DOM attributes and methods. We should remove it and
        instead add more reasonable micro benchmarks by classifying
        DOM binding call paths.

        This patch adds a benchmark for document.getElementById(),
        which covers other DOM methods that return a Node Object.

        The reason why we want to add a benchmark for document.getElementById()
        in spite of the fact that Dromaeo/dom-query.html is already testing
        document.getElementById(), is that Dromaeo/dom-query.html outputs one
        result for several benchmarks (i.e. getElementById().nodeType,
        getElementsByTagName()[0].nodeType etc), and thus we cannot observe
        regression of getElementById() itself. (Catching regression of
        getElementById() would be critical.)

        Test results in my Linux desktop:

        RESULT Bindings: get-element-by-id= 300.933707795 runs/s
        median= 302.267002519 runs/s, stdev= 3.04954648504 runs/s, min= 295.930949445 runs/s, max= 305.34351145 runs/s

        RESULT Bindings: get-element-by-id= 302.030324483 runs/s
        median= 302.267481977 runs/s, stdev= 1.78518068367 runs/s, min= 298.507462687 runs/s, max= 304.568527919 runs/s

        RESULT Bindings: get-element-by-id= 301.993483538 runs/s
        median= 302.648171501 runs/s, stdev= 1.87604126626 runs/s, min= 296.662546354 runs/s, max= 304.568527919 runs/s

        RESULT Bindings: get-element-by-id= 301.936607982 runs/s
        median= 302.45758701 runs/s, stdev= 1.88991087072 runs/s, min= 298.879202989 runs/s, max= 304.955527319 runs/s

        RESULT Bindings: get-element-by-id= 301.952234563 runs/s
        median= 302.648171501 runs/s, stdev= 1.59929752614 runs/s, min= 299.625468165 runs/s, max= 304.568527919 runs/s

        * Bindings/get-element-by-id.html: Added.

2012-05-17  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a benchmark for body.scrollTop
        https://bugs.webkit.org/show_bug.cgi?id=86806

        Reviewed by Ryosuke Niwa.

        Currently Bindings/dom-attributes.html is just a collection of random
        DOM attributes and methods. We should remove it and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        This patch adds a benchmark for body.scrollTop, which covers other
        DOM attributes that return small integers.

        (Note: Performance optimization for the benchmark will be coming soon.)

        Test results in my Linux desktop:

        RESULT Bindings: scroll-top= 209.410654239 runs/s
        median= 211.64021164 runs/s, stdev= 4.09958741195 runs/s, min= 201.005025126 runs/s, max= 212.483399734 runs/s

        RESULT Bindings: scroll-top= 195.651111157 runs/s
        median= 196.319018405 runs/s, stdev= 1.77011627406 runs/s, min= 191.846522782 runs/s, max= 197.28729963 runs/s
        RESULT Bindings: scroll-top= 200.004907612 runs/s
        median= 201.511335013 runs/s, stdev= 3.27455403827 runs/s, min= 193.236714976 runs/s, max= 202.53164557 runs/s

        RESULT Bindings: scroll-top= 209.582737512 runs/s
        median= 210.803689065 runs/s, stdev= 3.16769655464 runs/s, min= 203.045685279 runs/s, max= 211.920529801 runs/s

        RESULT Bindings: scroll-top= 199.924607687 runs/s
        median= 201.13144338 runs/s, stdev= 3.11080503619 runs/s, min= 193.003618818 runs/s, max= 202.02020202 runs/s

        * Bindings/scroll-top.html: Added.

2012-05-17  Kentaro Hara  <haraken@chromium.org>

        [perf-test] Add a micro benchmark for div.firstChild getter for an undefined firstChild
        https://bugs.webkit.org/show_bug.cgi?id=86725

        Reviewed by Ryosuke Niwa.

        We are going to remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        In this bug, we add a micro benchmark for div.firstChild getter for an
        undefined firstChild. This benchmark covers other undefined DOM attributes
        that return a null.

        (Note: In V8, div.firstChild for an undefined firstChild is currently slower
        than div.firstChild for a defined firstChild.)

        Test results in my Linux desktop:

        RESULT Bindings: undefined-first-child= 541.408311042 runs/s
        median= 541.205412054 runs/s, stdev= 1.29841219187 runs/s, min= 537.897310513 runs/s, max= 543.209876543 runs/s

        RESULT Bindings: undefined-first-child= 541.00750695 runs/s
        median= 540.540540541 runs/s, stdev= 0.967521230965 runs/s, min= 539.215686275 runs/s, max= 543.209876543 runs/s

        RESULT Bindings: undefined-first-child= 523.630714897 runs/s
        median= 523.560209424 runs/s, stdev= 1.01570919645 runs/s, min= 522.193211488 runs/s, max= 525.624178712 runs/s

        RESULT Bindings: undefined-first-child= 553.077663588 runs/s
        median= 553.459119497 runs/s, stdev= 0.805697397863 runs/s, min= 551.378446115 runs/s, max= 554.156171285 runs/s

        RESULT Bindings: undefined-first-child= 541.5401432 runs/s
        median= 541.538666618 runs/s, stdev= 0.954301364767 runs/s, min= 539.877300613 runs/s, max= 543.209876543 runs/s

        * Bindings/undefined-first-child.html: Added.

2012-05-17  Kentaro Hara  <haraken@chromium.org>

        [Performance test] Add a micro benchmark for div.firstChild getter
        https://bugs.webkit.org/show_bug.cgi?id=86582

        Reviewed by Ryosuke Niwa.

        We are going to remove Bindings/dom-attributes.html and instead add more
        reasonable micro benchmarks by classifying DOM binding call paths.

        In this bug, we add a micro benchmark for div.firstChild getter.
        This benchmark covers 'firstChild', 'lastChild', 'nextSibling' and
        'previousSibling' in Dromaeo/dom-traverse.html, and other DOM attributes
        that return a Node object.

        Multiple test results in my Linux desktop:

        RESULT Bindings: first-child= 798.157160346 runs/s
        median= 798.004987531 runs/s, stdev= 1.52006063407 runs/s, min= 796.019900498 runs/s, max= 801.001251564 runs/s
        RESULT Bindings: first-child= 797.603608554 runs/s
        median= 797.872340426 runs/s, stdev= 2.2522621261 runs/s, min= 791.556728232 runs/s, max= 801.001251564 runs/s
        RESULT Bindings: first-child= 798.656295468 runs/s
        median= 798.004987531 runs/s, stdev= 1.79367478063 runs/s, min= 797.01120797 runs/s, max= 803.011292346 runs/s
        RESULT Bindings: first-child= 797.812784267 runs/s
        median= 798.004987531 runs/s, stdev= 2.31766523191 runs/s, min= 791.100123609 runs/s, max= 802.005012531 runs/s
        RESULT Bindings: first-child= 797.963311597 runs/s
        median= 798.004987531 runs/s, stdev= 2.53014907337 runs/s, min= 789.14919852 runs/s, max= 801.001251564 runs/s

        * Bindings/first-child.html: Added.

2012-05-16  Kentaro Hara  <haraken@chromium.org>

        [Performance test] Support "description" for PerfTestRunner.run and PerfTestRunner.runPerSecond
        https://bugs.webkit.org/show_bug.cgi?id=86696

        Reviewed by Ryosuke Niwa.

        We want to add some description for each PerfTestRunner.run and
        PerfTestRunner.runPerSecond, so that people can know what each
        run is testing.

        Output example:

        $ ./Tools/Scripts/run-perf-tests Bindings/first-child.html
        Running Bindings/first-child.html (1 of 1)
        DESCRIPTION: Benchmark for DOM attributes that return a Node object.
        RESULT Bindings: first-child= 788.359076534 runs/s
        median= 797.508097751 runs/s, stdev= 19.0972905207 runs/s, min= 746.666666667 runs/s, max= 801.001251564 runs/s

        * resources/runner.js:
        (PerfTestRunner.logStatistics):
        (PerfTestRunner.printStatistics):
        (PerfTestRunner.runPerSecond):

2012-05-16  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix heap profiler performance test after r117234.

        * inspector/heap-snapshot.html:

2012-05-14  Ryosuke Niwa  <rniwa@webkit.org>

        Convert CSS and Parser tests to runs/s tests
        https://bugs.webkit.org/show_bug.cgi?id=86399

        Reviewed by Ojan Vafai.

        Use runPerSecond instead of run to measure results in function calls per second (run/s) instead of time (ms).
        This allows us to continue measuring performance reliably even when WebKit's performance improves and results
        become too small for Date.now()'s precision (around 15 ms).

        It should also reduce perf. bots cycle time for slower tests because we limit the number of function calls by time.

        * CSS/CSSPropertySetterGetter.html:
        * CSS/CSSPropertyUpdateValue.html:
        * Parser/css-parser-yui.html:
        * Parser/simple-url.html:
        * Parser/tiny-innerHTML.html:
        * Parser/url-parser.html:
        * Parser/xml-parser.html:

2012-05-14  Dan Bernstein  <mitz@apple.com>

        Add a line layout performance test
        https://bugs.webkit.org/show_bug.cgi?id=86216

        Reviewed by Ryosuke Niwa.

        * Layout/line-layout.html: Added.

2012-05-14  Tony Chang  <tony@chromium.org>

        Don't append log lines while perf tests are running.
        https://bugs.webkit.org/show_bug.cgi?id=86028

        Reviewed by Ryosuke Niwa.

        In some tests, the extra DOM nodes can cause the test timing to change.
        Avoid adding DOM nodes until the test is over. When running in a browser,
        we append nodes as we run so the user can have some feedback.

        * resources/runner.js:
        (PerfTestRunner.log): Store the log lines in an array until the test is finished.

2012-05-14  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix. Don't adjust calls per iteration in the second run.

        * resources/runner.js:
        (PerfTestRunner._perSecondRunner):

2012-05-13  Ryosuke Niwa  <rniwa@webkit.org>

        performance tests should be able to measure runs/sec rather than time
        https://bugs.webkit.org/show_bug.cgi?id=86021

        Reviewed by Ojan Vafai.

        Add PerfTestRunner.runPerSecond. It uses _runLoop but replaces _runner by _perSecondRunner
        to compute runs/s of runFunction.

        When _perSecondRunner is called for the first time, i.e. _completedRuns is 0 (notice this is -1
        in regular run/_runner), it slowly increases the number of function calls to runFunction between
        time measurements in order to discount the time used by new Date() calls themselves until the
        total time spent reaches 100 milliseconds.

        By default, runPerSecond runs the test for at least 750 milliseconds in each run, and executes
        21 runs, yielding the total run time of roughly 18 seconds. This is significantly faster than
        most of existing performance tests. Also see http://ejohn.org/blog/accuracy-of-javascript-time/.

        Finally, refactored the existing methods of PerfTestRunner to allow "runs/s" unit and share code.

        * Layout/flexbox-column-nowrap.html:
        * Layout/flexbox-column-wrap.html:
        * Layout/flexbox-row-nowrap.html:
        * Layout/flexbox-row-wrap.html:
        * resources/runner.js:
        (PerfTestRunner.computeStatistics): Takes unit.
        (PerfTestRunner.logStatistics): Ditto.
        (PerfTestRunner._runLoop):
        (PerfTestRunner._runner):
        (PerfTestRunner.runPerSecond): Added.
        (PerfTestRunner._perSecondRunner): Added. Called by _runLoop.
        (PerfTestRunner._perSecondRunnerIterator): Added.

2012-05-09  Tony Chang  <tony@chromium.org>

        add some basic perf-o-matic tests for flexbox
        https://bugs.webkit.org/show_bug.cgi?id=86017

        Reviewed by Ryosuke Niwa.

        Each of these tests take < 3s on my machine.

        * Layout/flexbox-column-nowrap.html: Added.
        * Layout/flexbox-column-wrap.html: Added.
        * Layout/flexbox-row-nowrap.html: Added.
        * Layout/flexbox-row-wrap.html: Added.

2012-05-05  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: unreviewed followup fix for the performance test after r116218.

        * inspector/heap-snapshot.html:

2012-05-02  Tom Zakrajsek  <tomz@codeaurora.org>

        Need tests for PerfTestRunner.computeStatistics
        https://bugs.webkit.org/show_bug.cgi?id=85410

        Reviewed by Ryosuke Niwa.

        * resources/runner.js:

2012-05-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r115905.
        http://trac.webkit.org/changeset/115905
        https://bugs.webkit.org/show_bug.cgi?id=85435

        New computeStatistics test is failing on chromium ports
        (Requested by tomz on #webkit).

        * resources/runner.js:

2012-05-02  Tom Zakrajsek  <tomz@codeaurora.org>

        Need tests for PerfTestRunner.computeStatistics
        https://bugs.webkit.org/show_bug.cgi?id=85410

        Reviewed by Ryosuke Niwa.

        * resources/runner.js:

2012-04-29  Tom Zakrajsek  <tomz@codeaurora.org>

        PerfTestRunner.computeStatistics incorrectly calculates min, max and median
        https://bugs.webkit.org/show_bug.cgi?id=85111

        Reviewed by Ryosuke Niwa.

        The sort of the data input was being done alphabetically.
        So I provided a numeric compare function.

        * resources/runner.js:

2012-04-17  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: the fix for test after massive rename in r114271.
        https://bugs.webkit.org/show_bug.cgi?id=84147

        Drive by fix. The test was renamed to heap-snapshot.html

        Reviewed by Yury Semikhatsky.

        * inspector/heap-snapshot.html: Renamed from PerformanceTests/inspector/detailed-heapshots-smoke-test.html.

2012-04-16  Yury Semikhatsky  <yurys@chromium.org>

        Web Inspector: rename heap profiler files and classes DetailedHeapshot* ->HeapSnapshot*
        https://bugs.webkit.org/show_bug.cgi?id=84038

        A bunch of renames "detailed heapshot" -> "heap snapshot".

        Reviewed by Pavel Feldman.

        * inspector/detailed-heapshots-smoke-test.html:

2012-04-13  Ryosuke Niwa  <rniwa@webkit.org>

        Fix skipped list.

        * Skipped:

2012-04-12  Ryosuke Niwa  <rniwa@webkit.org>

        Enable SVG page loading performance tests
        https://bugs.webkit.org/show_bug.cgi?id=83861

        Reviewed by Adam Barth.

        Unskip PageLoad directory and skip tests that load too fast (less than 100ms) and are unstable,
        and the ones that take too long to load (more than 20s).

        * Skipped:

2012-04-04  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: Unreviewed. temporary disable broken inspector tests.

        * inspector/first-open-scripts.html.broken: Renamed from PerformanceTests/inspector/first-open-scripts.html.
        * inspector/network-append-30-requests.html.broken: Renamed from PerformanceTests/inspector/network-append-30-requests.html.
        * inspector/show-panel.html.broken: Renamed from PerformanceTests/inspector/show-panel.html.

2012-04-04  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: linearise aggregate's retaining size calculation.
        https://bugs.webkit.org/show_bug.cgi?id=83125

        This version is twice as fast as the original and it is non-recursive.

        Reviewed by Yury Semikhatsky.

        * inspector/detailed-heapshots-smoke-test.html:

2012-03-30  David Barr  <davidbarr@chromium.org>

        Split up top-level .gitignore and .gitattributes
        https://bugs.webkit.org/show_bug.cgi?id=82687

        Reviewed by Tor Arne Vestbø.

        * .gitattributes: Added.

2012-03-28  Yury Semikhatsky  <yurys@chromium.org>

        Web Inspector: switch heap profiler front-end to separate storage of nodes and edges
        https://bugs.webkit.org/show_bug.cgi?id=82453

        Updated heap profiler performance test after heap profiler front-end
        changes.

        Reviewed by Pavel Feldman.

        * inspector/detailed-heapshots-smoke-test.html:

2012-03-27  Alexis Menard  <alexis.menard@openbossa.org>

        Add a perf test which updates the value of an already declared CSS property.
        https://bugs.webkit.org/show_bug.cgi?id=82321

        Reviewed by Andreas Kling.

        This benchmark update CSS existing properties of the style from JS.

        * CSS/CSSPropertyUpdateValue.html: Added.

2012-03-15  Kentaro Hara  <haraken@chromium.org>

        [PerformanceTests] run-perf-tests should output correct units
        https://bugs.webkit.org/show_bug.cgi?id=78303

        Reviewed by Ryosuke Niwa.

        Previously run-perf-tests just supported "ms" for units.
        Consequently, Dromaeo perf tests had been reporting runs/s as "ms".
        This patch fixes run-perf-tests so that they can support custom units.
        The default unit is "ms".

        The test result looks like this:

        $ ./Tools/Scripts/run-perf-tests Dromaeo/dom-attr.html
        RESULT Dromaeo: dom-attr= 6465.9525483 runs/s
        median= 0.0 runs/s, stdev= 24.2983433436 runs/s, min= 6435.87649402 runs/s, max= 6515.63693392 runs/s

        * Dromaeo/resources/dromaeorunner.js:
        (.):
        * resources/runner.js:
        (PerfTestRunner.computeStatistics):
        (PerfTestRunner.printStatistics):

2012-03-15  Alexis Menard  <alexis.menard@openbossa.org>

        Fix the test failing with run-perf-tests.

        Rubber stamped by Ryosuke Niwa.

        * CSS/CSSPropertySetterGetter.html:

2012-03-14  Alexis Menard  <alexis.menard@openbossa.org>

        Add a new perf test to benchmark setting and reading CSS properties from JS.
        https://bugs.webkit.org/show_bug.cgi?id=81155

        Reviewed by Ryosuke Niwa.

        This benchmark read and set CSS properties from JS. It contains a list
        of common CSS properties.

        * CSS/CSSPropertySetterGetter.html: Added.

2012-03-14  Alexandru Chiculita  <achicu@adobe.com>

        Layout/floats.html should be runnable by run-perf-tests
        https://bugs.webkit.org/show_bug.cgi?id=77051

        Reviewed by Ryosuke Niwa.

        I've split Layout/floats.html into multiple tests for each button in the original manual test.
        Some tests take longer to run and I've changed the number of iterations, so that each tests finishes under 30s per run.

        * DOM/resources/dom-perf.js:
        * Layout/floats.html: Removed.
        * Layout/floats_100_100.html: Added.
        * Layout/floats_100_100_nested.html: Added.
        * Layout/floats_20_100.html: Added.
        * Layout/floats_20_100_nested.html: Added.
        * Layout/floats_2_100.html: Added.
        * Layout/floats_2_100_nested.html: Added.
        * Layout/floats_50_100.html: Added.
        * Layout/floats_50_100_nested.html: Added.
        * Layout/resources/floats.css: Added.
        (.container):
        (.float):
        (.big):
        (.float-end):
        * Layout/resources/floats.js: Added.
        (.):
        * Skipped:
        * resources/runner.js:
        (PerfTestRunner.resetRandomSeed):
        (PerfTestRunner.random):
        (Math.random):
            Moved the Math.random to runner.js to be used by all tests.
            Added resetRandomSeed to bring the randomizer back to initial seed.
            It is useful to get the same results at every run and minimize the
            differences between runs.

2012-03-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r110559.
        http://trac.webkit.org/changeset/110559
        https://bugs.webkit.org/show_bug.cgi?id=81142

        Broke Dromaeo tests (Requested by rniwa on #webkit).

        * Dromaeo/resources/dromaeorunner.js:
        (.):

2012-03-13  Kentaro Hara  <haraken@chromium.org>

        Dromaeo perf-tests results are wrong
        https://bugs.webkit.org/show_bug.cgi?id=80974

        Reviewed by Hajime Morita.

        Dromaeo perf-tests had reported the sum of runs/seconds as "ms".
        This patch fixes them to report the execution time per run.

        At present, they report "0.0ms" for "stdev". This is because
        dromaeorunner.js can just know stdev of "runs/seconds"
        and cannot calculate stdev of "ms" from that. We can fix it later.

        * Dromaeo/resources/dromaeorunner.js:
        (.):

2012-03-12  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: chromium: increase heap snapshot performance coverage.
        https://bugs.webkit.org/show_bug.cgi?id=80829

        Reviewed by Yury Semikhatsky.

        * inspector/detailed-heapshots-smoke-test.html:
        * inspector/performance-test.js:
        (initialize_TimeTracker.InspectorTest.measureFunction):

2012-03-06  Kentaro Hara  <haraken@chromium.org>

        [Perf tests] Reduce the number of loops in dom-attributes.html
        https://bugs.webkit.org/show_bug.cgi?id=80077

        Reviewed by Ryosuke Niwa.

        dom-attributes.html takes 100~ seconds in the perf bots. This patch reduces
        the time by reducing the number of loops.

        This is just a temporary fix. After more detailed investigation, I will reduce
        the number of tests in dom-attributes.html, and revert back the number of loops
        to guarantee the reliability of the perf test results.

        * Bindings/dom-attributes.html:

2012-03-06  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: Heap Snapshot test: split overal time metric into separate metrics.
        https://bugs.webkit.org/show_bug.cgi?id=80409

        Reviewed by Yury Semikhatsky.

        * inspector/detailed-heapshots-smoke-test.html:

2012-03-05  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: [chromium] introduce HeapSnapshot performance test.
        https://bugs.webkit.org/show_bug.cgi?id=80280

        Reviewed by Pavel Feldman.

        * inspector/detailed-heapshots-smoke-test.html: Added.

2012-03-01  Ryosuke Niwa  <rniwa@webkit.org>

        DOM tests take too long to run
        https://bugs.webkit.org/show_bug.cgi?id=80082

        Reviewed by Eric Seidel.

        Reduce benchmark.timeToRun from 500ms to 100ms. Doesn't seem to affect test results much
        (except DOM/DOMTable.html) but significantly reduces the runtime of tests.

        * DOM/resources/dom-perf.js:
        (BenchmarkSuite.prototype.RunSingle):

2012-02-26  Kentaro Hara  <haraken@chromium.org>

        [Performance Tests] [Chromium] Bindings/dom-attributes.html is timing out
        https://bugs.webkit.org/show_bug.cgi?id=79593

        Reviewed by Adam Barth.

        This patch halves the execution time of Bindings/dom-attributes.html
        in order to avoid timeout in Chromium. The reason for the timeout is that
        V8 DOM bindings are too much slower than JSC bindings.
        I am a bit afraid that this patch will reduce the accuracy of the
        perf test results, but it would make sense to reduce the execution time
        until we fix the performance issue in V8 DOM bindings.

        * Bindings/dom-attributes.html:

2012-02-24  Ryosuke Niwa  <rniwa@webkit.org>

        Rename dom*_*attributes.html to dom*-*attributes.html to follow the WebKit convention.

        * Bindings/dom-attributes.html: Copied from PerformanceTests/Bindings/dom_attributes.html.
        * Bindings/dom_attributes.html: Removed.

2012-02-24  Kentaro Hara  <haraken@chromium.org>

        Unreviewed, rolling out r108477.
        http://trac.webkit.org/changeset/108477
        https://bugs.webkit.org/show_bug.cgi?id=79209

        The perf tests committed in r108748 covers the perf tests
        committed in r108477. So I'll roll out r108477.

        * Bindings/dom_attributes_id_getter.html: Removed.
        * Bindings/dom_attributes_id_setter.html: Removed.
        * Bindings/resources/dom_attributes_common.js: Removed.

2012-02-24  Kentaro Hara  <haraken@chromium.org>

        Add performance tests for DOM attribute getters and setters
        https://bugs.webkit.org/show_bug.cgi?id=79208

        Reviewed by Ryosuke Niwa.

        This patch adds performance micro-benchmarks for DOM attribute
        getters and setters. We selected DOM attributes from HTMLElement,
        Element and Node which will most impact on the DOM performance
        in the real Web and which have different call-paths from another
        DOM attribute.

        The perf test result in my local Chromium/Linux environment is as follows:
        median= 14967.0 ms, stdev= 85.2385476178 ms, min= 14861.0 ms, max= 15155.0 ms

        If we run the test with DumpRenderTree, we can get the following test results:
        Info: [HTMLElement.id] avg=65.76ms, median=65.00ms, stdev=2.14ms, min=63, max=70
        Info: [HTMLElement.title] avg=64.05ms, median=63.00ms, stdev=1.50ms, min=63, max=67
        Info: [HTMLElement.lang] avg=64.19ms, median=63.00ms, stdev=1.82ms, min=62, max=67
        Info: [HTMLElement.dir] avg=64.10ms, median=63.00ms, stdev=1.72ms, min=62, max=68
        Info: [HTMLElement.className] avg=63.33ms, median=63.00ms, stdev=0.89ms, min=63, max=67
        Info: [HTMLElement.classList] avg=1946.00ms, median=1945.00ms, stdev=38.22ms, min=1921, max=2110
        Info: [HTMLElement.tabIndex] avg=83.52ms, median=80.00ms, stdev=6.00ms, min=79, max=94
        Info: [HTMLElement.draggable] avg=78.14ms, median=81.00ms, stdev=3.51ms, min=74, max=82
        Info: [HTMLElement.webkitdropzone] avg=64.33ms, median=63.00ms, stdev=1.98ms, min=63, max=68
        Info: [HTMLElement.hidden] avg=65.57ms, median=64.00ms, stdev=3.27ms, min=63, max=71
        Info: [HTMLElement.accessKey] avg=64.43ms, median=63.00ms, stdev=2.11ms, min=62, max=68
        Info: [HTMLElement.children] avg=130.76ms, median=128.00ms, stdev=9.75ms, min=109, max=143
        Info: [HTMLElement.isContentEditable] avg=74.29ms, median=75.00ms, stdev=2.00ms, min=71, max=77
        Info: [HTMLElement.spellcheck] avg=79.52ms, median=80.00ms, stdev=2.52ms, min=76, max=82
        Info: [HTMLElement.innerHTML] avg=279.05ms, median=279.00ms, stdev=1.96ms, min=276, max=283
        Info: [HTMLElement.innerText] avg=204.14ms, median=203.00ms, stdev=2.95ms, min=200, max=210
        Info: [HTMLElement.outerHTML] avg=1544.10ms, median=1546.00ms, stdev=15.56ms, min=1514, max=1568
        Info: [HTMLElement.outerText] avg=216.05ms, median=207.00ms, stdev=18.19ms, min=201, max=247
        Info: [HTMLElement.contentEditable] avg=334.24ms, median=323.00ms, stdev=36.06ms, min=318, max=446
        Info: [HTMLElement.id="foo"] avg=53.19ms, median=53.00ms, stdev=1.76ms, min=52, max=58
        Info: [HTMLElement.title="foo"] avg=63.14ms, median=63.00ms, stdev=0.35ms, min=63, max=64
        Info: [HTMLElement.lang="foo"] avg=60.86ms, median=61.00ms, stdev=0.56ms, min=60, max=62
        Info: [HTMLElement.dir="foo"] avg=53.57ms, median=54.00ms, stdev=0.58ms, min=53, max=55
        Info: [HTMLElement.className="foo"] avg=64.52ms, median=64.00ms, stdev=0.91ms, min=63, max=66
        Info: [HTMLElement.tabIndex="foo"] avg=367.86ms, median=369.00ms, stdev=8.06ms, min=352, max=380
        Info: [HTMLElement.draggable="foo"] avg=79.43ms, median=79.00ms, stdev=0.58ms, min=79, max=81
        Info: [HTMLElement.webkitdropzone="foo"] avg=62.14ms, median=62.00ms, stdev=0.35ms, min=62, max=63
        Info: [HTMLElement.hidden="foo"] avg=61.67ms, median=62.00ms, stdev=0.71ms, min=61, max=64
        Info: [HTMLElement.accessKey="foo"] avg=61.86ms, median=62.00ms, stdev=0.56ms, min=61, max=63
        Info: [HTMLElement.spellcheck="foo"] avg=79.57ms, median=80.00ms, stdev=0.58ms, min=78, max=80
        Info: [HTMLElement.innerHTML="foo"] avg=1176.67ms, median=1169.00ms, stdev=26.60ms, min=1146, max=1246
        Info: [HTMLElement.innerText="foo"] avg=51.62ms, median=52.00ms, stdev=0.72ms, min=50, max=53
        Info: [Element.tagName] avg=79.52ms, median=80.00ms, stdev=1.05ms, min=78, max=81
        Info: [Element.style] avg=126.19ms, median=126.00ms, stdev=10.40ms, min=104, max=161
        Info: [Element.offsetLeft] avg=98.95ms, median=104.00ms, stdev=4.01ms, min=100, max=99
        Info: [Element.clientLeft] avg=98.33ms, median=102.00ms, stdev=2.59ms, min=100, max=99
        Info: [Element.scrollLeft] avg=103.29ms, median=96.00ms, stdev=15.63ms, min=100, max=97
        Info: [Element.dataset] avg=2448.62ms, median=2441.00ms, stdev=20.43ms, min=2426, max=2503
        Info: [Element.firstElementChild] avg=58.71ms, median=58.00ms, stdev=2.37ms, min=57, max=65
        Info: [Element.lastElementChild] avg=56.33ms, median=55.00ms, stdev=1.83ms, min=54, max=59
        Info: [Element.previousElementSibling] avg=52.95ms, median=52.00ms, stdev=1.70ms, min=52, max=57
        Info: [Element.nextElementSibling] avg=58.48ms, median=58.00ms, stdev=1.79ms, min=57, max=63
        Info: [Element.childElementCount] avg=64.57ms, median=64.00ms, stdev=1.81ms, min=63, max=71
        Info: [Element.onload] avg=98.38ms, median=98.00ms, stdev=0.49ms, min=98, max=99
        Info: [Element.scrollLeft="foo"] avg=95.24ms, median=95.00ms, stdev=0.92ms, min=94, max=98
        Info: [Element.onload="foo"] avg=67.14ms, median=67.00ms, stdev=0.56ms, min=66, max=68
        Info: [Node.nodeName] avg=76.29ms, median=76.00ms, stdev=0.63ms, min=75, max=77
        Info: [Node.nodeType] avg=53.05ms, median=52.00ms, stdev=2.61ms, min=52, max=61
        Info: [Node.parentNode] avg=53.52ms, median=53.00ms, stdev=1.22ms, min=52, max=56
        Info: [Node.childNodes] avg=118.33ms, median=123.00ms, stdev=8.85ms, min=107, max=129
        Info: [Node.firstChild] avg=53.62ms, median=53.00ms, stdev=1.13ms, min=51, max=55
        Info: [Node.lastChild] avg=53.14ms, median=53.00ms, stdev=1.21ms, min=52, max=55
        Info: [Node.previousSibling] avg=51.86ms, median=51.00ms, stdev=1.55ms, min=50, max=54
        Info: [Node.nextSibling] avg=52.86ms, median=54.00ms, stdev=1.81ms, min=50, max=55
        Info: [Node.attributes] avg=2027.71ms, median=2026.00ms, stdev=10.48ms, min=2010, max=2051
        Info: [Node.ownerDocument] avg=152.14ms, median=152.00ms, stdev=1.73ms, min=149, max=155
        Info: [Node.namespaceURI] avg=60.86ms, median=59.00ms, stdev=3.85ms, min=56, max=66
        Info: [Node.localName] avg=60.00ms, median=59.00ms, stdev=2.71ms, min=57, max=66
        Info: [Node.baseURI] avg=671.10ms, median=668.00ms, stdev=10.66ms, min=659, max=706
        Info: [Node.parentElement] avg=55.05ms, median=56.00ms, stdev=2.15ms, min=52, max=58
        Info: [Node.nodeValue] avg=61.24ms, median=60.00ms, stdev=2.56ms, min=59, max=68
        Info: [Node.prefix] avg=60.90ms, median=58.00ms, stdev=4.26ms, min=57, max=68
        Info: [Node.textContent] avg=149.71ms, median=149.00ms, stdev=1.12ms, min=148, max=152
        Info: [Node.nodeValue="foo"] avg=23.62ms, median=23.00ms, stdev=0.72ms, min=23, max=25
        Info: [Node.prefix="foo"] avg=49.57ms, median=49.00ms, stdev=0.73ms, min=49, max=51
        Info: [Node.textContent="foo"] avg=145.81ms, median=140.00ms, stdev=17.43ms, min=138, max=199

        * Bindings/dom_attributes.html: Added.
        * resources/runner.js:
        (PerfTestRunner.info):

2012-02-22  Kentaro Hara  <haraken@chromium.org>

        Add performance tests for the Element.id getter and setter
        https://bugs.webkit.org/show_bug.cgi?id=79209

        Reviewed by Adam Barth.

        This patch adds performance tests for the Element.id getter and setter.

        The results of 10 runs in my local Chromium/Linux are as follows:

        dom_attributes_id_getter.html:
        median= 92.0 ms, stdev= 1.65151445649 ms, min= 89.0 ms, max= 96.0 ms
        median= 87.5 ms, stdev= 1.84390889146 ms, min= 85.0 ms, max= 92.0 ms
        median= 94.0 ms, stdev= 1.46543508898 ms, min= 90.0 ms, max= 95.0 ms
        median= 86.0 ms, stdev= 1.66958078571 ms, min= 84.0 ms, max= 91.0 ms
        median= 94.0 ms, stdev= 2.25610283454 ms, min= 103.0 ms, max= 98.0 ms
        median= 86.0 ms, stdev= 1.49666295471 ms, min= 84.0 ms, max= 91.0 ms
        median= 86.0 ms, stdev= 1.5321553446 ms, min= 84.0 ms, max= 90.0 ms
        median= 86.0 ms, stdev= 2.20227155455 ms, min= 84.0 ms, max= 94.0 ms
        median= 96.0 ms, stdev= 1.74570902501 ms, min= 101.0 ms, max= 99.0 ms
        median= 86.0 ms, stdev= 1.63935963108 ms, min= 84.0 ms, max= 90.0 ms
        median= 94.0 ms, stdev= 1.49248115566 ms, min= 90.0 ms, max= 95.0 ms
        median= 88.0 ms, stdev= 5.20192272146 ms, min= 84.0 ms, max= 98.0 ms
        median= 86.0 ms, stdev= 1.41067359797 ms, min= 84.0 ms, max= 89.0 ms
        median= 86.0 ms, stdev= 1.48660687473 ms, min= 84.0 ms, max= 89.0 ms
        median= 94.0 ms, stdev= 1.58113883008 ms, min= 93.0 ms, max= 97.0 ms
        median= 86.0 ms, stdev= 1.95959179423 ms, min= 84.0 ms, max= 93.0 ms
        median= 86.0 ms, stdev= 1.8547236991 ms, min= 84.0 ms, max= 92.0 ms
        median= 86.0 ms, stdev= 1.39283882772 ms, min= 84.0 ms, max= 89.0 ms
        median= 88.0 ms, stdev= 1.48660687473 ms, min= 85.0 ms, max= 90.0 ms
        median= 86.5 ms, stdev= 2.3 ms, min= 84.0 ms, max= 93.0 ms

        dom_attributes_id_setter.html:
        median= 123.0 ms, stdev= 2.06397674406 ms, min= 119.0 ms, max= 128.0 ms
        median= 119.0 ms, stdev= 1.92028643697 ms, min= 117.0 ms, max= 123.0 ms
        median= 121.0 ms, stdev= 1.8781639971 ms, min= 118.0 ms, max= 123.0 ms
        median= 123.0 ms, stdev= 2.21585198062 ms, min= 119.0 ms, max= 130.0 ms
        median= 124.5 ms, stdev= 2.36378933071 ms, min= 119.0 ms, max= 129.0 ms
        median= 122.0 ms, stdev= 2.4474476501 ms, min= 118.0 ms, max= 128.0 ms
        median= 123.0 ms, stdev= 1.76351920885 ms, min= 118.0 ms, max= 125.0 ms
        median= 119.0 ms, stdev= 1.79652442232 ms, min= 117.0 ms, max= 125.0 ms
        median= 121.0 ms, stdev= 1.49916643506 ms, min= 119.0 ms, max= 123.0 ms
        median= 119.5 ms, stdev= 1.85135085816 ms, min= 117.0 ms, max= 125.0 ms
        median= 124.0 ms, stdev= 1.43090880213 ms, min= 120.0 ms, max= 124.0 ms
        median= 122.0 ms, stdev= 1.45859521458 ms, min= 118.0 ms, max= 123.0 ms
        median= 123.0 ms, stdev= 1.50332963784 ms, min= 120.0 ms, max= 124.0 ms
        median= 123.0 ms, stdev= 1.3638181697 ms, min= 120.0 ms, max= 125.0 ms
        median= 119.0 ms, stdev= 1.43527000944 ms, min= 117.0 ms, max= 121.0 ms
        median= 122.5 ms, stdev= 1.71682847134 ms, min= 118.0 ms, max= 124.0 ms
        median= 121.0 ms, stdev= 1.44481832768 ms, min= 118.0 ms, max= 123.0 ms
        median= 120.0 ms, stdev= 1.40978721799 ms, min= 117.0 ms, max= 122.0 ms
        median= 122.0 ms, stdev= 1.68522995464 ms, min= 119.0 ms, max= 125.0 ms
        median= 122.0 ms, stdev= 1.55804364509 ms, min= 118.0 ms, max= 123.0 ms


        * Bindings/dom_attributes_id_getter.html: Added.
        * Bindings/dom_attributes_id_setter.html: Added.
        * Bindings/resources/dom_attributes_common.js: Added.

2012-02-16  Alexis Menard  <alexis.menard@openbossa.org>

        Add a perf test for the CSS parser.
        https://bugs.webkit.org/show_bug.cgi?id=78114

        Reviewed by Ryosuke Niwa.

        Add a perf test for the CSS parser. It load a big CSS chunk
        which contains some snippets of the YUI library from Yahoo!.

        * Parser/css-parser-yui.html: Added.

2012-02-08  Hajime Morrita  <morrita@chromium.org>

        [PerformanceTests] sunspider-crypto-md5.html and sunspider-crypto-sha1.html are timing out on cr-mac perf bot
        https://bugs.webkit.org/show_bug.cgi?id=78174

        Reviewed by Ryosuke Niwa.

        Pulled back removed files.

        * Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-md5.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-sha1.html: Added.

2012-02-02  Hajime Morrita  <morrita@chromium.org>

        [PerformanceTests] Each Dromaeo test needs its landing html.
        https://bugs.webkit.org/show_bug.cgi?id=77504

        Reviewed by Ryosuke Niwa.

        - Added landing pages for each test which are listed in MANIFEST.json
        - Removed some tests which depends on the library whose license is incompatible to WebKit.
        - Added local copy of corresponding library. And replace the references to the remote sources
          to the local copies.
        - Removed old library files under Dromaeo/resources/dromaeo/web/lib/.
        - Skipped Sunsupier and v8 test. Such JS centric test should have its own test instead of
          running as a part of Dromaeo.

        * Dromaeo/cssquery-dojo.html: Added.
        * Dromaeo/cssquery-jquery.html: Added.
        * Dromaeo/cssquery-prototype.html: Added.
        * Dromaeo/dom-attr.html: Added.
        * Dromaeo/dom-modify.html: Added.
        * Dromaeo/dom-traverse.html: Added.
        * Dromaeo/dromaeo-3d-cube.html: Added.
        * Dromaeo/dromaeo-core-eval.html: Added.
        * Dromaeo/dromaeo-object-array.html: Added.
        * Dromaeo/dromaeo-object-regexp.html: Added.
        * Dromaeo/dromaeo-object-string.html: Added.
        * Dromaeo/dromaeo-string-base64.html: Added.
        * Dromaeo/jslib-attr-jquery.html: Added.
        * Dromaeo/jslib-attr-prototype.html: Added.
        * Dromaeo/jslib-event-jquery.html: Added.
        * Dromaeo/jslib-event-prototype.html: Added.
        * Dromaeo/jslib-modify-jquery.html: Added.
        * Dromaeo/jslib-modify-prototype.html: Added.
        * Dromaeo/jslib-style-jquery.html: Added.
        * Dromaeo/jslib-style-prototype.html: Added.
        * Dromaeo/jslib-traverse-jquery.html: Added.
        * Dromaeo/jslib-traverse-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/lib/dojo.js: Removed.
        * Dromaeo/resources/dromaeo/web/lib/dojo-1.6.1.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/jquery.js: Removed.
        * Dromaeo/resources/dromaeo/web/lib/jquery-1.6.4.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/mootools.js: Removed.
        * Dromaeo/resources/dromaeo/web/lib/prototype.js: Removed.
        * Dromaeo/resources/dromaeo/web/lib/prototype-1.7.js: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-dojo.html:
        * Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/cssquery-mootools.html: Removed.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-prototype.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-attr-prototype.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-event-prototype.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-modify-prototype.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-style-prototype.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html:
        * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-prototype.html:
        * Dromaeo/sunspider-3d-morph.html: Added.
        * Dromaeo/sunspider-3d-raytrace.html: Added.
        * Dromaeo/sunspider-access-binary-trees.html: Added.
        * Dromaeo/sunspider-access-fannkuch.html: Added.
        * Dromaeo/sunspider-access-nbody.html: Added.
        * Dromaeo/sunspider-access-nsieve.html: Added.
        * Dromaeo/sunspider-bitops-3bit-bits-in-byte.html: Added.
        * Dromaeo/sunspider-bitops-bits-in-byte.html: Added.
        * Dromaeo/sunspider-bitops-bitwise-and.html: Added.
        * Dromaeo/sunspider-bitops-nsieve-bits.html: Added.
        * Dromaeo/sunspider-controlflow-recursive.html: Added.
        * Dromaeo/sunspider-crypto-aes.html: Added.
        * Dromaeo/sunspider-crypto-md5.html: Added.
        * Dromaeo/sunspider-crypto-sha1.html: Added.
        * Dromaeo/sunspider-date-format-tofte.html: Added.
        * Dromaeo/sunspider-date-format-xparb.html: Added.
        * Dromaeo/sunspider-math-cordic.html: Added.
        * Dromaeo/sunspider-math-partial-sums.html: Added.
        * Dromaeo/sunspider-math-spectral-norm.html: Added.
        * Dromaeo/sunspider-regexp-dna.html: Added.
        * Dromaeo/sunspider-string-fasta.html: Added.
        * Dromaeo/sunspider-string-tagcloud.html: Added.
        * Dromaeo/sunspider-string-unpack-code.html: Added.
        * Dromaeo/sunspider-string-validate-input.html: Added.
        * Dromaeo/v8-crypto.html: Added.
        * Dromaeo/v8-deltablue.html: Added.
        * Dromaeo/v8-earley-boyer.html: Added.
        * Dromaeo/v8-raytrace.html: Added.
        * Dromaeo/v8-richards.html: Added.
        * Skipped:

2012-02-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r106543.
        http://trac.webkit.org/changeset/106543
        https://bugs.webkit.org/show_bug.cgi?id=77671

        Made tests less stable (Requested by rniwa on #webkit).

        * resources/init.html: Removed.

2012-02-02  Ryosuke Niwa  <rniwa@webkit.org>

        [PerformanceTests] tests have dependencies
        https://bugs.webkit.org/show_bug.cgi?id=77506

        Reviewed by Hajime Morita.

        * resources/init.html: Added.

2012-02-01  Ryosuke Niwa  <rniwa@webkit.org>

        Fix after r106386. The empty anchor element was generating an erroneous whitespace.

        * Bindings/event-target-wrapper.html:

2012-02-01  Ryosuke Niwa  <rniwa@webkit.org>

        Another fix after r106379.

        * Parser/html5-full-render.html:

2012-01-31  Hajime Morrita  <morrita@chromium.org>

        Import Dromaeo to WebKit repository.
        https://bugs.webkit.org/show_bug.cgi?id=77328

        Reviewed by Ryosuke Niwa.

        Imported a modified version of Dromaeo which is able to
        run on the DRT.

        The imported version originally came from:
        https://github.com/omo/dromaeo/commit/c942a1452109cdd5f759b3c4aee8d68d490d44a2

        * Dromaeo/resources/dromaeo/web/application.css: Added.
        * Dromaeo/resources/dromaeo/web/favicon.ico: Added.
        * Dromaeo/resources/dromaeo/web/favicon.png: Added.
        * Dromaeo/resources/dromaeo/web/htmlrunner.js: Added.
        * Dromaeo/resources/dromaeo/web/ie.css: Added.
        * Dromaeo/resources/dromaeo/web/images/bg.png: Added.
        * Dromaeo/resources/dromaeo/web/images/clouds.png: Added.
        * Dromaeo/resources/dromaeo/web/images/clouds2.png: Added.
        * Dromaeo/resources/dromaeo/web/images/comets.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino1.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino2.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino3.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino4.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino5.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino6.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino7.png: Added.
        * Dromaeo/resources/dromaeo/web/images/dino8.png: Added.
        * Dromaeo/resources/dromaeo/web/images/left.png: Added.
        * Dromaeo/resources/dromaeo/web/images/logo.png: Added.
        * Dromaeo/resources/dromaeo/web/images/logo2.png: Added.
        * Dromaeo/resources/dromaeo/web/images/logo3.png: Added.
        * Dromaeo/resources/dromaeo/web/images/right.png: Added.
        * Dromaeo/resources/dromaeo/web/images/top.png: Added.
        * Dromaeo/resources/dromaeo/web/images/water.png: Added.
        * Dromaeo/resources/dromaeo/web/index.html: Added.
        * Dromaeo/resources/dromaeo/web/jquery.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/dojo.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/jquery.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/mootools.js: Added.
        * Dromaeo/resources/dromaeo/web/lib/prototype.js: Added.
        * Dromaeo/resources/dromaeo/web/pngfix.js: Added.
        * Dromaeo/resources/dromaeo/web/reset.css: Added.
        * Dromaeo/resources/dromaeo/web/test-head.html: Added.
        * Dromaeo/resources/dromaeo/web/test-head.js: Added.
        * Dromaeo/resources/dromaeo/web/test-tail.html: Added.
        * Dromaeo/resources/dromaeo/web/test-tail.js: Added.
        * Dromaeo/resources/dromaeo/web/tests/MANIFEST.json: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-dojo.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-mootools.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/cssquery-yui.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dom-attr.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dom-modify.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dom-query.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dom-traverse.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-3d-cube.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-core-eval.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-object-array.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-object-regexp.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-object-string.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/dromaeo-string-base64.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-attr-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-attr-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-event-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-event-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-modify-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-modify-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-style-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-style-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-jquery.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/jslib-traverse-prototype.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-3d-morph.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-access-binary-trees.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-access-fannkuch.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-access-nbody.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-access-nsieve.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-3bit-bits-in-byte.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bits-in-byte.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-nsieve-bits.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-controlflow-recursive.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-aes.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-md5.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-crypto-sha1.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-date-format-tofte.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-date-format-xparb.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-math-partial-sums.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-math-spectral-norm.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-regexp-dna.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-string-fasta.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-string-unpack-code.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/sunspider-string-validate-input.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/v8-crypto.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/v8-deltablue.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/v8-earley-boyer.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/v8-raytrace.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/v8-richards.html: Added.
        * Dromaeo/resources/dromaeo/web/tests/72px.png: Added.
        * Dromaeo/resources/dromaeo/web/web-style.css: Added.
        * Dromaeo/resources/dromaeo/web/webrunner.js: Added.
        * Skipped: Unskip the dromaeo driver.

2012-01-31  Ryosuke Niwa  <rniwa@webkit.org>

        Fix Parser/html5-full-render.html after r106379.

        * Parser/html5-full-render.html:

2012-01-31  Ryosuke Niwa  <rniwa@webkit.org>

        PerfTestRunner should automatically create pre#log
        https://bugs.webkit.org/show_bug.cgi?id=77469

        Reviewed by Tony Chang.

        Automatically generate <pre id="log"></pre> if there isn't one.

        * Bindings/event-target-wrapper.html:
        * DOM/Accessors.html:
        * DOM/CloneNodes.html:
        * DOM/CreateNodes.html:
        * DOM/DOMDivWalk.html:
        * DOM/DOMTable.html:
        * DOM/DOMWalk.html:
        * DOM/Events.html:
        * DOM/GetElement.html:
        * DOM/GridSort.html:
        * DOM/Template.html:
        * Dromaeo/dom-query.html:
        * Dromaeo/resources/dromaeorunner.js:
        * Parser/html-parser.html:
        * Parser/html5-full-render.html:
        * Parser/simple-url.html:
        * Parser/tiny-innerHTML.html:
        * Parser/url-parser.html:
        * Parser/xml-parser.html:
        * resources/runner.js:
        (PerfTestRunner.log):
        (PerfTestRunner.printStatistics):

2012-01-31  Ryosuke Niwa  <rniwa@webkit.org>

        runner.js in performance tests should define a class
        https://bugs.webkit.org/show_bug.cgi?id=77074

        Reviewed by Eric Seidel.

        Wrap all functions in runner.js by PerfTestRunner and update tests that runner.js accordingly.
        Also replace compute* functions in runner.js by more robust code from dom-perf.js.

        * Bindings/event-target-wrapper.html:
        * DOM/DOMTable.html:
        * DOM/resources/dom-perf.js:
        (BenchmarkSuite.prototype.RunSingle):
        (runBenchmarkSuite):
        * Mutation/append-child-deep.html:
        * Mutation/append-child.html:
        * Mutation/inner-html.html:
        * Mutation/remove-child-deep.html:
        * Mutation/remove-child.html:
        * Parser/html-parser.html:
        * Parser/html5-full-render.html:
        * Parser/simple-url.html:
        * Parser/tiny-innerHTML.html:
        * Parser/url-parser.html:
        * Parser/xml-parser.html:
        * resources/runner.js:
        (PerfTestRunner.log):
        (PerfTestRunner.logInfo):
        (PerfTestRunner.loadFile):
        (PerfTestRunner.computeStatistics):
        (PerfTestRunner.logStatistics):
        (PerfTestRunner._runLoop.else):
        (PerfTestRunner._runLoop):
        (PerfTestRunner._runner):

2012-01-31  Hajime Morrita  <morrita@chromium.org>

        [PerformanceTests] Add landing html for Dromaeo dom-query test
        https://bugs.webkit.org/show_bug.cgi?id=77329

        Reviewed by Ryosuke Niwa.

        Added a "landing html" which includes actual dromaemo page and
        send messages to interact with it. The landing html also dumps the
        score in run-perf-tests friendly format.

        This test isn't enabled until Dromaemo itself is available for run-perf-tests.
        It will happen in a separate change.

        * Dromaeo/dom-query.html: Added.
        * Dromaeo/resources/dromaeorunner.js: Added.
        * Skipped: Skipping this for now.

2012-01-30  Ryosuke Niwa  <rniwa@webkit.org>

        Skip inspector tests since they have been timing out.

        * Skipped:

2012-01-29  Ryosuke Niwa  <rniwa@webkit.org>

        DOM/DOMDivWalk.html result is unreliable
        https://bugs.webkit.org/show_bug.cgi?id=77313

        Reviewed by Adam Barth.

        Trigger garbage collection manually between test runs to avoid GC
        to occur in the middle of runs.

        * DOM/resources/dom-perf.js:
        (BenchmarkSuite.prototype.RunSingle):
        * resources/runner.js:
        (gc.else.gcRec):
        (gc):
        (runLoop):

2012-01-26  Ryosuke Niwa  <rniwa@webkit.org>

        Import Chromium's dom_perf test
        https://bugs.webkit.org/show_bug.cgi?id=77175

        Reviewed by Adam Barth.

        Import dom_perf.

        Note resources/dom/suites.js isn't used by any html file yet but it will be used by Chromium port
        once its perf bots start pulling test files from WebKit repository instead of Google's internal repository.

        * DOM: Added.
        * DOM/Accessors.html: Added.
        * DOM/CloneNodes.html: Added.
        * DOM/CreateNodes.html: Added.
        * DOM/DOMDivWalk.html: Added.
        * DOM/DOMTable.html: Added.
        * DOM/DOMWalk.html: Added.
        * DOM/Events.html: Added.
        * DOM/GetElement.html: Added.
        * DOM/GridSort.html: Added.
        * DOM/Template.html: Added.
        * DOM/resources: Added.
        * DOM/resources/dom-perf.js: Added.
        * DOM/resources/dom-perf: Added.
        * DOM/resources/dom-perf/accessors.js: Added.
        * DOM/resources/dom-perf/clonenodes.js: Added.
        * DOM/resources/dom-perf/createnodes.js: Added.
        * DOM/resources/dom-perf/domdivwalk.js: Added.
        * DOM/resources/dom-perf/domtable.js: Added.
        * DOM/resources/dom-perf/domwalk.js: Added.
        * DOM/resources/dom-perf/events.js: Added.
        * DOM/resources/dom-perf/getelement.js: Added.
        * DOM/resources/dom-perf/gridsort.js: Added.
        * DOM/resources/dom-perf/suites.js: Added.
        * DOM/resources/dom-perf/template.js: Added.
        * resources/runner.js:

2012-01-25  Ryosuke Niwa  <rniwa@webkit.org>

        html5-full-render.html fails due to a log
        https://bugs.webkit.org/show_bug.cgi?id=77046

        Reviewed by Adam Barth.

        Replace the call to log() in html5-full-render.html by a call to newly added logInfo(),
        which doesn't print anything inside DRT.

        * Parser/html5-full-render.html:
        * resources/runner.js:
        (logInfo):

2012-01-19  Adam Barth  <abarth@webkit.org>

        PerformanceTests's runner.js shouldn't be Parser-specific
        https://bugs.webkit.org/show_bug.cgi?id=76670

        Reviewed by Ryosuke Niwa.

        This runner script is used by a bunch of difference performance tests.
        It shouldn't be in the Parser directory anymore.

        * Bindings/event-target-wrapper.html:
        * Mutation/append-child-deep.html:
        * Mutation/append-child.html:
        * Mutation/inner-html.html:
        * Mutation/remove-child-deep.html:
        * Mutation/remove-child.html:
        * Parser/html-parser.html:
        * Parser/html5-full-render.html:
        * Parser/resources/runner.js: Removed.
        * Parser/simple-url.html:
        * Parser/tiny-innerHTML.html:
        * Parser/url-parser.html:
        * Parser/xml-parser.html:
        * resources: Added.
        * resources/runner.js: Copied from PerformanceTests/Parser/resources/runner.js.

2012-01-19  Ryosuke Niwa  <rniwa@webkit.org>

        Some perf tests time out when ran by run-perf-tests
        https://bugs.webkit.org/show_bug.cgi?id=76612

        Reviewed by Dirk Pranke and Eric Seidel.

        Replace all images in html5.html by geenbox.png to avoid accessing whatwg.org when
        running the parser tests. Also call dumpAsText, waitUntilDone, and notifyDone automatically
        inside runner.js to avoid having to call them in individual tests.

        * Bindings/event-target-wrapper.html: Removed calls to layoutTestController methods since
        they are now called by runner.js automatically.
        * Parser/resources/greenbox.png: Copied from LayoutTests/fast/css/resources/greenbox.png.
        * Parser/resources/html5.html:
        * Parser/resources/runner.js:
        (runLoop):

2012-01-18  Ryosuke Niwa  <rniwa@webkit.org>

        run-perf-tests should support Skipped list
        https://bugs.webkit.org/show_bug.cgi?id=76594

        Reviewed by Adam Barth.

        Add Skipped list to be used by run-perf-tests as it can only runs tests in
        Bindings, Parser, and inspector at the moment.

        * Skipped: Added.

2012-01-12  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: performance: restore 'log 300 messages into console' test.
        https://bugs.webkit.org/show_bug.cgi?id=76170

        It was removed in order of transition from layout tests to perf tests.

        Reviewed by Yury Semikhatsky.

        * inspector/console-300-lines.html: Added.

2012-01-12  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: performance tests: fix memory leak in first-open-resources test.
        https://bugs.webkit.org/show_bug.cgi?id=76049

        first-open-resources doesn't reset resource panel properly after test run.

        Reviewed by Yury Semikhatsky.

        * inspector/first-open-resources.html:

2012-01-10  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed. WebInspector: Remove unnecessary logging from the test.

        * inspector/first-open-resources.html:

2012-01-10  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed. Restore test that was removed during migration from LayoutTests folder.

        * inspector/first-open-resources.html: Added.

2012-01-09  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed test fix after r103683.

        * inspector/first-open-scripts.html:
        * inspector/show-panel.html:

2012-01-03  Adam Barth  <abarth@webkit.org>

        html-parser.html takes too long to run
        https://bugs.webkit.org/show_bug.cgi?id=75515

        Reviewed by Eric Seidel.

        In working on runner.js, we introduced a factor of 10 increase to the
        running time of this benchmark.  This patch dials down the number of
        iterations to something more user-friendly.

        * Parser/html-parser.html:

2011-12-18  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: move heap data stats to separate tab.
        https://bugs.webkit.org/show_bug.cgi?id=74704

        Reviewed by Pavel Feldman.

        * inspector/performance-test.js:
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest):

2011-12-01  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: chromium: move and adapt Inspector's performance tests for running with run-inspector-perf-tests.py.
        https://bugs.webkit.org/show_bug.cgi?id=72260

        Reviewed by Pavel Feldman.

        * inspector/first-open-elements.html: Renamed from LayoutTests/inspector/performance/resources/first-open-elements.html.
        * inspector/first-open-scripts.html: Renamed from LayoutTests/inspector/performance/resources/first-open-scripts.html.
        * inspector/inspector-startup-time.html: Renamed from LayoutTests/inspector/performance/resources/inspector-startup-time.html.
        * inspector/network-append-30-requests.html: Renamed from LayoutTests/inspector/performance/resources/network-append-30-requests.html.
        * inspector/performance-test.js: Renamed from LayoutTests/inspector/performance/resources/performance-test.js.
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.start):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.finish):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._getJSHeapSize):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype.done):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._runTest):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest.Timer.prototype._dump):
        (initialize_TimeTracker.InspectorTest.runPerformanceTest):
        (initialize_TimeTracker.InspectorTest.mark):
        * inspector/show-panel.html: Renamed from LayoutTests/inspector/performance/resources/show-panel.html.

2011-11-09  Adam Klein  <adamk@chromium.org>

        [MutationObservers] Microbenchmarks for appendChild, removeChild, and innerHTML
        https://bugs.webkit.org/show_bug.cgi?id=71939

        Reviewed by Ojan Vafai.

        These benchmarks time both the DOM mutations themselves and the time taken
        to call the MutationCallback. This measurement is achieved by
        executing the code entirely within the MutationCallback itself.

        * Mutation/append-child-deep.html: Added. Covers appendChild in a 200-node-deep tree with subtree observation.
        * Mutation/append-child.html: Added. Covers appendChild in a flat tree.
        * Mutation/inner-html.html: Added. Covers innerHTML adding and removing many nodes at a time.
        * Mutation/remove-child-deep.html: Added. Covers removeChild in a 200-node-deep tree with subtree observation.
        * Mutation/remove-child.html: Added. Covers removeChild in a flat tree.

2011-10-25  Adam Barth  <abarth@webkit.org>

        EventTargetFactory.in is not sorted
        https://bugs.webkit.org/show_bug.cgi?id=70855

        Reviewed by Eric Seidel.

        Add a microbenchmark for wrapping event target.

        * Bindings: Added.
        * Bindings/event-target-wrapper.html: Added.
        * Parser/resources/runner.js:
        (runLoop):
            - Let the user of the harness get a callback when the test is done.

2011-10-04  Eric Seidel  <eric@webkit.org>

        Update html5-full-render.html to load the HTML5 spec incrementally, closer to how the browser would
        https://bugs.webkit.org/show_bug.cgi?id=69374

        Unreviewed.

        Per https://bugs.webkit.org/show_bug.cgi?id=69374#c7
        updating the chunksize to be a bit smaller now that the total
        size of the html5 spec is smaller than when I wrote the test.

        This should increase the prevalence of style resolution in the
        sample time, which more closely matches instrument samples
        taken when loading the full page in Safari.

        * Parser/html5-full-render.html:

2011-10-04  Eric Seidel  <eric@webkit.org>

        Update html5-full-render.html to load the HTML5 spec incrementally, closer to how the browser would
        https://bugs.webkit.org/show_bug.cgi?id=69374

        Reviewed by James Robinson.

        This should finally be able to provide us with a repeatable metric
        for how fast we're currently able to load the HTML5 spec.
        There are a variety of interesting functions which show up in this
        sample, including of course style resolution.

        * Parser/html5-full-render.html:

2011-10-04  Eric Seidel  <eric@webkit.org>

        Update our copy of the HTML5 spec used for performance testing to match the latest version
        https://bugs.webkit.org/show_bug.cgi?id=69364

        Unreviewed.  The patch is too large to post, so landing this unreviewed. :(

        The copy of the html5 spec we were using for testing was over a year old
        and didn't have any of the subresources with it (we were only using it
        as an HTML parsing benchmark).  I'm about to use it for testing
        the full load/render time of the benchmark, so I've updated to the latest
        version of the spec (now 8mb instead of 5mb) and inlined two of the
        CSS files.  (Inlining the CSS was necessary to make my testing consistent
        as there seems to be a race with some timer fired after CSS load.)

        Increasing from 5mb to 8mb showed a similar 30% slowdown in our parser
        benchmarks as expected.

        * Parser/resources/html5.html:

2011-10-04  Eric Seidel  <eric@webkit.org>

        Add loopsPerRun option to Parser performance test runner
        https://bugs.webkit.org/show_bug.cgi?id=69363

        Reviewed by Antti Koivisto.

        Add loopsPerRun option and abstract out runLoop function (to make the UI more responsive).
        No change in behavior in any of the tests.

        * Parser/resources/runner.js:
        (runLoop):
        (run):
        (start):

2011-10-03  Eric Seidel  <eric@webkit.org>

        Add a microbenchmark for a full-page render of the HTML5 spec
        https://bugs.webkit.org/show_bug.cgi?id=69285

        Reviewed by Adam Barth.

        This was designed to be a test for https://bugs.webkit.org/show_bug.cgi?id=68944
        But it seems that by far our dominating cost for the HTML5 benchmark is
        time spent laying out lines (which isn't actually that surprising).

        I'm adding the performance test for posterity.

        * Parser/html-parser.html:
         - Removed use of "about:blank" which abarth says is a no-op.  Made comment more accurate.
        * Parser/html5-full-render.html: Copied from PerformanceTests/Parser/html-parser.html.

2011-10-03  Eric Seidel  <eric@webkit.org>

        PerformanceTests/Parser/html-parser is only testing parsing of the head element
        https://bugs.webkit.org/show_bug.cgi?id=69283

        Reviewed by Adam Barth.

        While investigating https://bugs.webkit.org/show_bug.cgi?id=68944
        I found that the html-parser benchmark was only parsing up to the
        first script tag per loop!  We've fixed this by adding the sandbox
        tag which will deny all external loads and allow the parser to
        synchronously continue parsing the entire document to completion
        (as we had expected it was doing).

        This changes the profile somewhat.  Line number counting is much
        hotter, since we're actually accounting for the parse of the entire
        document in our sample.

        Total sample time only about doubles, from 1800ms to 3800ms on my machine
        which is less than I would have expected.

        * Parser/html-parser.html:

2011-08-09  Alexandru Chiculita  <achicu@adobe.com>

        Fixing 65868 REGRESSION(r92610) caused by 65668 - Optimize floating elements lookup
        https://bugs.webkit.org/show_bug.cgi?id=65871

        Reviewed by Dave Hyatt.

        * Layout/floats.html: Added the nested divs, so that we can test the propagation impact of the floats tree.

2011-08-08  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r92610.
        http://trac.webkit.org/changeset/92610
        https://bugs.webkit.org/show_bug.cgi?id=65868

        Caused assertion failures when running fast/multicol tests
        (Requested by andersca on #webkit).

        * Layout/floats.html:

2011-08-08  Alexandru Chiculita  <achicu@adobe.com>

        Optimize floating elements lookup
        https://bugs.webkit.org/show_bug.cgi?id=65668

        Reviewed by David Hyatt.

        * Layout/floats.html: Added the nested divs, so that we can test the propagation impact of the floats tree.

2011-08-04  Alexandru Chiculita  <achicu@adobe.com>

        Add a performance test for floating elements layout algorithm
        https://bugs.webkit.org/show_bug.cgi?id=65741

        The test creating lots of small floats and randomly changes
        the width of one element at a time. It measures how often it can do that.

        Reviewed by Adam Barth.

        * Layout/floats.html: Added.

2011-05-30  Daniel Bates  <dbates@webkit.org>

        Reviewed by Adam Barth.

        Rename XSSFilter to XSSAuditor
        https://bugs.webkit.org/show_bug.cgi?id=61718

        Currently we use the names XSSFilter and XSSAuditor throughout the project.
        Instead, we should choose one name for consistency.

        No functionality was changed. So, no new tests.

        * XSSAuditor: Copied from PerformanceTests/XSSFilter.
        * XSSFilter: Removed.
        * XSSFilter/large-post-many-events.html: Removed.
        * XSSFilter/large-post-many-inline-scripts-and-events.html: Removed.
        * XSSFilter/resources: Removed.
        * XSSFilter/resources/target-for-large-post-many-inline-scripts-and-events.html: Removed.

2011-03-25  Leo Yang  <leo.yang@torchmobile.com.cn>

        Reviewed by Dirk Schulze.

        SVG <use> element performance improvement
        https://bugs.webkit.org/show_bug.cgi?id=57077

        Add a manual test case which is from
        http://upload.wikimedia.org/wikipedia/commons/4/4e/Sierpinski_carpet_6.svg
        for svg <use> element performance test.

        * PageLoad/svg/files/Sierpinski_carpet_6.svg: Added.
        * PageLoad/svg/svg.pltsuite:

2011-02-05  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Barth.

        Add performance tests for URL parsing
        https://bugs.webkit.org/show_bug.cgi?id=53845

        The final-url-en URL corpus is from:
        http://corpus.leeds.ac.uk/internet.html

        There are also other language corpuses which we may want to use in the future.

        The usage instructions were as follows:
        "URL lists and other resources: you can freely use them in your research
        provided that you supply a link to this website: http://corpus.leeds.ac.uk/."
        Done.

        * Parser/simple-url.html: Added.
         On my machine:
         Firefox: 255ms
         TOT WebKit: 378ms
         Chrome: 286ms
         Opera: 2830ms (no, that is not a typo)
        * Parser/url-parser.html: Added.
         Firefox: 381ms
         TOT WebKit: 216ms
         Chrome: 131ms
         Opera: 1383ms (again, not a typo)
        * Parser/resources/final-url-en: Added.

2011-02-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Daniel Bates.

        Add another XSSFilter PerformanceTest
        https://bugs.webkit.org/show_bug.cgi?id=53750

        This PerformanceTest tests the case that was slow in
        https://bugs.webkit.org/show_bug.cgi?id=49845

        * XSSFilter/large-post-many-inline-scripts-and-events.html: Added.
        * XSSFilter/resources: Added.
        * XSSFilter/resources/target-for-large-post-many-inline-scripts-and-events.html: Added.

2011-02-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Add PerformanceTest for XSSFilter
        https://bugs.webkit.org/show_bug.cgi?id=53741

        This performance tests covers the case of a large POST data and many
        small event handlers.

        * XSSFilter: Added.
        * XSSFilter/large-post-many-events.html: Added.

2011-02-02  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Merge PerformanceTests/Parser/ChangeLog and
        PerformanceTests/PageLoad/ChangeLog into PerformanceTests/ChangeLog.

        It's silly to have ChangeLogs for each of these directories separately.
        I've left SunSpider with its own ChangeLog because it's more of an
        independent entity.

        * ChangeLog: Added.

2011-02-02  Eric Seidel  <eric@webkit.org>

        Unreviewed.  Just fixing an exception seen in Firefox.

        HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
        https://bugs.webkit.org/show_bug.cgi?id=48719

        Make the benchmarks work in Firefox/Opera.

        * resources/runner.js:
        (log):

2011-01-27  Eric Seidel  <eric@webkit.org>

        Reviewed by Darin Adler.

        HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
        https://bugs.webkit.org/show_bug.cgi?id=48719

        It's unclear exactly what the Peacekeeper benchmark is testing,
        because I haven't found a way to run it myself.

        However, I constructed a benchmark which shows at least one possible slow point.
        The HTML5 spec talks about creating a new document for every time we use
        the fragment parsing algorithm.  Document() it turns out, it a huge bloated
        mess, and the constructor and destructor do a huge amount of work.

        * benchmarks/parser/tiny-innerHTML.html: Added.

2011-01-29  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r77050.
        http://trac.webkit.org/changeset/77050
        https://bugs.webkit.org/show_bug.cgi?id=53371

        Caused a crash in Chromium's test_shell_tests (Requested by
        rniwa on #webkit).

        * resources/performance-test.js: Removed.
        * tiny-innerHTML.html: Removed.

2011-01-28  Eric Seidel  <eric@webkit.org>

        Reviewed by Darin Adler.

        HTML5 TreeBuilder regressed a Peacekeeper DOM test by 40%
        https://bugs.webkit.org/show_bug.cgi?id=48719

        It's unclear exactly what the Peacekeeper benchmark is testing,
        because I haven't found a way to run it myself.

        However, I constructed a benchmark which shows at least one possible slow point.
        The HTML5 spec talks about creating a new document for every time we use
        the fragment parsing algorithm.  Document() it turns out, it a huge bloated
        mess, and the constructor and destructor do a huge amount of work.
        To avoid constructing (or destructing) documents for each innerHTML call,
        this patch adds a shared dummy document used by all innerHTML calls.

        * benchmarks/parser/tiny-innerHTML.html: Added.

2010-12-31  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move HTML and XML parser benchmarks into PerformanceTests/Parser
        https://bugs.webkit.org/show_bug.cgi?id=51772

        Add a ChangeLog for tracking changes to the Parser PerformanceTest.

        * ChangeLog: Added.

2010-12-31  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move PageLoadTests to PerformanceTests/PageLoad
        https://bugs.webkit.org/show_bug.cgi?id=51771

        Update URLs to point to the new directory name.

        * svg/svg.pltsuite:

2006-12-26  Eric Seidel  <eric@webkit.org>

        Reviewed by olliej.

        * svg/svg.pltsuite: re-enable word-iso.svg after fixing http://bugs.webkit.org/show_bug.cgi?id=11987

2006-12-26  Eric Seidel  <eric@webkit.org>

        Reviewed by bradee-oh.

        Add new PageLoadTests directory (this one)
        Add LICENSES file to explain where each SVG came from.

        * ChangeLog: Added.
        * svg/LICENSES: Added.
        * svg/files/33041-Samurai.svg: Added.
        * svg/files/42470-flower_from_my_garden_v2.svg: Added.
        * svg/files/Harvey_Rayner.svg: Added.
        * svg/files/az-lizard_benji_park_01.svg: Added.
        * svg/files/bamboo_01.svg: Added.
        * svg/files/cacuts_01.svg: Added.
        * svg/files/cowboy.svg: Added.
        * svg/files/crawfish2_ganson.svg: Added.
        * svg/files/deb9frac1.svg: Added.
        * svg/files/food_leif_lodahl_01.svg: Added.
        * svg/files/france.svg: Added.
        * svg/files/francobollo_gnome_ezechi_02.svg: Added.
        * svg/files/gearflowers.svg: Added.
        * svg/files/hereGear4.svg: Added.
        * svg/files/mtsthelens.svg: Added.
        * svg/files/mtsthelens0.jpg: Added.
        * svg/files/world-iso.svg: Added.
        * svg/files/worldcup.svg: Added.
        * svg/svg.pltsuite: Added.

