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.

