2021-08-06 Michael Catanzaro MallocBench: fix ODR violation https://bugs.webkit.org/show_bug.cgi?id=228874 Reviewed by Geoffrey Garen. When built with LTO enabled, GCC will warn about violations of C++'s one-definition rule. MallocBench has two different Objects in two different files, which is illegal. We could rename one of them, but I decided it's simplest to just put them each in anonymous namespaces in order to restrict them to file scope. * MallocBench/MallocBench/big.cpp: * MallocBench/MallocBench/stress.cpp: 2021-07-25 Cathie Chen [Performance test][css-contain] Add test to contain: size layout https://bugs.webkit.org/show_bug.cgi?id=227948 Reviewed by Ryosuke Niwa. This test emulates the scenario that a small part of the page is changed. If it's applied contain: size layout, the performance should be improved. This test is a transform of the test [1] in blink. [1] third_party/blink/perf_tests/layout/css-contain-change-text.html * Layout/css-contain-change-size.html: Added. 2021-07-16 Manuel Rego Casasnovas Remove CSS Regions perf tests https://bugs.webkit.org/show_bug.cgi?id=228016 Reviewed by Ryosuke Niwa. The feature has been removed long time ago, so let's do the same with the associated perf tests. * Layout/RegionsAuto.html: Removed. * Layout/RegionsAutoMaxHeight.html: Removed. * Layout/RegionsExtendingSelectionMixedContent.html: Removed. * Layout/RegionsFixed.html: Removed. * Layout/RegionsFixedShort.html: Removed. * Layout/RegionsSelectAllMixedContent.html: Removed. * Layout/RegionsSelection.html: Removed. * Layout/RegionsShapes.html: Removed. * Layout/Shapes/RegionsShapesNoShapes.html: Removed. * Layout/Shapes/resources/RegionsShapesContent.html: Removed. * Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Removed. * Layout/resources/regions.css: Removed. * Layout/resources/regions.js: Removed. 2021-06-03 Said Abou-Hallawa [MotionMark] Controller.filterOutOutliers() sorts the frameLengths array incorrectly https://bugs.webkit.org/show_bug.cgi?id=226605 Reviewed by Myles C. Maxfield. Controller.filterOutOutliers must pass a compare function to Array.sort() because it filters an array of numbers. * MotionMark/tests/resources/main.js: (filterOutOutliers): 2021-06-03 Myles C. Maxfield [MotionMark] Update version number of local development version of the benchmark to match the currently-being-released version https://bugs.webkit.org/show_bug.cgi?id=226592 Reviewed by Darin Adler. We are currently in the process of releasing MotionMark 1.2. http://browserbench.org/MotionMark1.2/ * MotionMark/about.html: * MotionMark/resources/strings.js: 2021-05-21 Sam Sneddon Fix Python 3.6+ DeprecationWarnings about unknown escapes https://bugs.webkit.org/show_bug.cgi?id=226018 Reviewed by Jonathan Bedard. Fix Python 3.6+ DeprecationWarnings about unknown escapes * JetStream2/RAMification.py: * JetStream2/RexBench/FlightPlanner/convert-nfdc.py: * RexBench/FlightPlanner/convert-nfdc.py: 2021-05-12 Myles C. Maxfield [MotionMark] Temporarily remove the focus test https://bugs.webkit.org/show_bug.cgi?id=225714 Reviewed by Geoffrey Garen. The focus test is causing unacceptably high variance on test results. Initial investigation indicates that this is related to secondary and tertiary interactions between the browser's runloop and the compositor's runloop. Not only that, but the variable cost of the focus test seems to affect the variance on the subtests which run after it. This patch temporarily removes the focus test, just so we can get a stronger signal of browsers' true performance, while we do a deeper analysis of the focus test. Because the focus test's score is lower than the average score of the subtests, removing it causes scores in all browsers to increase: | WebKit | Chrome | Firefox ================================================ Score with Focus | 1020 | 550 | 962 Score without Focus | 1623 | 874 | 1101 Stddev with Focus | 9.3% | 2.3% | 2.9% Stddev without Focus | 0.7% | 0.5% | 7.9% * MotionMark/resources/runner/tests.js: 2021-04-19 Kimmo Kinnunen Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards https://bugs.webkit.org/show_bug.cgi?id=221614 Reviewed by David Kilzer. Add -Wthread-safety to compile flags. * DecoderTest/Configurations/Base.xcconfig: 2021-04-12 Sergio Villar Senin [css-flexbox] CDC COVID Vaccine Tracker: Safari garbles data table https://bugs.webkit.org/show_bug.cgi?id=222581 Reviewed by Zalan Bujtas. * Layout/nested-flexboxes-percentage-flex-basis.html: Added. 2021-03-17 Myles C. Maxfield Laying out complex text in columns is O(n^2) https://bugs.webkit.org/show_bug.cgi?id=223363 Reviewed by Zalan Bujtas. * Layout/complex-columns.html: Added. 2021-03-09 Myles C. Maxfield MotionMark scores are super sensitive to a single long frame https://bugs.webkit.org/show_bug.cgi?id=220847 Reviewed by Jon Lee. Currently, "ramp" tests have three phases. The middle phase is where they try to determine a maximum reasonable complexity, and the third one is where they try various complexities between 0 and the maximum. The calculation of this maximum reasonable complexity is currently very sensitive to outlier frame times. If there is a single outlier frame time, the failure mode is to assume that the maximum complexity is ~10. So, the solution is to ignore outlier frame times during this first phase, and to ensure that there are at least 9 frames measured that have non-outlier times. This test also changes the speed of the middle phase. Previously, each interval during this phase had a complexity that was 3.16x of the previous complexity. This patch changes that to 1.78x of the previous complexity for complexities above 50, and 1.33x for complexities above 10,000. * MotionMark/tests/resources/main.js: (filterOutOutliers): (_measureAndResetInterval): (update): (registerFrameTime): (intervalHasConcluded): (start): (didFinishInterval): 2021-02-26 Zalan Bujtas [Performance test][Line layout] Add test with inline boxes https://bugs.webkit.org/show_bug.cgi?id=222498 Reviewed by Ryosuke Niwa. We don't have a performance test on inline boxes yet. * Layout/line-layout-inline-level-boxes.html: Added. 2021-02-25 Commit Queue Unreviewed, reverting r273122 and r273123. https://bugs.webkit.org/show_bug.cgi?id=222449 Didn't fix the extreme test variance, and caused some internal performance bots to hang during testing Reverted changesets: "MotionMark scores are super sensitive to a single long frame" https://bugs.webkit.org/show_bug.cgi?id=220847 https://trac.webkit.org/changeset/273122 "MotionMark scores are super sensitive to a single long frame" https://bugs.webkit.org/show_bug.cgi?id=220847 https://trac.webkit.org/changeset/273123 2021-02-22 Sergio Villar Senin REGRESSION (r266695): twitch.tv: when in fullscreen, WebKit continually does 350ms layouts. Firefox and Chrome do not https://bugs.webkit.org/show_bug.cgi?id=222202 Reviewed by Simon Fraser. New performance test for nested column flexboxes with percentage heights. * Layout/nested-column-flexboxes-relative-height.html: Added. 2021-02-18 Myles C. Maxfield MotionMark scores are super sensitive to a single long frame https://bugs.webkit.org/show_bug.cgi?id=220847 Reviewed by Maciej Stachowiak and Jon Lee. Currently, "ramp" tests have three phases. The middle phase is where they try to determine a maximum reasonable complexity, and the third one is where they try various complexities between 0 and the maximum. The calculation of this maximum reasonable complexity is currently very sensitive to outlier frame times. If there is a single outlier frame time, the failure mode is to assume that the maximum complexity is ~10. So, the solution is to ignore outlier frame times during this first phase, and to ensure that there are at least 9 frames measured that have non-outlier times. * MotionMark/tests/resources/main.js: (filterOutOutliers): (_measureAndResetInterval): (update): (registerFrameTime): (intervalHasConcluded): (start): (didFinishInterval): 2021-01-28 Myles C. Maxfield MotionMark focus test can cause extreme variance in whichever test runs directly after it https://bugs.webkit.org/show_bug.cgi?id=221075 Reviewed by Said Abou-Hallawa. The focus test loads up the window server with work, which runs asynchronously from WebKit's run loop. This means that the window server can still be busy when the next test starts. In r270959 we already tried to combat this, and it was mostly successful, but not as successful as we'd like. This patch goes further by: 1. Bumping up the warmup timeout to 2000ms from 1000ms 2. Making the warmup render at least 30 frames. This means that a single extremely long frame can't fill up the entire warmup period. * MotionMark/developer.html: * MotionMark/resources/runner/motionmark.js: (this.clear): * MotionMark/tests/resources/main.js: (Benchmark.Utilities.createClass): (_animateLoop): 2021-01-03 Beth Dakin Remove non-inclusive language from JetStream 2.0 https://bugs.webkit.org/show_bug.cgi?id=220109 Reviewed by Anders Carlsson. * JetStream2/code-load/inspector-payload.js: (WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter): (WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isAllowlistedProperty): (WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty): Deleted. * JetStream2/web-tooling-benchmark/cli.js: 2020-12-17 Said Abou-Hallawa [MotionMark] Increase the warm-up time for each sub-test from 100ms to 1000ms https://bugs.webkit.org/show_bug.cgi?id=219984 Reviewed by Jon Lee. Ensure the warm-up time is enough for the system to finish any initialization work which may be triggered by the sub-test before starting the sampling. This should prevent bi-modality in the score of the sub-tests since the initial frame rate is crucial in deciding how much the complexity can grow. * MotionMark/developer.html: * MotionMark/resources/runner/motionmark.js: (this.clear): 2020-12-14 Antti Koivisto Add inline-block line layout microbench https://bugs.webkit.org/show_bug.cgi?id=219854 Reviewed by Zalan Bujtas. * Layout/line-layout-inline-block.html: Added. 2020-12-11 Geoffrey Garen Eliminate 'async time' in StyleBench https://bugs.webkit.org/show_bug.cgi?id=219785 Reviewed by Antti Koivisto. r270132 (a RunLoop change) measured as a 13% regression on the StyleBench bot. But I don't think the measured regression was user-real. Instead, I think the baseline score was artificially high because 'async time' sometimes did not measure painting. I decided just to eliminate 'async time' (and force style resolution + layout during 'sync time') because this benchmark intends to measure style resolution + layout, and not painting or frame rate. With this change, there is no measured regression anymore. Explanation of 'did not measure painting': StyleBench synchronously modifies DOM + style, and then sets a zero-delay timer to measure 'async time'. If layout has not happened by the time the timer fires, StyleBench forces layout and then computes 'async time'. The flaw here is painting. StyleBench accepts both of these orders of operations as valid: (A) { modify DOM + style }, { measure 'sync time' }, { style resolution + layout }, { paint }, { measure 'async time' } (B) { modify DOM + style }, { measure 'sync time' }, { style resolution + layout }, { measure 'async time' }, { paint } ^ (B) includes more stuff than (A). Not cool! Evidence for the theory that the baseline was sometimes doing (B): * Forcing style resolution + layout during sync time reduces the baseline score and eliminates the difference in async time between baseline and patch. * Starting the benchmark from a requestAnimationFrame() instead of a timer reduces the baseline score and eliminates the difference in async time between baseline and patch. * The regression only reproduced on machines with fewer cores. * The new benchmark method reduces sttdev by ~3X - ~5X. * StyleBench/resources/benchmark-runner.js: (BenchmarkRunner.prototype._runTest): Call getBoundingClientRect() during sync time to force style resolution + layout consistently. Always report async time as 1, since this benchmark doesn't have an async time component anymore. (The harness doesn't like zeroes.) Just store height in a global because that is sufficient to prevent dead code elimination (which was probably impossible anyway, since getBoundingClientRect() has side effects). 2020-12-10 Tadeu Zagallo Removing unnecessary locking from JSValue API functions https://bugs.webkit.org/show_bug.cgi?id=219723 Reviewed by Filip Pizlo. Print an error message when benchmarks fail to run and add option to change the configuration used to build the benchmarks. * APIBench/api-bench: 2020-12-10 Tadeu Zagallo Add a JSC API to allow acquiring the JSLock https://bugs.webkit.org/show_bug.cgi?id=219663 Reviewed by Filip Pizlo. This patch does 3 things: - Change how the geomean is calculated in api-bench to avoid overflowing - Allow linking against the local build we're benchmarking - Adopt the new JSLock API in the UpcomingAPI subtests Using the new API the score improves by ~13.5%. Here are the results for each of the "UpcomingAPI" subtests plus the total score: Before After RichardsMostlyC: 77ms 23ms RichardsMostlyObjC: 309ms 282ms RichardsMostlySwift 305ms 280ms RichardsSomeC: 101ms 95ms RichardsSomeObjC: 160ms 157ms RichardsSomeSwift: 201ms 202ms ------------------------------------------ Score: 29.5974 33.6404 * APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC/richards.c: (workfn): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlyObjC.xcscheme: Renamed from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.m: (+[WorkerTask context]): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj: * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/BridgingHeader.h: Copied from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift. * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift: * APIBench/UpcomingAPI/RichardsSomeC/RichardsSomeC/main.m: (main): * APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC/main.m: (main): * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/project.pbxproj: * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/BridgingHeader.h: Copied from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift. * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/main.swift: * APIBench/api-bench: 2020-12-07 Don Olmstead [CMake] Remove WEBKIT_WRAP_SOURCELIST https://bugs.webkit.org/show_bug.cgi?id=196916 Reviewed by Michael Catanzaro. * MallocBench/MallocBench/CMakeLists.txt: 2020-12-04 Adam Roben More FALLBACK_PLATFORM adoption https://bugs.webkit.org/show_bug.cgi?id=219545 Reviewed by Tim Horton. * MediaTime/Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. 2020-12-03 Adam Roben Adopt FALLBACK_PLATFORM https://bugs.webkit.org/show_bug.cgi?id=219504 Reviewed by Tim Horton. * MediaTime/Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. 2020-11-30 Tadeu Zagallo Add C and ObjC tests to APIBench https://bugs.webkit.org/show_bug.cgi?id=219246 Reviewed by Yusuke Suzuki. The benchmark now consists of two groups: initially they are identical, but the first group will not be changed going forward while the second group will be free to adopt new APIs. The two original tests (one mostly JS and the other mostly native) were also split into three tests each (C, ObjC and Swift). * APIBench/CurrentAPI/RichardsMostlyC/RichardsMostlyC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsMostlyC/RichardsMostlyC.xcodeproj/xcshareddata/xcschemes/RichardsMostlyC.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/CurrentAPI/RichardsMostlyC/RichardsMostlyC/richards.c: Added. (pkt): (trace): (schedule): (wait_): (holdself): (findtcb): (release): (qpkt): (idlefn): (valueToTask): (waitWrapper): (qpktWrapper): (readFile): (workfn): (handlerfn): (devfn): (append): (setup): (getQpktcount): (getHoldcount): (main): * APIBench/CurrentAPI/RichardsMostlyC/RichardsMostlyC/richards.js: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (createWorkfn): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Device.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/DeviceTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/DeviceTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[DeviceTask createWithScheduler:device:priority:]): (-[DeviceTask run:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/HandlerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/HandlerTask.m: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. (+[HandlerTask createWithScheduler:device:priority:queue:]): (-[HandlerTask run:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/IdleTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/IdleTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[IdleTask createWithScheduler:priority:]): (-[IdleTask run:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Packet.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Packet.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Packet.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/IdleTask.swift. (+[Packet create:withLink:]): (-[Packet addToQueue:]): (+[DevicePacket create:withLink:]): (+[WorkPacket createWithLink:]): (+[WorkPacket size]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Scheduler.h: Added. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Scheduler.m: Added. (-[Scheduler schedule]): (-[Scheduler addTask:]): (-[Scheduler releaseDevice:]): (-[Scheduler holdCurrent]): (-[Scheduler waitCurrent]): (-[Scheduler queue:]): (-[Scheduler handle:]): (-[Scheduler _queueImpl:packet:]): (-[Scheduler _find:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Task.h: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/Task.m: Added. (+[Task createWithScheduler:priority:queue:]): (-[Task run:]): (-[Task release_]): (-[Task hold]): (-[Task wait]): (-[Task resume]): (-[Task takePacket]): (-[Task checkPriorityAdd:packet:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.m: Added. (+[WorkerTask createWithScheduler:priority:queue:]): (+[WorkerTask context]): (+[WorkerTask constructor]): (-[WorkerTask run:]): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/main.m: Added. (runRichards): (main): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.js. (return.prototype.run): * APIBench/CurrentAPI/RichardsMostlyObjC/RichardsMostlyObjC/richards.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/HandlerTask.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/HandlerTask.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/IdleTask.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/IdleTask.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/Packet.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Packet.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/Scheduler.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Scheduler.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/Task.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Task.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/main.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/main.swift. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.js. * APIBench/CurrentAPI/RichardsMostlySwift/RichardsMostlySwift/richards.swift: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.swift. * APIBench/CurrentAPI/RichardsSomeC/RichardsSomeC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsSomeC/RichardsSomeC/main.m: Added. (WorkerTask_run): (WorkerTask_constructor): (WorkerTask_getProperty): (main): * APIBench/CurrentAPI/RichardsSomeC/RichardsSomeC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. * APIBench/CurrentAPI/RichardsSomeObjC/RichardsSomeObjC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsSomeObjC/RichardsSomeObjC.xcodeproj/xcshareddata/xcschemes/RichardsSomeObjC.xcscheme: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/xcshareddata/xcschemes/RichardsMostlyJS.xcscheme. * APIBench/CurrentAPI/RichardsSomeObjC/RichardsSomeObjC/main.m: Added. (-[WorkerTask initWithScheduler:v1:v2:]): (-[WorkerTask toString]): (-[WorkerTask run:]): (main): * APIBench/CurrentAPI/RichardsSomeObjC/RichardsSomeObjC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/CurrentAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/CurrentAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/xcshareddata/xcschemes/RichardsSomeSwift.xcscheme: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/xcshareddata/xcschemes/RichardsMostlyJS.xcscheme. * APIBench/CurrentAPI/RichardsSomeSwift/RichardsSomeSwift/main.swift: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/main.swift. * APIBench/CurrentAPI/RichardsSomeSwift/RichardsSomeSwift/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/References/RichardsC/RichardsC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/References/RichardsC/RichardsC.xcodeproj/xcshareddata/xcschemes/RichardsC.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/References/RichardsC/RichardsC/richards.c: Added. (pkt): (trace): (schedule): (wait_): (holdself): (findtcb): (release): (qpkt): (idlefn): (workfn): (handlerfn): (devfn): (append): (setup): (getQpktcount): (getHoldcount): (main): * APIBench/References/RichardsC/RichardsC/richards.js: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (createWorkfn): * APIBench/References/RichardsJS/RichardsJS.js: Renamed from PerformanceTests/APIBench/RichardsJS/RichardsJS.js. * APIBench/References/RichardsObjC/RichardsObjC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj. * APIBench/References/RichardsObjC/RichardsObjC.xcodeproj/xcshareddata/xcschemes/RichardsObjC.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/References/RichardsObjC/RichardsObjC/Device.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsObjC/RichardsObjC/DeviceTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsObjC/RichardsObjC/DeviceTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[DeviceTask createWithScheduler:device:priority:]): (-[DeviceTask run:]): * APIBench/References/RichardsObjC/RichardsObjC/HandlerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsObjC/RichardsObjC/HandlerTask.m: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. (+[HandlerTask createWithScheduler:device:priority:queue:]): (-[HandlerTask run:]): * APIBench/References/RichardsObjC/RichardsObjC/IdleTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsObjC/RichardsObjC/IdleTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[IdleTask createWithScheduler:priority:]): (-[IdleTask run:]): * APIBench/References/RichardsObjC/RichardsObjC/Packet.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Packet.swift. * APIBench/References/RichardsObjC/RichardsObjC/Packet.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/IdleTask.swift. (+[Packet create:withLink:]): (-[Packet addToQueue:]): (+[DevicePacket create:withLink:]): (+[WorkPacket createWithLink:]): (+[WorkPacket size]): * APIBench/References/RichardsObjC/RichardsObjC/Scheduler.h: Added. * APIBench/References/RichardsObjC/RichardsObjC/Scheduler.m: Added. (-[Scheduler schedule]): (-[Scheduler addTask:]): (-[Scheduler releaseDevice:]): (-[Scheduler holdCurrent]): (-[Scheduler waitCurrent]): (-[Scheduler queue:]): (-[Scheduler handle:]): (-[Scheduler _queueImpl:packet:]): (-[Scheduler _find:]): * APIBench/References/RichardsObjC/RichardsObjC/Task.h: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. * APIBench/References/RichardsObjC/RichardsObjC/Task.m: Added. (+[Task createWithScheduler:priority:queue:]): (-[Task run:]): (-[Task release_]): (-[Task hold]): (-[Task wait]): (-[Task resume]): (-[Task takePacket]): (-[Task checkPriorityAdd:packet:]): * APIBench/References/RichardsObjC/RichardsObjC/WorkerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsObjC/RichardsObjC/WorkerTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[WorkerTask createWithScheduler:priority:queue:]): (-[WorkerTask run:]): * APIBench/References/RichardsObjC/RichardsObjC/main.m: Added. (runRichards): (main): * APIBench/References/RichardsObjC/RichardsObjC/richards.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsSwift/RichardsSwift.xcodeproj/project.pbxproj: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/project.pbxproj. * APIBench/References/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/References/RichardsSwift/RichardsSwift/DeviceTask.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/DeviceTask.swift. * APIBench/References/RichardsSwift/RichardsSwift/HandlerTask.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/HandlerTask.swift. * APIBench/References/RichardsSwift/RichardsSwift/IdleTask.swift: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/IdleTask.swift. * APIBench/References/RichardsSwift/RichardsSwift/Packet.swift: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Packet.swift. * APIBench/References/RichardsSwift/RichardsSwift/Scheduler.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Scheduler.swift. * APIBench/References/RichardsSwift/RichardsSwift/Task.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Task.swift. * APIBench/References/RichardsSwift/RichardsSwift/WorkerTask.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/WorkerTask.swift. * APIBench/References/RichardsSwift/RichardsSwift/main.swift: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/References/RichardsSwift/RichardsSwift/richards.swift: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/richards.swift. * APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC.xcodeproj/xcshareddata/xcschemes/RichardsMostlyC.xcscheme: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC/richards.c: Added. (pkt): (trace): (schedule): (wait_): (holdself): (findtcb): (release): (qpkt): (idlefn): (valueToTask): (waitWrapper): (qpktWrapper): (readFile): (workfn): (handlerfn): (devfn): (append): (setup): (getQpktcount): (getHoldcount): (main): * APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC/richards.js: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (createWorkfn): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Device.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/DeviceTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/DeviceTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[DeviceTask createWithScheduler:device:priority:]): (-[DeviceTask run:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/HandlerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/HandlerTask.m: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. (+[HandlerTask createWithScheduler:device:priority:queue:]): (-[HandlerTask run:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/IdleTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/IdleTask.m: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. (+[IdleTask createWithScheduler:priority:]): (-[IdleTask run:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Packet.h: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/Packet.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Packet.m: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/IdleTask.swift. (+[Packet create:withLink:]): (-[Packet addToQueue:]): (+[DevicePacket create:withLink:]): (+[WorkPacket createWithLink:]): (+[WorkPacket size]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Scheduler.h: Added. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Scheduler.m: Added. (-[Scheduler schedule]): (-[Scheduler addTask:]): (-[Scheduler releaseDevice:]): (-[Scheduler holdCurrent]): (-[Scheduler waitCurrent]): (-[Scheduler queue:]): (-[Scheduler handle:]): (-[Scheduler _queueImpl:packet:]): (-[Scheduler _find:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Task.h: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/Task.m: Added. (+[Task createWithScheduler:priority:queue:]): (-[Task run:]): (-[Task release_]): (-[Task hold]): (-[Task wait]): (-[Task resume]): (-[Task takePacket]): (-[Task checkPriorityAdd:packet:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.h: Copied from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.m: Added. (+[WorkerTask createWithScheduler:priority:queue:]): (+[WorkerTask context]): (+[WorkerTask constructor]): (-[WorkerTask run:]): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/main.m: Added. (runRichards): (main): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.js. (return.prototype.run): * APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/richards.m: Renamed from PerformanceTests/APIBench/RichardsSwift/RichardsSwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme. * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift. (DeviceTask.create(_:device:priority:)): (DeviceTask.run(_:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/HandlerTask.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/HandlerTask.swift. (HandlerTask.device): (HandlerTask.create(_:device:priority:queue:)): (HandlerTask.run(_:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/IdleTask.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/IdleTask.swift. (IdleTask.create(_:priority:)): (IdleTask.run(_:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/Packet.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Packet.swift. (Packet.addTo(_:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/Scheduler.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Scheduler.swift. (waitCurrent): (handle(_:)): (Scheduler.schedule): (Scheduler.add(_:)): (Scheduler.release_(_:)): (holdCurrent): (queue(_:)): (queueImpl(_:packet:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/Task.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/Task.swift. (Task.run(_:)): (Task.release_): (Task.hold): (Task.wait): (Task.resume): (Task.takePacket): (Task.checkPriorityAdd(_:packet:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift. (WorkerTask.create(_:priority:queue:)): (WorkerTask.run(_:)): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/main.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/main.swift. * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/richards.js: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.js. (return.prototype.run): * APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/richards.swift: Renamed from PerformanceTests/APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.swift. (runRichards): * APIBench/UpcomingAPI/RichardsSomeC/RichardsSomeC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsSomeC/RichardsSomeC/main.m: Added. (WorkerTask_run): (WorkerTask_constructor): (WorkerTask_getProperty): (main): * APIBench/UpcomingAPI/RichardsSomeC/RichardsSomeC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC.xcodeproj/project.pbxproj: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC.xcodeproj/xcshareddata/xcschemes/RichardsSomeObjC.xcscheme: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/xcshareddata/xcschemes/RichardsMostlyJS.xcscheme. * APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC/main.m: Added. (-[WorkerTask initWithScheduler:v1:v2:]): (-[WorkerTask toString]): (-[WorkerTask run:]): (main): * APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC/richards.js: Copied from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/project.pbxproj: Renamed from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj. * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/xcshareddata/xcschemes/RichardsSomeSwift.xcscheme: Renamed from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/xcshareddata/xcschemes/RichardsMostlyJS.xcscheme. * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/main.swift: Renamed from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/main.swift. (run(_:)): (toString): (WorkerTask.toString): (WorkerTask.run(_:)): * APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/richards.js: Renamed from PerformanceTests/APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/api-bench: 2020-10-27 Jer Noble [Mac] Audio and Video element creation up to 300x slower than other browsers https://bugs.webkit.org/show_bug.cgi?id=218206 Reviewed by Eric Carlson. * Media/AudioElementCreation.html: Added. * Media/VideoElementCreation.html: Added. 2020-10-27 Caio Lima Make WebAssembly tests on JetStream 2 be feature detactable https://bugs.webkit.org/show_bug.cgi?id=218198 Reviewed by Saam Barati. This patch is disabling JetStream 2's WASM tests when it's not possible to find WebAssembly constructor on global object. This allows us to run JetStream 2 on devices without WASM support, like 32-bits ports of WebKit. * JetStream2/JetStreamDriver.js: 2020-10-13 Keith Rollin Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support https://bugs.webkit.org/show_bug.cgi?id=217649 Reviewed by Darin Adler. Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_ as "support for compiling WebKit against iOS SDKs". Support for the iOS part of this feature was later removed in several changes, including Bug 139212, Bug 139463 and Bug 144762. However, vestiges have remained for five or six years in the form of MACOSX_DEPLOYMENT_TARGET_macosx. The inclusion of the platform in MACOSX_DEPLOYMENT_TARGET is no longer needed and can be removed. This changes brings most projects in conformance with other projects that don't support including the platform in MACOSX_DEPLOYMENT_TARGET, including WebEditingTester, gtest, WebKitTestRunner, MiniBrowser, and TestWebKitAPI. Along the way, remove a couple of left-over references to macOS 10.16, and a couple of places where [sdk=macosx*] was still being used. With this change, initialization of MACOSX_DEPLOYMENT_TARGET should be consistent across all projects, with two exceptions: WebKitLauncher (which hardcodes it to 10.12) and libwebrtc's copy of googletest (which hardcodes it to 10.4). The reasons for these hard-coded values is not apparent, so leave them be. * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: 2020-10-12 Luming Yin [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building with Xcode 12 on macOS Big Sur SUs https://bugs.webkit.org/show_bug.cgi?id=217602 rdar://70194453 Reviewed by Darin Adler. The previous workaround turns out to be ineffective because we can't set the value of TARGET_MAC_OS_X_VERSION_MAJOR based on a previous value of itself. Introduce a new variable TARGET_MAC_OS_X_VERSION_MAJOR to determine whether we need to explicitly adjust MAC_OS_X_VERSION_MAJOR to 110000. * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: 2020-10-12 Luming Yin [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building with Xcode 12 on macOS Big Sur SUs https://bugs.webkit.org/show_bug.cgi?id=217602 rdar://70194453 Reviewed by Darin Adler. Due to a bug in Xcode (rdar://70185899), Xcode 12.0 and Xcode 12.1 Beta incorrectly includes the minor release number in MAC_OS_X_VERSION_MAJOR, which causes Debug and Release builds of WebKit to be misconfigured when building on macOS Big Sur SUs, leading to webpages failing to load. To work around the Xcode bug, when the MAC_OS_X_VERSION_MAJOR includes the minor version number, drop the minor version number by explicitly setting TARGET_MAC_OS_X_VERSION_MAJOR to 110000. Note: This change should be reverted after is resolved. * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: 2020-10-11 Darin Adler [macOS] Harden more build configurations against macOS versions 11 and higher as well as inclusion of patch versions https://bugs.webkit.org/show_bug.cgi?id=217595 Reviewed by Alexey Proskuryakov. * MediaTime/Configurations/Base.xcconfig: Updated to same idiom used elsewhere. 2020-07-30 Jer Noble [Cocoa] Make DecoderTest run against .mp4 files; add rate-limiting. https://bugs.webkit.org/show_bug.cgi?id=214807 Reviewed by Darin Adler. Look up the UTI type of the specified file, and create the appropriate SourceBufferParser by passing in the ContentType (converted from UTI). Also, add a --rate-limit flag which causes the decompression session to run at the same FPS as the underlying media. * DecoderTest/DecoderTest.xcodeproj/project.pbxproj: * DecoderTest/DecoderTest/main.mm: (main): 2020-07-24 Jer Noble [Cocoa] Add PerformanceTest tool for measuring raw speed of a video decoder https://bugs.webkit.org/show_bug.cgi?id=214723 Reviewed by Darin Adler. * DecoderTest/Configurations/Base.xcconfig: Added. * DecoderTest/Configurations/DebugRelease.xcconfig: Added. * DecoderTest/Configurations/DecoderTest.xcconfig: Added. * DecoderTest/DecoderTest.xcodeproj/project.pbxproj: Added. * DecoderTest/DecoderTest/main.mm: Added. (Function Update macOS Version macros https://bugs.webkit.org/show_bug.cgi?id=214653 Reviewed by Tim Horton. * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: 2020-07-06 Philippe Normand MallocBench: Remove unused private field https://bugs.webkit.org/show_bug.cgi?id=213989 Reviewed by Alex Christensen. The m_argc private field is never used. Remove it. * MallocBench/MallocBench/CommandLine.cpp: * MallocBench/MallocBench/CommandLine.h: 2020-07-01 Saam Barati Make it so JetStream2 can run with the d8 shell https://bugs.webkit.org/show_bug.cgi?id=213856 Reviewed by Keith Miller. We use d8's Realm API to create separate global objects for each test to run in. * JetStream2/JetStreamDriver.js: (Driver.prototype.runCode.globalObject.loadString): (Driver.prototype.runCode): (prototype.async run): * JetStream2/cli.js: * JetStream2/index.html: 2020-06-29 Tadeu Zagallo New API benchmark https://bugs.webkit.org/show_bug.cgi?id=213750 Reviewed by Saam Barati. APIBench is a new benchmark suite to measure the performance of the JavaScriptCore API. It has 4 benchmarks: - RichardsJS: This is imported from Octane and used as a reference so we know how fast the pure JS implementation runs. - RichardsSwift: a Swift port of the benchmark, also used as reference for how fast the pure Swift implementation is. - RichardsMostlyJS: As the name suggests, mostly the same the as the JS benchmark, but here the WorkerTask is implemented in Swift. The API is used to write to the packet being processed and talking to the scheduler. - RichardsMostlySwift: inverse of the above. Mostly the same code from the Swift benchark, but here the WorkerTask is implemented in JavaScript. The API is used to run the JS version of the task and marshaling the Packet by using JSExport. The benchmark can be built and run using the api-bench script, as following: PerformanceTests/APIBench/api-bench WebKitBuild/Release By default, it will build each of the benchmarks and run 5 iterations. The score is calculated as 5000 / geomean([avg of RichardsMostlySwift, avg of RichardsMostlyJS]). The script prints the average for the references and tests and the final score: Results for /Volumes/Data/wk2/OpenSource/WebKitBuild/Release (5 iterations) ================================================================================ References: ---------------------------------------- RichardsJS: 14ms RichardsSwift: 29ms Tests: ---------------------------------------- RichardsMostlyJS: 218ms RichardsMostlySwift: 315ms Score: 19.0804 * APIBench/RichardsJS/RichardsJS.js: Added. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (WorkerTask): (WorkerTask.prototype.run): (WorkerTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/project.pbxproj: Added. * APIBench/RichardsMostlyJS/RichardsMostlyJS.xcodeproj/xcshareddata/xcschemes/RichardsMostlyJS.xcscheme: Added. * APIBench/RichardsMostlyJS/RichardsMostlyJS/main.swift: Added. (run(_:)): (toString): (WorkerTask.toString): (WorkerTask.run(_:)): * APIBench/RichardsMostlyJS/RichardsMostlyJS/richards.js: Added. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj: Added. * APIBench/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme: Added. * APIBench/RichardsMostlySwift/RichardsMostlySwift/DeviceTask.swift: Added. (DeviceTask.create(_:device:priority:)): (DeviceTask.run(_:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/HandlerTask.swift: Added. (HandlerTask.device): (HandlerTask.create(_:device:priority:queue:)): (HandlerTask.run(_:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/IdleTask.swift: Added. (IdleTask.create(_:priority:)): (IdleTask.run(_:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/Packet.swift: Added. (Packet.addTo(_:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/Scheduler.swift: Added. (waitCurrent): (handle(_:)): (Scheduler.schedule): (Scheduler.add(_:)): (Scheduler.release_(_:)): (holdCurrent): (queue(_:)): (queueImpl(_:packet:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/Task.swift: Added. (Task.run(_:)): (Task.release_): (Task.hold): (Task.wait): (Task.resume): (Task.takePacket): (Task.checkPriorityAdd(_:packet:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift: Added. (WorkerTask.create(_:priority:queue:)): (WorkerTask.run(_:)): * APIBench/RichardsMostlySwift/RichardsMostlySwift/main.swift: Added. * APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.js: Added. (return.prototype.run): * APIBench/RichardsMostlySwift/RichardsMostlySwift/richards.swift: Added. (runRichards): * APIBench/RichardsSwift/RichardsSwift.xcodeproj/project.pbxproj: Added. * APIBench/RichardsSwift/RichardsSwift.xcodeproj/xcshareddata/xcschemes/RichardsSwift.xcscheme: Added. * APIBench/RichardsSwift/RichardsSwift/DeviceTask.swift: Added. (DeviceTask.create(_:device:priority:)): (DeviceTask.run(_:)): * APIBench/RichardsSwift/RichardsSwift/HandlerTask.swift: Added. (HandlerTask.device): (HandlerTask.create(_:device:priority:queue:)): (HandlerTask.run(_:)): * APIBench/RichardsSwift/RichardsSwift/IdleTask.swift: Added. (IdleTask.create(_:priority:)): (IdleTask.run(_:)): * APIBench/RichardsSwift/RichardsSwift/Packet.swift: Added. (Packet.addTo(_:)): * APIBench/RichardsSwift/RichardsSwift/Scheduler.swift: Added. (Scheduler.schedule): (Scheduler.add(_:)): (Scheduler.release(_:)): (holdCurrent): (waitCurrent): (queue(_:)): (handle(_:)): (queueImpl(_:packet:)): * APIBench/RichardsSwift/RichardsSwift/Task.swift: Added. (Task.run(_:)): (Task.release): (Task.hold): (Task.wait): (Task.resume): (Task.takePacket): (Task.checkPriorityAdd(_:packet:)): * APIBench/RichardsSwift/RichardsSwift/WorkerTask.swift: Added. (WorkerTask.create(_:priority:queue:)): (WorkerTask.run(_:)): * APIBench/RichardsSwift/RichardsSwift/main.swift: Added. * APIBench/RichardsSwift/RichardsSwift/richards.swift: Added. (runRichards): * APIBench/api-bench: Added. 2020-05-09 Don Olmstead [CMake] Use WEBKIT_EXECUTABLE in MallocBench https://bugs.webkit.org/show_bug.cgi?id=211665 Reviewed by Yusuke Suzuki. Cleanup MallocBench definitions using WEBKIT_EXECUTABLE. Notify developers that MallocBench is unavailable only if bmalloc is being used but the platform does not have the functionality required. * CMakeLists.txt: * MallocBench/MallocBench/CMakeLists.txt: 2020-05-08 Darin Adler Remove no-longer-used PerformanceTests/StitchMarker https://bugs.webkit.org/show_bug.cgi?id=211639 Reviewed by Ryosuke Niwa. Having this test around can be confusing since it contains old versions of many WebKit source files, which will show up when searching the source tree. And since we're not using it, we don't need to keep a copy of it in the tip of tree in the repository. * StitchMarker: Removed. 2020-04-24 Jon Lee MotionMark: add link to bug in about page Unreviewed. * MotionMark/about.html: 2020-04-24 Jon Lee MotionMark: ensure that timestamps are valid during warm up phase of tests https://bugs.webkit.org/show_bug.cgi?id=210640 Reviewed by Said Abou-Hallawa. Ensure that Benchmark._benchmarkStartTimestamp is set during warm up phase. Otherwise it is NaN, which makes the Benchmark.timestamp invalid, which is used by tests like Multiply to drive the animation. When the warm up phase completes, the start timestamp is reset. Update minor version of benchmark with this bug fix, and include version changelog in the about page. For testing, add a parameter that allows for adjusting the length of the warm up phase. It remains at its current default, 100 ms. * MotionMark/about.html: Add section of version changelog. Includes links to webkit.org blog posts. * MotionMark/developer.html: Add parameter for setting warmup length. Remove the Kalman filter parameters, since they should always be fixed. * MotionMark/resources/runner/motionmark.css: Include styles to show version log. * MotionMark/resources/runner/motionmark.js: Factor out default options to a property on window.benchmarkController. Include the default warmup length of 100 ms. (window.benchmarkController.startBenchmark): Refactor to use benchmarkDefaultParameters. * MotionMark/resources/debug-runner/motionmark.js: Ditto. * MotionMark/resources/strings.js: Update version number. * MotionMark/tests/resources/main.js: (_animateLoop): Set _benchmarkTimestamp during the warmup phase. Check the warmup length. The _benchmarkTimestamp variable remains reset when the test begins. 2020-04-07 Saam Barati RAMification should have a way of gathering vmmaps for each test at the end of each run https://bugs.webkit.org/show_bug.cgi?id=210060 Reviewed by Yusuke Suzuki. When I was debugging a memory issue, I needed to gather vmmaps for each RAMification subtest. This patch is checking in the code I wrote to be able to do this. It works by: - Passing in an argument to RAMification saying we want vmmaps at the end of each subtest run. - RAMification invokes jsc with an environment variable that tells the shell to wait for one character of input from stdin before exiting. - The jsc shell also disables the bmalloc scavenger while waiting for input so the vmmap we take from the python runner script represents the "footprint" score of the benchmark. If the scavenger ran, it would end up releasing too much memory for the vmmap to be useful. - The python script runs a vmmap, and then communicates to the jsc process when the vmmap finishes running. * JetStream2/RAMification.py: (parseArgs): (BaseRunner.__init__): (BaseRunner.getResults): (LocalRunner.runOneTest): (main): (main.runTestList): 2020-04-06 Saam Barati Implement 1GB of executable memory on arm64 https://bugs.webkit.org/show_bug.cgi?id=208490 Reviewed by Keith Miller. * JetStream2/JetStreamDriver.js: (Driver.prototype.dumpJSONResultsIfNeeded): (DefaultBenchmark.prototype.updateUIAfterRun): (DefaultBenchmark): (WSLBenchmark.prototype.updateUIAfterRun): (WSLBenchmark): (WasmBenchmark.prototype.updateUIAfterRun): (WasmBenchmark): (Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here): (Driver.prototype.async fetchResources): 2020-03-26 Saam Barati Make it so RAMification can be run with python 3 and 2 and that it recognizes the new JavaScriptCore.framework directory structure https://bugs.webkit.org/show_bug.cgi?id=209636 Reviewed by Yusuke Suzuki. - JavaScriptCore builds now put the jsc shell under JavaScriptCore.framework/Helpers/jsc, not JavaScriptCore.framework/Resources/jsc - It's also helpful to be able to run RAMification with python3.7 and 2.7, since there are some contexts where 3.7 is all we have. * JetStream2/RAMification.py: (frameworkPathFromExecutablePath): (BaseRunner.processLine): (LocalRunner.runOneTest): (main.runTestList): (main): 2020-03-15 Yusuke Suzuki Should not use variable-length-array (VLA) https://bugs.webkit.org/show_bug.cgi?id=209043 Reviewed by Mark Lam. * MediaTime/Configurations/Base.xcconfig: 2020-02-17 Don Olmstead [CMake] Use builtin targets https://bugs.webkit.org/show_bug.cgi?id=205166 Reviewed by Darin Adler. * MallocBench/MallocBench/CMakeLists.txt: 2020-01-28 Sihui Liu IndexedDB: speed up index records deletion https://bugs.webkit.org/show_bug.cgi?id=206196 Reviewed by Brady Eidson. * IndexedDB/basic/index-cursor-delete-2.html: Added. 2020-01-08 Sihui Liu REGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running IndexedDB/large-number-of-inserts.html https://bugs.webkit.org/show_bug.cgi?id=195952 Re-enable the test after recent IDB performance improvement. Reviewed by Alexey Proskuryakov. * Skipped: 2020-01-07 Carlos Garcia Campos [GTK][WPE] Add API to set purpose and hints of active editable element to input methods https://bugs.webkit.org/show_bug.cgi?id=205605 Reviewed by Žan Doberšek. Split ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE and remove the IOS prefix. * StitchMarker/wtf/FeatureDefines.h: 2020-01-06 Mark Lam Convert ASSERT_DISABLED to ASSERT_ENABLED, and fix some tests of NDEBUG that should actually test for ASSERT_ENABLED. https://bugs.webkit.org/show_bug.cgi?id=205776 Reviewed by Saam Barati. * JetStream2/wasm/HashSet.cpp: * StitchMarker/wtf/Assertions.h: * StitchMarker/wtf/DateMath.cpp: (WTF::initializeDates): * StitchMarker/wtf/HashTable.h: * StitchMarker/wtf/Hasher.h: (WTF::StringHasher::addCharacters): * StitchMarker/wtf/NeverDestroyed.h: (WTF::LazyNeverDestroyed::construct): * StitchMarker/wtf/StackBounds.h: (WTF::StackBounds::checkConsistency const): * StitchMarker/wtf/ValueCheck.h: * StitchMarker/wtf/Vector.h: (WTF::minCapacity>::checkConsistency): * StitchMarker/wtf/text/AtomicStringImpl.cpp: * StitchMarker/wtf/text/AtomicStringImpl.h: * StitchMarker/wtf/text/StringCommon.h: (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon): * StitchMarker/wtf/text/StringImpl.h: * StitchMarker/wtf/text/SymbolImpl.h: * StitchMarker/wtf/text/UniquedStringImpl.h: 2020-01-05 Dean Jackson Rename GraphicsContext3D to GraphicsContextGL https://bugs.webkit.org/show_bug.cgi?id=205778 Reviewed by Sam Weinig. Rename all the GraphicsContext3D things to GraphicsContextGL (includes Extensions3D and GRAPHICS_CONTEXT_3D). GraphicsContext3DBase now becomes GraphicsContextGL. GraphicsContext3D is now GraphicsContextGLOpenGL (since it represents the OpenGL implementation of the API). * StitchMarker/wtf/FeatureDefines.h: * StitchMarker/wtf/Platform.h: 2019-12-16 Antti Koivisto Add StyleBench subtest for dynamic media query performance https://bugs.webkit.org/show_bug.cgi?id=205263 Reviewed by Zalan Bujtas. Add a subtest that contains a small number of rules inside min/max-width media queries. The test is executed by resizing the test frame to various widths. * StyleBench/index.html: * StyleBench/resources/style-bench.js: (Random.prototype.chance): (defaultConfiguration): (mediaQueryConfiguration): (predefinedConfigurations): * StyleBench/resources/tests.js: (makeSteps): 2019-10-26 Chris Lord Put OffscreenCanvas behind a build flag https://bugs.webkit.org/show_bug.cgi?id=203146 Reviewed by Ryosuke Niwa. * StitchMarker/wtf/FeatureDefines.h: 2019-10-21 Carlos Alberto Lopez Perez [GTK] Perf test SVG/UnderTheSeeBenchmark.html timeouts. https://bugs.webkit.org/show_bug.cgi?id=203229 Unreviewed gardening. * Skipped: Mark 2 new tests timing out in the GTK perf bot. 2019-10-17 Saam Barati Have a CLI version of JetStream 2 to run on watchOS https://bugs.webkit.org/show_bug.cgi?id=202998 Reviewed by Tadeu Zagallo. This patch adds a CLI version of JS2 to run on watchOS. We run most subtests from the browser version of JS2, but skip a few tests that are particularly long running, like WSL and some of WTB. We also don't run the Wasm tests as we don't JIT on watchOS. Each test runs for fewer iterations in the watch version. 15 is the default iteration count. This benchmark runs in 7 minutes on a Series 4 watch. * JetStream2/JetStreamDriver.js: (getIterationCount): (getWorstCaseCount): (Driver.prototype.async.start): (Driver.prototype.resultsJSON): (Driver.prototype.dumpJSONResultsIfNeeded): (Driver.prototype.async.reportScoreToRunBenchmarkRunner): (DefaultBenchmark): * JetStream2/RexBench/UniPoker/benchmark.js: (Benchmark.prototype.validate): (Benchmark): * JetStream2/watch-cli.js: Added. 2019-10-17 Adrian Perez de Castro [Linux] Avoid usage of in MallocBench https://bugs.webkit.org/show_bug.cgi?id=203109 Reviewed by Carlos Alberto Lopez Perez. * MallocBench/MallocBench/CPUCount.cpp: Only include if the sysctl() function will be used. 2019-10-17 Carlos Alberto Lopez Perez [GTK] Perf test IndexedDB/basic/index-cursor-delete.html timeouts https://bugs.webkit.org/show_bug.cgi?id=203083 Unreviewed gardening. * Skipped: Skip a test that is timing out on the GTK perf bot. 2019-09-24 Caio Lima [BigInt] Add ValueBitRShift into DFG https://bugs.webkit.org/show_bug.cgi?id=192663 Reviewed by Robin Morisset. * BigIntBench/big-int-simple-rshift.js: Added. (bigInt): 2019-09-09 Jon Lee Upload triangles tests for 3D suite in MotionMark https://bugs.webkit.org/show_bug.cgi?id=201606 Reviewed by Simon Fraser. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/tests.js: * MotionMark/tests/3d/resources/webgl.js: * MotionMark/tests/3d/resources/webgpu.js: Added. * MotionMark/tests/3d/triangles-webgl.html: Renamed from Websites/browserbench.org/MotionMark1.1/tests/3d/webgl.html. * MotionMark/tests/3d/triangles-webgpu.html: Copied from PerformanceTests/MotionMark/tests/3d/webgl.html. 2019-08-29 Keith Rollin Update .xcconfig symbols to reflect the current set of past and future product versions. https://bugs.webkit.org/show_bug.cgi?id=200720 Reviewed by Alex Christensen. Remove version symbols related to old OS's we no longer support, ensure that version symbols are defined for OS's we do support. * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: 2019-08-21 Sihui Liu Add some IDB performance tests https://bugs.webkit.org/show_bug.cgi?id=200906 Reviewed by Geoffrey Garen. Add test coverage for IDB performance, and organize IDB tests into two categories. * IndexedDB/basic/index-count-key.html: Added. * IndexedDB/basic/index-count.html: Added. * IndexedDB/basic/index-cursor-advance.html: Added. * IndexedDB/basic/index-cursor-continue.html: Added. * IndexedDB/basic/index-cursor-continuePrimaryKey.html: Added. * IndexedDB/basic/index-cursor-delete.html: Added. * IndexedDB/basic/index-cursor-update.html: Added. * IndexedDB/basic/index-get.html: Added. * IndexedDB/basic/index-multientry.html: Renamed from PerformanceTests/IndexedDB/index-multientry.html. * IndexedDB/basic/objectstore-add.html: Added. * IndexedDB/basic/objectstore-clear.html: Added. * IndexedDB/basic/objectstore-count.html: Added. * IndexedDB/basic/objectstore-cursor-advance.html: Added. * IndexedDB/basic/objectstore-cursor-continue.html: Added. * IndexedDB/basic/objectstore-cursor-delete.html: Added. * IndexedDB/basic/objectstore-cursor-update.html: Added. * IndexedDB/basic/objectstore-cursor.html: Renamed from PerformanceTests/IndexedDB/objectstore-cursor.html. * IndexedDB/basic/objectstore-delete.html: Renamed from PerformanceTests/IndexedDB/index-get.html. * IndexedDB/basic/objectstore-get.html: Added. * IndexedDB/basic/objectstore-put.html: Renamed from PerformanceTests/IndexedDB/objectstore-get.html. * IndexedDB/stress/large-array-keys.html: Renamed from PerformanceTests/IndexedDB/large-array-keys.html. * IndexedDB/stress/large-binary-keys.html: Renamed from PerformanceTests/IndexedDB/large-binary-keys.html. * IndexedDB/stress/large-number-of-inserts-responsiveness.html: Renamed from PerformanceTests/IndexedDB/large-number-of-inserts-responsiveness.html. * IndexedDB/stress/large-number-of-inserts.html: Renamed from PerformanceTests/IndexedDB/large-number-of-inserts.html. * IndexedDB/stress/large-string-keys.html: Renamed from PerformanceTests/IndexedDB/large-string-keys.html. * Skipped: 2019-08-19 Sihui Liu Remove IDB-specific quota https://bugs.webkit.org/show_bug.cgi?id=196545 Reviewed by Youenn Fablet. * IndexedDB/large-binary-keys.html: * IndexedDB/large-string-keys.html: 2019-08-14 Keith Rollin Remove support for macOS < 10.13 https://bugs.webkit.org/show_bug.cgi?id=200694 Reviewed by Youenn Fablet. Update conditionals that reference __MAC_OS_X_VERSION_MIN_REQUIRED and __MAC_OS_X_VERSION_MAX_ALLOWED, assuming that they both have values >= 101300. This means that expressions like "__MAC_OS_X_VERSION_MIN_REQUIRED < 101300" are always False and "__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300" are always True. * StitchMarker/wtf/Platform.h: * StitchMarker/wtf/dependencies/bmalloc/BPlatform.h: * StitchMarker/wtf/text/icu/TextBreakIteratorICU.h: (WTF::TextBreakIteratorICU::TextBreakIteratorICU): (WTF::caretRules): Deleted. 2019-08-06 Michael Saboff Make JSC memory benchmark available on OpenSource https://bugs.webkit.org/show_bug.cgi?id=195012 Reviewed by Saam Barati. This patch upstreams the RAMification memory benchmark to open source. The prior RAMification.py driver script in the Internal directory has been moved here with the device execution code seperated out to a new Internal driver script. As a result, command line argument parsing as well as acting on the resulting argument values has changed. The remote device Runner creates an ArgumentParser object that is passed through main(). In main(), if we have an ArgumentParser, we use it otherwise we create one for benchmarking locally. The arguments object returned from argument parsing is now passed to the Runner constructor so it can extract the settings appropriate for that particular runner. Added some sane argument default values for the JSC command patch and the JetStream2 source directory. Updated the Lua tests to eliminate the testing harness and its overhead, matching what was done in the Internal tree. * JetStream2/LuaJSFight/hello_world.js: (Benchmark.prototype.runIteration): Deleted. (Benchmark): Deleted. * JetStream2/LuaJSFight/list_search.js: (run): Deleted. (Benchmark.prototype.runIteration): Deleted. (Benchmark): Deleted. * JetStream2/LuaJSFight/lists.js: (): Deleted. (Benchmark.prototype.runIteration): Deleted. (Benchmark): Deleted. * JetStream2/LuaJSFight/richards.js: Added. (runRichards): (Scheduler): (Scheduler.prototype.addIdleTask): (Scheduler.prototype.addWorkerTask): (Scheduler.prototype.addHandlerTask): (Scheduler.prototype.addDeviceTask): (Scheduler.prototype.addRunningTask): (Scheduler.prototype.addTask): (Scheduler.prototype.schedule): (Scheduler.prototype.release): (Scheduler.prototype.holdCurrent): (Scheduler.prototype.suspendCurrent): (Scheduler.prototype.queue): (TaskControlBlock): (TaskControlBlock.prototype.setRunning): (TaskControlBlock.prototype.markAsNotHeld): (TaskControlBlock.prototype.markAsHeld): (TaskControlBlock.prototype.isHeldOrSuspended): (TaskControlBlock.prototype.markAsSuspended): (TaskControlBlock.prototype.markAsRunnable): (TaskControlBlock.prototype.run): (TaskControlBlock.prototype.checkPriorityAdd): (TaskControlBlock.prototype.toString): (IdleTask): (IdleTask.prototype.run): (IdleTask.prototype.toString): (DeviceTask): (DeviceTask.prototype.run): (DeviceTask.prototype.toString): (WorkerTask): (WorkerTask.prototype.run): (WorkerTask.prototype.toString): (HandlerTask): (HandlerTask.prototype.run): (HandlerTask.prototype.toString): (Packet): (Packet.prototype.addTo): (Packet.prototype.toString): * JetStream2/LuaJSFight/string_lists.js: (): Deleted. (Benchmark.prototype.runIteration): Deleted. (Benchmark): Deleted. * JetStream2/RAMification.py: Added. (mean): (geomean): (frameworkPathFromExecutablePath): (parseArgs): (parseArgs.optStrToBool): (BaseRunner): (BaseRunner.__init__): (BaseRunner.setup): (BaseRunner.setEnv): (BaseRunner.unsetEnv): (BaseRunner.resetForTest): (BaseRunner.processLine): (BaseRunner.setReturnCode): (BaseRunner.getResults): (LocalRunner): (LocalRunner.__init__): (LocalRunner.runOneTest): (main): (main.runTestList): * JetStream2/__init__.py: Added. 2019-07-23 Keith Rollin Remove rest of NavigatorContentUtils support https://bugs.webkit.org/show_bug.cgi?id=200052 Reviewed by Alex Christensen. Bug 196070 removes most of the support for the never-used NavigatorContentUtils facility. However, there were still a couple of left-over references after that change. This patch sweeps those up. * StitchMarker/wtf/FeatureDefines.h: 2019-07-12 Caio Lima [BigInt] Add ValueBitLShift into DFG https://bugs.webkit.org/show_bug.cgi?id=192664 Reviewed by Saam Barati. * BigIntBench/big-int-simple-lshift.js: Added. 2019-06-28 Konstantin Tokarev Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733 https://bugs.webkit.org/show_bug.cgi?id=199317 Reviewed by Michael Catanzaro. While IconDatabase and all code using it was removed, ENABLE_ICONDATABASE still exists as build option and C++ macro. * StitchMarker/wtf/FeatureDefines.h: 2019-06-27 Beth Dakin Upstream use of MACCATALYST https://bugs.webkit.org/show_bug.cgi?id=199245 rdar://problem/51687723 Reviewed by Tim Horton. * MediaTime/Configurations/SDKVariant.xcconfig: 2019-06-20 Carlos Garcia Campos [GTK] Remove support for GTK2 plugins https://bugs.webkit.org/show_bug.cgi?id=199065 Reviewed by Sergio Villar Senin. * StitchMarker/wtf/Platform.h: 2019-05-08 Caio Lima [BigInt] Add ValueMod into DFG https://bugs.webkit.org/show_bug.cgi?id=186174 Reviewed by Saam Barati. * BigIntBench/big-int-simple-mod.js: Added. 2019-05-06 Saam Barati JS2 should print scores for different categories https://bugs.webkit.org/show_bug.cgi?id=197605 Reviewed by Yusuke Suzuki. * JetStream2/JetStreamDriver.js: (displayCategoryScores): (isInBrowser.document.onkeydown): (Driver.prototype.async.start): (Driver.prototype.async.reportScoreToRunBenchmarkRunner): 2019-04-16 Jon Lee [MotionMark] The text "kkkj" is causing Firefox console warning: `unreachable code after return statement` https://bugs.webkit.org/show_bug.cgi?id=196814 Reviewed by Wenson Hsieh. * MotionMark/resources/extensions.js: (subtract.subtract.sampleY): 2019-04-15 Myles C. Maxfield [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui https://bugs.webkit.org/show_bug.cgi?id=196846 Reviewed by Simon Fraser and Darin Adler. * Layout/system-ui-rebuild-emoji.html: Added. 2019-04-03 Myles C. Maxfield -apple-trailing-word is needed for browser detection https://bugs.webkit.org/show_bug.cgi?id=196575 Unreviewed. * MotionMark/resources/debug-runner/motionmark.css: (#intro .start-benchmark p): 2019-03-27 Ryan Haddad REGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running IndexedDB/large-number-of-inserts.html https://bugs.webkit.org/show_bug.cgi?id=195952 Unreviewed test gardening. * Skipped: Skip the affected test so the bot will finish the run. 2019-03-27 Saam Barati JetStream 2 should not report time values as scores https://bugs.webkit.org/show_bug.cgi?id=196334 Reviewed by Yusuke Suzuki. * JetStream2/JetStreamDriver.js: (toTimeValue): (Driver.prototype.async.reportScoreToRunBenchmarkRunner): 2019-03-27 Saam barati Unreviewed. Fix individual benchmark description urls to go to in-depth.html instead of about.html * JetStream2/JetStreamDriver.js: (Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3): 2019-03-25 Saam barati Update the blurb describing JetStream2 and fix a broken link in the in-depth page. Rubber-stamped by Filip Pizlo. * JetStream2/in-depth.html: * JetStream2/index.html: 2019-03-18 Saam Barati Add a plan file for JetStream 2 https://bugs.webkit.org/show_bug.cgi?id=190734 Reviewed by Mark Lam. Make the delay when starting via run-benchmark longer to allow the page's animation to finish. * JetStream2/JetStreamDriver.js: (Driver.prototype.async.initialize): 2019-03-15 Jon Davis Fixed a bug preventing the overall sore to be displayed on JetStream2 https://bugs.webkit.org/show_bug.cgi?id=195817 Rubber-stamped by Saam Barati. * JetStream2/JetStreamDriver.js: (Driver.prototype.async.start): 2019-03-14 Jon Davis Implement a new design for JetStream2 https://bugs.webkit.org/show_bug.cgi?id=195492 Reviewed by Saam Barati. * JetStream2/JetStream.css: (html): (body): (::selection): (main): (.logo): (.logo .logo-image): (#jetstreams): (#jetstreams svg): (.summary): (.summary + .summary): (.summary:empty): (article, .summary): (h1): (h2, h3, h4, h5, h6): (h4, h5, h6): (p): (h5, h6): (h6): (a:link,): (a:hover,): (#status): (#status label,): (a.button): (#status.loading): (#status.error): (.error h2, .error p): (.error h2): (#result-summary): (#result-summary label): (#result-summary .score): (#result-summary .score .interval): (#results): (.benchmark): (.benchmark h3, .benchmark h4, .benchmark .result, .benchmark label): (.benchmark-running h4, .benchmark-running .result, .benchmark-running label): (.benchmark-done h3, .benchmark-done h4, .benchmark-done .result, .benchmark-done label): (.benchmark h3): (.benchmark-running h3): (.benchmark-done h3): (.benchmark h3 a,): (.benchmark-done h3 a:hover): (.benchmark h4): (.benchmark-done h4): (.benchmark p,): (.benchmark .result): (.benchmark-done .result): (.benchmark label): (.benchmark-done label): (@keyframes fadein): (to): (@keyframes scaledown): (@keyframes shine): (100%): (@keyframes swingin): (@media (max-width: 415px)): (#logo): Deleted. (p.summary): Deleted. (p.summary + p.summary): Deleted. (p.summary:empty): Deleted. (p:first-of-type): Deleted. (#status a:link): Deleted. (.interval): Deleted. (a:link, a:visited): Deleted. (a:link:hover): Deleted. (table): Deleted. (td, th): Deleted. (th): Deleted. (tr:first-child > th:nth-child(even)): Deleted. (tr:nth-child(even):not(:first-child, .benchmark-running)): Deleted. (.result): Deleted. (.benchmark-running): Deleted. (:not(.benchmark-running) .result): Deleted. (.benchmark-running .result): Deleted. (.benchmark-name): Deleted. (.result.category,): Deleted. (.benchmark-name:not(.category):not(.geometric-mean)): Deleted. (.geometric-mean): Deleted. (.benchmark-name:not(:first-child)): Deleted. (.benchmark-name a:link,): Deleted. (.highlighted-result): Deleted. * JetStream2/JetStream2Logo.svg: Added. * JetStream2/JetStreamDriver.js: (updateUI): (Driver.prototype.async.start): (Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3): (Driver.prototype.prepareToRun.text.span): (Driver.prototype.prepareToRun.a.h3.h4): (Driver.prototype.prepareToRun.text.div): (Driver.prototype.async.initialize): (Driver.prototype.async.fetchResources.prototype.statusElement.onclick): (prototype.fetchResources): (prototype.updateUIBeforeRun): (prototype.updateUIAfterRun): (Driver.prototype.async.fetchResources.statusElement.innerHTML.a.href.string_appeared_here): (Driver.prototype.async.fetchResources): (Driver.prototype.prepareToRun.text.tr.id.string_appeared_here.FIXME.link.to.benchmark.explanation.td): Deleted. * JetStream2/clouds.svg: Added. * JetStream2/in-depth.html: * JetStream2/index.html: * JetStream2/jetstreams.svg: Added. 2019-03-11 Caio Lima [ESNext][BigInt] Implement "~" unary operation https://bugs.webkit.org/show_bug.cgi?id=182216 Reviewed by Keith Miller. * BigIntBench/big-int-simple-bit-not.js: Added. 2019-03-04 Saam Barati Add a detailed summary page for JetStream 2 https://bugs.webkit.org/show_bug.cgi?id=195014 Rubber-stamped by Darin Adler. * JetStream2/JetStream.css: (a:link, a:visited): * JetStream2/in-depth.html: Added. 2019-02-08 Saam barati Update JetStream2 CLI to not print "ms" since we now just print the score values https://bugs.webkit.org/show_bug.cgi?id=193981 Reviewed by Yusuke Suzuki. * JetStream2/JetStreamDriver.js: (DefaultBenchmark.prototype.updateUIAfterRun): (DefaultBenchmark): (WSLBenchmark.prototype.updateUIAfterRun): (WSLBenchmark): (WasmBenchmark.prototype.updateUIAfterRun): (WasmBenchmark): 2019-01-31 Sihui Liu REGRESSION (r240358): IndexedDB/large-binary-keys.html and IndexedDB/large-string-keys.html perf tests failing https://bugs.webkit.org/show_bug.cgi?id=193956 Reviewed by Ryosuke Niwa. r240358 sets default IDB quota as 50 MB for single test, we need to increase that for big tests. * IndexedDB/large-binary-keys.html: * IndexedDB/large-string-keys.html: 2019-01-18 Saam Barati Use scores everywhere in JetStream2's UI https://bugs.webkit.org/show_bug.cgi?id=193593 Reviewed by Keith Miller. * JetStream2/JetStreamDriver.js: (DefaultBenchmark.prototype.processResults): (DefaultBenchmark.prototype.get score): (DefaultBenchmark.scoreDescription): (WSLBenchmark.prototype.processResults): (WSLBenchmark.prototype.get score): (WSLBenchmark.scoreDescription): (WasmBenchmark.prototype.processResults): (WasmBenchmark.prototype.get score): (WasmBenchmark.scoreDescription): * JetStream2/index.html: 2019-01-18 Jer Noble SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds https://bugs.webkit.org/show_bug.cgi?id=189553 Reviewed by Tim Horton. * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/SDKVariant.xcconfig: Added. 2019-01-17 Truitt Savell Unreviewed, rolling out r240124. This commit broke an internal build. Reverted changeset: "SDK_VARIANT build destinations should be separate from non- SDK_VARIANT builds" https://bugs.webkit.org/show_bug.cgi?id=189553 https://trac.webkit.org/changeset/240124 2019-01-17 Jer Noble SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds https://bugs.webkit.org/show_bug.cgi?id=189553 Reviewed by Tim Horton. * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/SDKVariant.xcconfig: Added. 2018-12-20 Caio Lima [BigInt] We should enable CSE into arithmetic operations that speculate BigIntUse https://bugs.webkit.org/show_bug.cgi?id=192723 Reviewed by Yusuke Suzuki. * BigIntBench/big-int-cse.js: Added. * BigIntBench/big-int-global-cse.js: Added. * BigIntBench/big-int-licm.js: Added. 2018-12-19 Commit Queue Unreviewed, rolling out r239377. https://bugs.webkit.org/show_bug.cgi?id=192921 broke 32-bit JSC tests (Requested by keith_miller on #webkit). Reverted changeset: "[BigInt] We should enable CSE into arithmetic operations that speculate BigIntUse" https://bugs.webkit.org/show_bug.cgi?id=192723 https://trac.webkit.org/changeset/239377 2018-12-19 Caio Lima [BigInt] We should enable CSE into arithmetic operations that speculate BigIntUse https://bugs.webkit.org/show_bug.cgi?id=192723 Reviewed by Saam Barati. * BigIntBench/big-int-cse.js: Added. * BigIntBench/big-int-global-cse.js: Added. * BigIntBench/big-int-licm.js: Added. 2018-12-17 Suresh Koppisetty Add "-o/--output" option to startup.py and new_tab.py benchmark scripts to save the results in json format. https://bugs.webkit.org/show_bug.cgi?id=192385 Reviewed by Ryosuke Niwa. Sample json output for new tab benchmark script after running for 2 iterations and 2 groups. Values are in milliseconds. { "NewTabBenchmark": { "metrics": { "Time": { "current": [ [ 410.2939453125, 307.81494140625 ], [ 340.616943359375, 265.94384765625 ] ] } } } } Sample json output for startup time benchmark script after running for 2 iterations. Values are in milliseconds. { "StartupBenchmark": { "metrics": { "Time": { "current": [ [ 1415.2099609375, 1439.552978515625 ] ] } } } } * LaunchTime/launch_time.py: * LaunchTime/new_tab.py: (NewTabBenchmark.get_test_name): * LaunchTime/startup.py: (StartupBenchmark.get_test_name): 2018-12-17 Suresh Koppisetty Import FeedbackServer only if "-f/--feedback-in-browser" option is enabled. https://bugs.webkit.org/show_bug.cgi?id=192378 Reviewed by Ryosuke Niwa. FeedbackServer currently depends on Tornado-5.1, which further adds dependency of "singledispatch", "backports-abc" and "futures" python libraries. Importing FeedbackServer only if "-f/--feedback-in-browser" option is enabled will let us run the benchmark scripts without installing any new python libraries. * LaunchTime/launch_time.py: * LaunchTime/new_tab.py: 2018-12-13 Caio Lima [BigInt] Add ValueDiv into DFG https://bugs.webkit.org/show_bug.cgi?id=186178 Reviewed by Yusuke Suzuki. * BigIntBench/big-int-simple-div.js: Added. * BigIntBench/value-div-type-propagation.js: Added. 2018-12-10 Caio Lima [BigInt] Add ValueMul into DFG https://bugs.webkit.org/show_bug.cgi?id=186175 Reviewed by Yusuke Suzuki. * BigIntBench/big-int-simple-mul.js: Added. * BigIntBench/value-mul-type-propagation.js: Added. 2018-11-07 Caio Lima [BigInt] Add support to BigInt into ValueAdd https://bugs.webkit.org/show_bug.cgi?id=186177 Reviewed by Keith Miller. The idea of BigIntBench is to provide a set of microbenchmarks and benchmarks to evaluate how fast BigInt computations are happening on JSC implementation. Now, we are adding microbenchmarks in this set, but the plan is to move these tests to "JSTest/microbenchmarks" when BigInt is enabled by default. After that, the focus of Bigint bench is to provide a set of tests that represents real use cases of BigInt in JS programs. * BigIntBench/big-int-add-prediction-propagation.js: Added. * BigIntBench/big-int-simple-add.js: Added. * BigIntBench/big-int-simple-sub.js: Added. 2018-11-07 Tadeu Zagallo REGRESSION(r237547): Test failures on 32-bit JSC since the JIT was disabled https://bugs.webkit.org/show_bug.cgi?id=191184 Reviewed by Saam Barati. Skip test when the JIT is disabled, it takes too long to run on CLoop. * JetStream/cdjs/main.js: 2018-11-05 Myles C. Maxfield Cache glyph paths and share underline skipping code between all the ports https://bugs.webkit.org/show_bug.cgi?id=191239 Reviewed by Alex Christensen. Measures the performance of drawing a whole lot of underlines * Layout/underline.html: Added. 2018-10-25 Saam Barati Check in corresponding C code in JetStream 2 https://bugs.webkit.org/show_bug.cgi?id=190733 Rubber-stamped by Filip Pizlo. * JetStream2/simple/float-mm.c: Added. * JetStream2/wasm/HashSet.cpp: Added. * JetStream2/wasm/gcc-loops.cpp: Added. * JetStream2/wasm/quicksort.c: Added. * JetStream2/wasm/TSF: Added. * JetStream2/wasm/TSF/build.sh: Added. * JetStream2/wasm/TSF/config.h: Added. * JetStream2/wasm/TSF/gpc.h: Added. * JetStream2/wasm/TSF/gpc_code_gen_util.c: Added. * JetStream2/wasm/TSF/gpc_instruction.c: Added. * JetStream2/wasm/TSF/gpc_instruction_dispatch.gen: Added. * JetStream2/wasm/TSF/gpc_instruction_size.gen: Added. * JetStream2/wasm/TSF/gpc_instruction_stack_effects.gen: Added. * JetStream2/wasm/TSF/gpc_instruction_static_size.gen: Added. * JetStream2/wasm/TSF/gpc_instruction_to_string.gen: Added. * JetStream2/wasm/TSF/gpc_int_common.h: Added. * JetStream2/wasm/TSF/gpc_intable.c: Added. * JetStream2/wasm/TSF/gpc_internal.h: Added. * JetStream2/wasm/TSF/gpc_interpreter.gen: Added. * JetStream2/wasm/TSF/gpc_program.c: Added. * JetStream2/wasm/TSF/gpc_proto.c: Added. * JetStream2/wasm/TSF/gpc_stack_height.c: Added. * JetStream2/wasm/TSF/gpc_threaded.c: Added. * JetStream2/wasm/TSF/gpc_worklist.h: Added. * JetStream2/wasm/TSF/tsf.h: Added. * JetStream2/wasm/TSF/tsf_adaptive_reader.c: Added. * JetStream2/wasm/TSF/tsf_asprintf.c: Added. * JetStream2/wasm/TSF/tsf_atomics.h: Added. * JetStream2/wasm/TSF/tsf_buf_reader.c: Added. * JetStream2/wasm/TSF/tsf_buf_writer.c: Added. * JetStream2/wasm/TSF/tsf_buffer.c: Added. * JetStream2/wasm/TSF/tsf_build_defines.h: Added. * JetStream2/wasm/TSF/tsf_config.h: Added. * JetStream2/wasm/TSF/tsf_config_stub.h: Added. * JetStream2/wasm/TSF/tsf_copier.c: Added. * JetStream2/wasm/TSF/tsf_define_helpers.c: Added. * JetStream2/wasm/TSF/tsf_define_helpers.h: Added. * JetStream2/wasm/TSF/tsf_destructor.c: Added. * JetStream2/wasm/TSF/tsf_error.c: Added. * JetStream2/wasm/TSF/tsf_format.h: Added. * JetStream2/wasm/TSF/tsf_fsdb.c: Added. * JetStream2/wasm/TSF/tsf_fsdb_protocol.c: Added. * JetStream2/wasm/TSF/tsf_fsdb_protocol.h: Added. * JetStream2/wasm/TSF/tsf_generator.c: Added. * JetStream2/wasm/TSF/tsf_gpc_code_gen.c: Added. * JetStream2/wasm/TSF/tsf_indent.h: Added. * JetStream2/wasm/TSF/tsf_internal.h: Added. * JetStream2/wasm/TSF/tsf_internal_config.h: Added. * JetStream2/wasm/TSF/tsf_internal_config_stub.h: Added. * JetStream2/wasm/TSF/tsf_inttypes.h: Added. * JetStream2/wasm/TSF/tsf_io.c: Added. * JetStream2/wasm/TSF/tsf_io_utils.c: Added. * JetStream2/wasm/TSF/tsf_ir.c: Added. * JetStream2/wasm/TSF/tsf_ir.h: Added. * JetStream2/wasm/TSF/tsf_ir_different.c: Added. * JetStream2/wasm/TSF/tsf_ir_different.h: Added. * JetStream2/wasm/TSF/tsf_ir_speed.c: Added. * JetStream2/wasm/TSF/tsf_limits.c: Added. * JetStream2/wasm/TSF/tsf_named_type.c: Added. * JetStream2/wasm/TSF/tsf_native.c: Added. * JetStream2/wasm/TSF/tsf_parser.c: Added. * JetStream2/wasm/TSF/tsf_primitive.c: Added. * JetStream2/wasm/TSF/tsf_ra_type_man.c: Added. * JetStream2/wasm/TSF/tsf_reflect.c: Added. * JetStream2/wasm/TSF/tsf_region.h: Added. * JetStream2/wasm/TSF/tsf_serial_in_man.c: Added. * JetStream2/wasm/TSF/tsf_serial_out_man.c: Added. * JetStream2/wasm/TSF/tsf_serial_protocol.h: Added. * JetStream2/wasm/TSF/tsf_sha1.c: Added. * JetStream2/wasm/TSF/tsf_sha1.h: Added. * JetStream2/wasm/TSF/tsf_sha1_writer.c: Added. * JetStream2/wasm/TSF/tsf_sort.c: Added. * JetStream2/wasm/TSF/tsf_st.c: Added. * JetStream2/wasm/TSF/tsf_st.h: Added. * JetStream2/wasm/TSF/tsf_st_typetable.c: Added. * JetStream2/wasm/TSF/tsf_stream_file_input.c: Added. * JetStream2/wasm/TSF/tsf_stream_file_output.c: Added. * JetStream2/wasm/TSF/tsf_type.c: Added. * JetStream2/wasm/TSF/tsf_type_in_map.c: Added. * JetStream2/wasm/TSF/tsf_type_out_map.c: Added. * JetStream2/wasm/TSF/tsf_type_table.c: Added. * JetStream2/wasm/TSF/tsf_types.h: Added. * JetStream2/wasm/TSF/tsf_util.h: Added. * JetStream2/wasm/TSF/tsf_version.c: Added. * JetStream2/wasm/TSF/tsf_zip_abstract.c: Added. * JetStream2/wasm/TSF/tsf_zip_abstract.h: Added. * JetStream2/wasm/TSF/tsf_zip_attr.c: Added. * JetStream2/wasm/TSF/tsf_zip_reader.c: Added. * JetStream2/wasm/TSF/tsf_zip_writer.c: Added. 2018-10-18 Saam Barati Make JetStream 2 https://bugs.webkit.org/show_bug.cgi?id=187829 Rubber-stamped by Mark Lam. This patch checks in the new JetStream 2 benchmark. JetStream 2 is a new JavaScript and Web Assembly benchmark. JetStream 2's goal is to measure the startup, worst case, and peak throughput performance of the JavaScript engine. JetStream 2 incorporates these previous benchmarks: - JetStream - ARES-6 - Kraken - Web Tooling Benchmark - WasmBench - RexBench JetStream 2 also adds some new benchmarks: - Two tests emphasizing web worker performance. - One test emphasizing Promise, async iteration, and DataView performance. - Two new code load tests. - WSL: a test measuring all kinds of things, especially emphasizing exception performance. * JetStream2: Added. 2018-10-02 Chris Dumez Regression(r236613): Parser/html-parser.html performance test is failing https://bugs.webkit.org/show_bug.cgi?id=190201 Unreviewed, apply the same fix as in r236699 to make sure the iframe is treated as same origin, so that calls to document.open() / document.write() succeed. * Parser/html-parser.html: 2018-10-01 Chris Dumez Regression(r236613): Parser/HTML5-8266-ParseOnly.html performance tests no longer runs https://bugs.webkit.org/show_bug.cgi?id=190174 Reviewed by Ryosuke Niwa. Update iframe's sandbox to use 'allow-same-origin' so that the iframe is treated as same-origin and so that the top frame can call document.open() / document.write() on the subframe. This test was also failing in Firefox without this change. * Parser/HTML5-8266-ParseOnly.html: 2018-08-27 Aditya Keerthi Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER https://bugs.webkit.org/show_bug.cgi?id=188931 Reviewed by Wenson Hsieh. * StitchMarker/wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. 2018-08-23 Don Olmstead [CMake] Have checks are not getting set inside CMake properly https://bugs.webkit.org/show_bug.cgi?id=188901 Reviewed by Michael Catanzaro. Add notification that MallocBench is disabled. * CMakeLists.txt: 2018-08-23 Don Olmstead [CMake] Add HAVE_MALLOC_TRIM definition https://bugs.webkit.org/show_bug.cgi?id=188897 Reviewed by Konstantin Tokarev. MallocBench should only be built on Apple platforms and platforms that have malloc_trim. * CMakeLists.txt: 2018-08-13 Jon Lee Update MotionMark version number https://bugs.webkit.org/show_bug.cgi?id=188535 Reviewed by Said Abou-Hallawa. * MotionMark/resources/strings.js: To 1.1. 2018-08-13 Jon Lee [MotionMark] Update Multiply test https://bugs.webkit.org/show_bug.cgi?id=188532 Reviewed by Said Abou-Hallawa. Update Multiply test to have a larger upper limit of number of particles. Cycle through three different ways of hiding an element. Add new Multiple suite that isolates those components for debugging purposes. * MotionMark/resources/debug-runner/tests.js: * MotionMark/tests/dom/multiply.html: Added. * MotionMark/tests/dom/resources/multiply.js: Added. * MotionMark/tests/master/resources/multiply.js: 2018-08-13 Jon Lee [MotionMark] Update Leaves test https://bugs.webkit.org/show_bug.cgi?id=188530 Reviewed by Said Abou-Hallawa. Update Leaves test to include opacity and scale. Add new Leaves suite that isolate those components for debugging purposes. * MotionMark/resources/debug-runner/tests.js: * MotionMark/tests/dom/leaves.html: * MotionMark/tests/dom/resources/leaves.js: * MotionMark/tests/master/resources/leaves.js: 2018-08-10 Ben Richards Add ability to ignore process prewarming for launch time benchmark https://bugs.webkit.org/show_bug.cgi?id=188462 Reviewed by Ryosuke Niwa. Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming. * LaunchTime/launch_time.py: (DefaultLaunchTimeHandler): (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted. (DefaultLaunchTimeHandler.on_receive_stop_signal): (DefaultLaunchTimeHandler.do_HEAD): (DefaultLaunchTimeHandler.do_GET): (DefaultLaunchTimeHandler.do_POST): (LaunchTimeBenchmark): (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1 (LaunchTimeBenchmark.open_tab): Added option to open a blank tab (LaunchTimeBenchmark.run): * LaunchTime/new_tab.py: (NewTabBenchmark.initialize): (NewTabBenchmark.run_iteration): (NewTabBenchmark.will_parse_arguments): (NewTabBenchmark.did_parse_arguments): (NewTabBenchmark.ResponseHandler.Handler.get_test_page): (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted. (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal): (NewTabBenchmark): * LaunchTime/startup.py: (StartupBenchmark.ResponseHandler.Handler.get_test_page): (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted. (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal): (StartupBenchmark): 2018-08-10 Truitt Savell Unreviewed, rolling out r234750. Caused 185 perf test failures. Reverted changeset: "Add ability to ignore process prewarming for launch time benchmark" https://bugs.webkit.org/show_bug.cgi?id=188462 https://trac.webkit.org/changeset/234750 2018-08-09 Ben Richards Add ability to ignore process prewarming for launch time benchmark https://bugs.webkit.org/show_bug.cgi?id=188462 Reviewed by Ryosuke Niwa. Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming. * LaunchTime/launch_time.py: (DefaultLaunchTimeHandler): (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted. (DefaultLaunchTimeHandler.on_receive_stop_signal): (DefaultLaunchTimeHandler.do_HEAD): (DefaultLaunchTimeHandler.do_GET): (DefaultLaunchTimeHandler.do_POST): (LaunchTimeBenchmark): (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1 (LaunchTimeBenchmark.open_tab): Added option to open a blank tab (LaunchTimeBenchmark.run): * LaunchTime/new_tab.py: (NewTabBenchmark.initialize): (NewTabBenchmark.run_iteration): (NewTabBenchmark.will_parse_arguments): (NewTabBenchmark.did_parse_arguments): (NewTabBenchmark.ResponseHandler.Handler.get_test_page): (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted. (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal): (NewTabBenchmark): * LaunchTime/startup.py: (StartupBenchmark.ResponseHandler.Handler.get_test_page): (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted. (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal): (StartupBenchmark): 2018-07-26 Andy VanWagoner [INTL] Remove INTL sub-feature compile flags https://bugs.webkit.org/show_bug.cgi?id=188081 Reviewed by Michael Catanzaro. Removed old and unused i18n flag. * StitchMarker/wtf/FeatureDefines.h: 2018-07-20 David Fenton REGRESSION (234006) ERROR: Blocked access to external URL http://code.jquery.com/jquery-1.9.1.min.js https://bugs.webkit.org/show_bug.cgi?id=187858 Unreviewed test gardening, skipped test. * Skipped: LaunchTime 2018-07-19 Ben Richards Add benchmark for WebKit process launch times https://bugs.webkit.org/show_bug.cgi?id=186414 Reviewed by Ryosuke Niwa. Added two benchmarks, one for measuring browser new tab launch time and one for browser startup time. * LaunchTime/.gitignore: Added. * LaunchTime/feedback_client.html: Added. Displays benchmark progress in browser * LaunchTime/feedback_server.py: Added. (FeedbackServer): Sends data to feedback_client via websocket (FeedbackServer.__init__): (FeedbackServer._create_app): (FeedbackServer._start_server): (FeedbackServer._send_all_messages): (FeedbackServer.start): (FeedbackServer.stop): (FeedbackServer.send_message): Send a message to the feedback_client (FeedbackServer.wait_until_client_has_loaded): Wait until the feedback_client has opened a websocket connection to the feedback_server (FeedbackServer.MainHandler): Handler factory to create handler that serves feedback_client.html (FeedbackServer.MainHandler.Handler): (FeedbackServer.MainHandler.Handler.get): (FeedbackServer.WSHandler): Handler factory to create handler that sends data to feedback client (FeedbackServer.WSHandler.Handler): (FeedbackServer.WSHandler.Handler.open): On websocket connection opened (FeedbackServer.WSHandler.Handler.on_close): On websocket connection closed * LaunchTime/launch_time.py: Added. (DefaultLaunchTimeHandler): Abstract HTTP request handler for launch time benchmarks (DefaultLaunchTimeHandler.get_test_page): Default test page to be overridden by benchmarks (DefaultLaunchTimeHandler.get_blank_page): (DefaultLaunchTimeHandler.on_receive_stop_time): (DefaultLaunchTimeHandler.do_HEAD): (DefaultLaunchTimeHandler.do_GET): (DefaultLaunchTimeHandler.do_POST): (DefaultLaunchTimeHandler.log_message): Suppresses HTTP logs from SimpleHTTPRequestHandler (LaunchTimeBenchmark): Abstract class which launch time benchmarks inherit from and override methods desired to customize (LaunchTimeBenchmark.__init__): (LaunchTimeBenchmark._parse_browser_bundle_path): Parser for bundle path option (LaunchTimeBenchmark._parse_args): (LaunchTimeBenchmark._run_server): Target function for main server thread (LaunchTimeBenchmark._setup_servers): (LaunchTimeBenchmark._clean_up): (LaunchTimeBenchmark._exit_due_to_exception): (LaunchTimeBenchmark._geometric_mean): (LaunchTimeBenchmark._standard_deviation): (LaunchTimeBenchmark._compute_results): Returns mean and std dev of list of results and pretty prints if should_print=True is specified (LaunchTimeBenchmark._wait_times): Mimic numpy.linspace (LaunchTimeBenchmark.open_tab): Open a browser tab with the html given by self.response_handler.get_test_page (LaunchTimeBenchmark.launch_browser): Open a broser to either the feedback client (if option is set) or a blank page (LaunchTimeBenchmark.quit_browser): (LaunchTimeBenchmark.quit_browser.quit_app): (LaunchTimeBenchmark.quit_browser.is_app_closed): (LaunchTimeBenchmark.close_tab): (LaunchTimeBenchmark.wait): (LaunchTimeBenchmark.log): Print to console and send to feedback client if --feedback-in-browser flag is used (LaunchTimeBenchmark.log_verbose): Only logs if --verbose flag is used (LaunchTimeBenchmark.run): (LaunchTimeBenchmark.group_init): Initialization done before each round of iterations (LaunchTimeBenchmark.run_iteration): (LaunchTimeBenchmark.initialize): Convenience method to be overriden by subclasses which is called at the end of __init__ (LaunchTimeBenchmark.will_parse_arguments): Called before argparse.parse_args to let subclasses add new command line arguments (LaunchTimeBenchmark.did_parse_arguments): Called after argparse.parse_args to let subclass initialize based on command line arguments * LaunchTime/new_tab.py: Added (NewTabBenchmark): (NewTabBenchmark._parse_wait_time): Parser for wait time option (NewTabBenchmark.initialize): (NewTabBenchmark.run_iteration): (NewTabBenchmark.group_init): (NewTabBenchmark.will_parse_arguments): (NewTabBenchmark.did_parse_arguments): (NewTabBenchmark.ResponseHandler): (NewTabBenchmark.ResponseHandler.Handler): (NewTabBenchmark.ResponseHandler.Handler.get_test_page): * LaunchTime/startup.py: Added (StartupBenchmark): This benchmark measures browser startup time and initial page load time (StartupBenchmark.initialize): (StartupBenchmark.run_iteration): (StartupBenchmark.ResponseHandler): (StartupBenchmark.ResponseHandler.Handler): (StartupBenchmark.ResponseHandler.Handler.get_test_page): * LaunchTime/thirdparty/__init__.py: Added. (AutoinstallImportHook): Auto installs tornado package for feedback server (AutoinstallImportHook.__init__): (AutoinstallImportHook._ensure_autoinstalled_dir_is_in_sys_path): (AutoinstallImportHook.find_module): (AutoinstallImportHook._install_tornado): (AutoinstallImportHook.greater_than_equal_to_version): (AutoinstallImportHook._install): (AutoinstallImportHook.get_latest_pypi_url): (AutoinstallImportHook.install_binary): (autoinstall_everything): (get_os_info): 2018-06-25 Jon Lee [MotionMark] Add support for version numbers https://bugs.webkit.org/show_bug.cgi?id=186479 Reviewed by Said Abou-Hallawa. Add support for displaying the version number as well as including it in the JSON results. When loading the front page, script replaces any element with classname version with the version number of the benchmark, which is stored in Strings.version. The JSON structure for the results includes a new version property: { "version": "1.0", "options": { ... }, "data": [ ... ] } When dragging a results file, the version listed will come from the JSON file. Older results will not have had the version property, in which case it will default to "1.0". * MotionMark/index.html: Update title to some other default. Script will update it. Include the version number in the logo title. * MotionMark/developer.html: Ditto. * MotionMark/about.html: Ditto. * MotionMark/resources/runner/motionmark.js: (ResultsDashboard): Update constructor to include version. This is used when serializing results out to JSON, and displaying the results panel in developer mode. (ResultsDashboard._processData): When running the benchmark, include benchmark version string in the results object. (ResultsDashboard.version): (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.sectionsManager.setSectionVersion): Helper function to update the element in the section with the class name version. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, which would be the same as the benchmark version. * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo in a div and include the version string. * MotionMark/resources/strings.js: Add strings for the page title template, and the version. * MotionMark/resources/debug-runner/motionmark.css: * MotionMark/resources/debug-runner/motionmark.js: (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the benchmark version string to the dashboard, which holds the results. (window.benchmarkController.initialize): Populate all DOM elements with class name "version" with the version string. Update the page title. When dragging in JSON results, look for version to pass to the dashboard. If it doesn't exist, default to "1.0". (window.benchmarkController.showResults): When showing results, update the version string based on what is included in the JSON results, instead of the current benchmark version. * MotionMark/resources/debug-runner/tests.js: Update page title template. 2018-06-08 Jon Lee [MotionMark] Rename Suits test files https://bugs.webkit.org/show_bug.cgi?id=186447 Reviewed by Said Abou-Hallawa. * MotionMark/resources/runner/tests.js: * MotionMark/tests/master/resources/suits.js: Renamed from PerformanceTests/MotionMark/tests/master/resources/svg-particles.js. * MotionMark/tests/master/suits.html: Renamed from PerformanceTests/MotionMark/tests/master/svg-particles.html. * MotionMark/tests/svg/suits.html: 2018-06-08 Jon Lee Add sub-tests based on Suits https://bugs.webkit.org/show_bug.cgi?id=186260 Reviewed by Said Abou-Hallawa. Add a new developer Suits suite with sub-tests that isolate parts of each particle. The sub-tests are: - Particles using only clip paths - Particles using only shapes - Particles that have no gradients - Particles that have no rotation - Particles that do not move around at all (but all of the physics calculations are still performed) * MotionMark/resources/debug-runner/tests.js: * MotionMark/tests/master/resources/svg-particles.js: Rename the stage, particle, and benchmark to "Suits" from "SVG". Change SuitsParticle so that we guarantee 50% clip and shape paths rather than relying on random chance. Wrap a check around creation of the gradient element, and use a simple fill color when we aren't using a gradient. * MotionMark/tests/svg/suits.html: Added. * MotionMark/tests/svg/suits.js: Added. Look for the query string and set the particle based on what is selected. 2018-06-06 Jon Lee Allow the ramp controller to run tests that take less time than the initial ramp-up phase https://bugs.webkit.org/show_bug.cgi?id=186257 Reviewed by Said Abou-Hallawa. * MotionMark/tests/resources/main.js: Extend the desired end timestamp when ramp-up occurs. Previously the controller assumed that the duration of the test was always longer than the time it took to figure out the order of magnitude of particles to render. When that range is determined, the end timestamp is then extended. If the duration is too short, the controller would throw an exception. The fix is to continue extending the timestamp every time the order of magnitude tiers up. In general testing with really short durations isn't practical, but sometimes it is desired for debugging. To avoid confusion of the private variables, I renamed Benchmark._startTimestamp to Benchmark._benchmarkStartTimestamp, to disambiguate from Controller._startTimestamp. Benchmark._startTimestamp is set once and never changed, after the initial 100ms warm-up. Controller._startTimestamp is initialized to 0 (which means "not initialized"), and then after the warm up is complete, set in Controller.start() to the same wall clock timestamp, and never changed afterwards. 2018-06-06 Jon Lee Remove unneeded data processing in MotionMark https://bugs.webkit.org/show_bug.cgi?id=186256 Reviewed by Said Abou-Hallawa. Remove calculation of average frame rate based on multiple samples at a given complexity. It is not used in the calculation of the score, and is just extra work to do at the end of a test. * MotionMark/developer.html: Remove options to show average data and regression based on that data. * MotionMark/resources/debug-runner/graph.js: Remove data. Update the time graph that shows the relationship between the break point in the regression against the complexity graph. * MotionMark/resources/debug-runner/motionmark.css: Make the confidence intervals easier to see. * MotionMark/resources/runner/motionmark.js: Simplify score calculation now that we are only calculating regressions on the raw data. We were calculating it based on the averages, but that was just for analysis, and not used in the actual score. Get rid of the |complexitySamples| local variable. * MotionMark/resources/strings.js: Remove unneeded string constant. * MotionMark/tests/resources/main.js: (processSamples): Refactor so that more of it can be shared between Controller and RampController. It also avoids processing the raw samples (controllerSamples) twice for the ramp controller. (_processComplexitySamples): Remove logic to calculate averages based on complexity. (_processMarks): Split this out from the old processSamples. (_processControllerSamples): Split this out from the old processSamples. 2018-06-06 Jon Lee Strip out more characters when creating permalinks https://bugs.webkit.org/show_bug.cgi?id=186259 Reviewed by Said Abou-Hallawa. Tests and suites may have names that make permalinks to the tests less readable when shared. Expand the set of characters that are stripped out of the names. * MotionMark/resources/debug-runner/motionmark.js: Refactor to call stripUnwantedCharactersForURL. For existing links, decode the suite and test names. * MotionMark/resources/extensions.js: (Utilities.stripUnwantedCharactersForURL): Rename from stripNonASCIICharacters. Remove any non-alphanumeric character. 2018-06-04 Jon Lee Remove unnecessary MotionMark controllers https://bugs.webkit.org/show_bug.cgi?id=186255 Reviewed by Said Abou-Hallawa. Get rid of the ramp30 and the fixed-with-a-step controllers, which aren't used for testing or debugging. * MotionMark/developer.html: Move the "ramp" option as first, since that is the default controller for the benchmark. * MotionMark/resources/debug-runner/motionmark.js: * MotionMark/resources/runner/motionmark.js: Added missing copyright notice. * MotionMark/tests/resources/main.js: 2018-05-25 Myles C. Maxfield Improve the performance of Font::canRenderCombiningCharacterSequence() https://bugs.webkit.org/show_bug.cgi?id=185933 Reviewed by Ryosuke Niwa. * Layout/ComplexLongUnique.html: Added. 2018-05-25 Saam Barati Have a memory test where we can validate JSCs mini memory mode https://bugs.webkit.org/show_bug.cgi?id=185932 Reviewed by Mark Lam. We add a directory here with the contents of the testmem benchmark. To run it, use `Tools/Scripts/run-testmem`. To add new tests in the future, you just need to add JS files to this directory. * testmem: Added. * testmem/air.js: Added. * testmem/base64.js: Added. * testmem/basic.js: Added. * testmem/box2d.js: Added. * testmem/crypto-md5.js: Added. * testmem/date-format-tofte.js: Added. * testmem/earley-boyer.js: Added. * testmem/hash-map.js: Added. * testmem/regex-dna.js: Added. * testmem/splay.js: Added. * testmem/tagcloud.js: Added. 2018-05-22 Ryan Haddad Unreviewed, rolling out r232052. Breaks internal builds. Reverted changeset: "Use more C++17" https://bugs.webkit.org/show_bug.cgi?id=185176 https://trac.webkit.org/changeset/232052 2018-05-21 Yusuke Suzuki Use more C++17 https://bugs.webkit.org/show_bug.cgi?id=185176 Reviewed by JF Bastien. * MallocBench/MallocBench.xcodeproj/project.pbxproj: * MediaTime/Configurations/Base.xcconfig: * MediaTime/MediaTime.xcodeproj/project.pbxproj: 2018-04-30 Myles C. Maxfield Improve the performance of FontCascadeDescription's effectiveFamilies https://bugs.webkit.org/show_bug.cgi?id=184720 Reviewed by Simon Fraser. This performance test calls SystemFontDatabase::systemFontCascadeList() around 2,000,000 times (before this patch is applied), which is roughly equivalent to the page we found the performance problem on. The calling pattern is roughly equivalent in this test. * Layout/system-ui.html: Added. 2018-03-08 Antti Koivisto Update StyleBench version number in page title to 0.3 * StyleBench/index.html: There has been a bunch of changes, most notably the addition of attribute selector test step. 2018-02-16 Dean Jackson Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa https://bugs.webkit.org/show_bug.cgi?id=182894 Reviewed by Tim Horton. Rename OPENGL_ES_2 to OPENGL_ES. * StitchMarker/wtf/Platform.h: 2018-02-09 Ryosuke Niwa Make run-perf-tests work with Speedometer 2.0 and re-enable the test https://bugs.webkit.org/show_bug.cgi?id=182088 Reviewed by Antti Koivisto. This patch updates the test harness to report new metrics of Speedometer 2.0. Replaced the total time by the geometric mean of the time spent in each suite, and added scores as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template to support "Score" metric with "pt" as its unit. * Skipped: Unskipped the test. * Speedometer/resources/benchmark-report.js: (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument to report the score in addition to time. Also report the geomean of time instead of the total time. (window.benchmarkClient.willStartFirstIteration): Report the geomean of time. (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests. (window.benchmarkClient.didFinishLastIteration): Report the scores. 2018-02-09 Ross Kirsling Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port. https://bugs.webkit.org/show_bug.cgi?id=182623 Reviewed by Alex Christensen. * StitchMarker/wtf/Platform.h: Simplify #if. 2018-02-01 Antti Koivisto StyleBench: Attribute selectors and other improvements https://bugs.webkit.org/show_bug.cgi?id=182387 Reviewed by Joseph Pecoraro. - Add some attributes to elements in all tests - Add some attribute selectors to stylesheets in all tests - Also add some * selectors to all stylesheets. - Add attribute mutation step to all suites - Make test steps do more mutations (25->100) and reduce the number of steps to keep testing time in check. Too fast steps were running into timer resolution limits. * StyleBench/resources/style-bench.js: (defaultConfiguration): (prototype.randomAttributeName): (prototype.randomAttributeValue): (prototype.randomAttributeSelector): (prototype.makeCompoundSelector): (prototype.makeElement): (prototype.addClasses): (prototype.removeClasses): (prototype.mutateAttributes): (prototype.async.runForever): * StyleBench/resources/tests.js: (makeSteps): (makeSuite): 2018-02-01 Geoffrey Garen Make MallocBench easier for non-WebKit engineers to run https://bugs.webkit.org/show_bug.cgi?id=182415 Reviewed by Saam Barati. * MallocBench/MallocBench.xcodeproj/project.pbxproj: Use c++14 so we can make_unique. Specify that we support all Darwin platforms so you can test them. * MallocBench/run-malloc-benchmarks: Specify the path to MallocBench and libmbmalloc explicitly, rather than computing them implicitly using webkitdirs. Non-WebKit folks don't have the directory structure required by webkitdirs. Remove Linux-specific and cmake-specific behaviors because we only needed them in the world of implicit path computation. 2018-01-31 Ryosuke Niwa Make run-perf-tests work with StyleBench and re-enable it https://bugs.webkit.org/show_bug.cgi?id=182322 Reviewed by Antti Koivisto. This patch updates the test harness to report new metrics of StyleBench. Replaced the total time by the geometric mean of the time spent in each suite, and added scores as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template to support "Score" metric with "pt" as its unit. * Skipped: Unskipped the test. * StyleBench/resources/benchmark-report.js: (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument to report the score in addition to time. Also report the geomean of time instead of the total time. (window.benchmarkClient.willStartFirstIteration): Report the geomean of time. (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests. (window.benchmarkClient.didFinishLastIteration): Report the scores. * resources/results-template.html: Added "Score" as a metric and "pt" as its unit. * resources/runner.js: (PerfTestRunner..finish): Ditto. 2018-01-30 Ryosuke Niwa StyleBench: Generate more mutation steps https://bugs.webkit.org/show_bug.cgi?id=182291 Rubber-stamped by Antti Koivisto Use zero-based index instead of one-based index. * StyleBench/resources/tests.js: (makeSteps): 2018-01-30 Antti Koivisto StyleBench: Generate more mutation steps https://bugs.webkit.org/show_bug.cgi?id=182291 Reviewed by Ryosuke Niwa. The test should be doing multiple rounds of mutations in a single document to test what is supposed to test (like it did before r227756). This also makes test results more stable and less dependent on possible first-time costs. * StyleBench/resources/benchmark-runner.js: Adjust correctionFactor to match the new steps count. With 1.5 Firefox is ~72rpm. * StyleBench/resources/tests.js: (makeSteps): Generate 10 rounds of class/element mutation steps. Give each generated step unique name so reporting works. Make individual steps do fewer mutations. 2018-01-29 Antti Koivisto StyleBench: Remove : from a test name https://bugs.webkit.org/show_bug.cgi?id=182258 Reviewed by Ryosuke Niwa. It breaks reporting. * StyleBench/resources/style-bench.js: (nthPseudoClassConfiguration): 2018-01-29 Ryosuke Niwa Temporarily skip StyleBench until webkit.org/b/182088 is fixed. * Skipped: 2018-01-29 Ryosuke Niwa Make StyleBench compatible with run-benchmark and run-perf-tests https://bugs.webkit.org/show_bug.cgi?id=182262 Reviewed by Antti Koivisto. Copied resource files referenced from Speedometer directory since run-benchmark needs to be able to checkout each benchmark separately. Removed the code to create tests of the same name five times in makeSteps since this won't be compatible with either run-benchmark or run-perf-tests. * StyleBench/index.html: Removed the code to show warnings for local files since run-benchmark doesn't use HTTP server in WebDriver mode. * StyleBench/resources/benchmark-report.js: Copied from resources/benchmark-report.js. * StyleBench/resources/benchmark-runner.js: Copied from resources/benchmark-runner.js. (BenchmarkRunner.prototype._finalize): Use the correction factor of 8 instead of 5 in StyleBench. * StyleBench/resources/gauge.png: Copied from resources/gauge.png. * StyleBench/resources/gauge@2x.png: Copied from resources/gauge@2x.png. * StyleBench/resources/main.css: Copied from resources/main.css. * StyleBench/resources/main.js: Copied from resources/main.js. * StyleBench/resources/tests.js: (makeSteps): Only make each test once. 2018-01-26 Chris Nardi Addressing post-review comments after r226614 https://bugs.webkit.org/show_bug.cgi?id=182151 Reviewed by Myles C. Maxfield. * StitchMarker/wtf/text/StringImpl.h: (WTF::isSpaceOrNewline): * StitchMarker/wtf/text/TextBreakIterator.cpp: (WTF::numCodeUnitsInGraphemeClusters): * StitchMarker/wtf/text/TextBreakIterator.h: 2018-01-22 Antti Koivisto StyleBench: Separate test for :nth pseudo classes https://bugs.webkit.org/show_bug.cgi?id=181932 Reviewed by Sam Weinig. Optimization strategies for nth are different from other structural pseudo classes (:first-child etc). Move them to a separate test. * StyleBench/resources/style-bench.js: (structuralPseudoClassConfiguration): (nthPseudoClassConfiguration): Add a new configuration. (predefinedConfigurations): (pseudoClassConfiguration): Deleted. 2018-01-17 Ryosuke Niwa Temporarily skip Speedometer until we fix the metrics. * Skipped: 2018-01-16 Alex Christensen Fix Mac CMake build after r222900 * MallocBench/MallocBench/CMakeLists.txt: The mbmalloc target doesn't exist if we're not in developer mode, so only use it if we are. 2018-01-09 Ryosuke Niwa Speedometer 2.0: Update the About page. https://bugs.webkit.org/show_bug.cgi?id=175918 Reviewed by Keith Miller. Updated the about page for Speedometer 2.0. * Speedometer/index.html: == Rolled over to ChangeLog-2018-01-01 ==