haikuwebkit/PerformanceTests/ChangeLog

3333 lines
146 KiB
Plaintext
Raw Permalink Normal View History

2021-08-06 Michael Catanzaro <mcatanzaro@gnome.org>
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 <cathiechen@igalia.com>
[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 <rego@igalia.com>
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 <said@apple.com>
[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 <mmaxfield@apple.com>
[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:
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 PerformanceTests: * JetStream2/RAMification.py: * JetStream2/RexBench/FlightPlanner/convert-nfdc.py: * RexBench/FlightPlanner/convert-nfdc.py: Source/JavaScriptCore: * wasm/generateWasmB3IRGeneratorInlinesHeader.py: Source/WebCore: No new tests. * Modules/webgpu/WHLSL/WHLSLBuildStandardLibraryFunctionMap.py: Tools: * CISupport/build-webkit-org/loadConfig.py: (getTagsForBuilder): * CISupport/build-webkit-org/steps.py: (RunGLibAPITests.commandComplete): (RunWebDriverTests.commandComplete): * CISupport/ews-app/ews/common/bugzilla.py: (BugzillaBeautifulSoup._parse_attachment_ids_request_query): * CISupport/ews-app/ews/common/buildbot.py: (Buildbot._get_display_name_from_builder_name): * CISupport/ews-build/loadConfig.py: (getTagsForBuilder): * CISupport/ews-build/steps.py: (CleanUpGitIndexLock.start): (FindModifiedLayoutTests): (BuildLogLineObserver.__init__): (PushCommitToWebKitRepo): * CISupport/ews-build/steps_unittest.py: * Scripts/ic-stats.py: * Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py: (Svn): * Scripts/webkitpy/common/checkout/changelog.py: (parse_bug_id_from_changelog): (ChangeLogEntry): (update_with_unreviewed_message): (set_reviewer): * Scripts/webkitpy/common/checkout/diff_parser.py: (git_diff_to_svn_diff): * Scripts/webkitpy/common/checkout/diff_test_data.py: * Scripts/webkitpy/common/checkout/scm/commitmessage.py: (_first_non_empty_line_after_index): (CommitMessage.description): * Scripts/webkitpy/common/checkout/scm/git.py: (Git.commit_success_regexp): (Git.timestamp_of_revision): (Git.git_commit_from_svn_revision): * Scripts/webkitpy/common/checkout/scm/scm.py: (SCM.strip_r_from_svn_revision): * Scripts/webkitpy/common/checkout/scm/svn.py: (SVN.commit_success_regexp): (SVN.revisions_changing_file): * Scripts/webkitpy/common/checksvnconfigfile.py: (check): * Scripts/webkitpy/common/config/contributionareas.py: (ContributionAreas._split_camelcase): * Scripts/webkitpy/common/config/urls.py: * Scripts/webkitpy/common/find_files_unittest.py: (TestWinNormalize.assert_filesystem_normalizes): * Scripts/webkitpy/common/net/bugzilla/bug.py: (Bug.commit_revision): * Scripts/webkitpy/common/net/bugzilla/bugzilla.py: (BugzillaQueries._parse_attachment_ids_request_query): (Bugzilla._parse_bug_id_from_attachment_page): (Bugzilla._parse_attachment_id_from_add_patch_to_bug_response): (Bugzilla._check_create_bug_response): * Scripts/webkitpy/common/net/buildbot/buildbot.py: (BuildBot._parse_current_build_cell): * Scripts/webkitpy/common/net/credentials.py: (Credentials._parse_security_tool_output): * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py: (ParsedJSONResultsTest): * Scripts/webkitpy/common/system/crashlogs.py: (CrashLogs.get_timestamp_from_log): * Scripts/webkitpy/common/system/crashlogs_unittest.py: * Scripts/webkitpy/common/system/platforminfo.py: (PlatformInfo.available_sdks): * Scripts/webkitpy/common/system/user.py: (User._wait_on_list_response): * Scripts/webkitpy/common/watchlist/watchlistparser.py: (WatchListParser._rule_definitions_as_set): * Scripts/webkitpy/layout_tests/models/test_expectations.py: (TestExpectationParser): (TestExpectationParser._parse_modifiers): (TestExpectationParser._tokenize_line): * Scripts/webkitpy/performance_tests/perftest.py: (PerfTest): * Scripts/webkitpy/port/base.py: (Port._natural_sort_key): * Scripts/webkitpy/port/driver.py: (DriverOutput): (Driver._check_for_driver_timeout): (Driver._check_for_driver_crash_or_unresponsiveness): * Scripts/webkitpy/port/image_diff.py: (ImageDiffer._read): * Scripts/webkitpy/port/win.py: (WinPort.write_registry_value): * Scripts/webkitpy/pytest.ini: * Scripts/webkitpy/style/checker.py: (CheckerDispatcher._should_skip_file_path): * Scripts/webkitpy/style/checkers/changelog.py: (ChangeLogChecker.check_entry): * Scripts/webkitpy/style/checkers/cmake.py: (CMakeChecker._process_line): (CMakeChecker._check_no_space_cmds): (CMakeChecker._check_one_space_cmds): (CMakeChecker._check_non_lowercase_cmd): (CMakeChecker._check_list_order): * Scripts/webkitpy/style/checkers/cpp.py: (FileInfo.repository_name): (check_for_non_standard_constructs): (check_spacing): (check_language): * Scripts/webkitpy/style/checkers/cpp_unittest.py: * Scripts/webkitpy/style/checkers/jstest.py: (map_functions_to_dict): (strip_trailing_blank_lines_and_comments): * Scripts/webkitpy/style/checkers/messagesin.py: (MessagesInChecker.check_WTF_prefix): * Scripts/webkitpy/style/patchreader.py: (PatchReader.check): * Scripts/webkitpy/test/runner.py: * Scripts/webkitpy/test/runner_unittest.py: (FakeLoader.__init__): * Scripts/webkitpy/tool/commands/analyzechangelog.py: (AnalyzeChangeLog._enumerate_changelogs): * Scripts/webkitpy/tool/commands/queries.py: (PrintBaselines.__init__): (FindResolvedBugs.execute): * Scripts/webkitpy/tool/commands/upload.py: (MarkBugFixed._determine_bug_id_and_svn_revision): * Scripts/webkitpy/tool/steps/promptforbugortitle.py: (PromptForBugOrTitle.run): * Scripts/webkitpy/w3c/test_converter.py: (_W3CTestConverter.__init__): (_W3CTestConverter.read_webkit_prefixed_css_property_list): (_W3CTestConverter.legacy_read_webkit_prefixed_css_property_list): * Scripts/webkitpy/w3c/test_parser.py: (TestParser.support_files): * lldb/lldb_dump_class_layout.py: (LLDBDebuggerInstance._get_first_file_architecture): Websites/browserbench.org: * JetStream2.0/RexBench/FlightPlanner/convert-nfdc.py: Canonical link: https://commits.webkit.org/237995@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277853 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-21 10:16:11 +00:00
2021-05-21 Sam Sneddon <gsnedders@apple.com>
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 <mmaxfield@apple.com>
[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:
Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards https://bugs.webkit.org/show_bug.cgi?id=221614 <rdar://problem/74396781> Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-19 Reviewed by David Kilzer. PerformanceTests: Add -Wthread-safety to compile flags. * DecoderTest/Configurations/Base.xcconfig: Source/bmalloc: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/JavaScriptCore: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WebCore: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WebCore/PAL: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WebInspectorUI: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WebKit: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WebKitLegacy/mac: Add -Wthread-safety to compile flags. * Configurations/Base.xcconfig: Source/WTF: Implement rudimentary support for clang thread safety analysis. The added macros can be used to declare which member variables or global variables are locked by which mutexes. The compiler will check statically that the mutexes are held correctly. The checking is intra procedural, not global. * Configurations/Base.xcconfig: Add -Wthread-safety to compile flags. * wtf/CheckedLock.h: Added. Add CheckedLock, a Lock variant that is amenable to static analysis. Add a Locker specialization for CheckedLock that is amenable to static analysis. Locker<CheckedLock> is a std::scoped_lock. The scoped_lock cannot be aliased, since it appears that (Apple's) libcxx is not compiled with thread safety analysis support enabled by default. New types are needed due Locker move constructor and conditional locking. The Locker has default usage pattern of: auto locker = holdLock(m_lock); This forces dynamism that removes the possibility of simple statical analysis that thread safety analysis capabilities "mutex" and "scoped_lock" currently implement. Most likely large fraction of call sites is due to historical lack of CTAD and as such can be converted to less general form. Once the pattern is not used by default, CheckedLock can be deleted and the move dynamism bits of Locker can be moved to some more specific type ("UncheckedLocker"). * wtf/ThreadSafetyAnalysis.h: Added. Add macro wrappers around clang "mutex" and "scoped_lock" capability attributes. Tools: * TestWebKitAPI/Configurations/Base.xcconfig: Add -Wthread-safety to compile flags. * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/CheckedLock.cpp: Added. (TestWebKitAPI::TEST): Implement a test for testing that CheckedLock compiles. Canonical link: https://commits.webkit.org/236729@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276247 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-04-19 13:12:23 +00:00
2021-04-19 Kimmo Kinnunen <kkinnunen@apple.com>
Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards
https://bugs.webkit.org/show_bug.cgi?id=221614
<rdar://problem/74396781>
Reviewed by David Kilzer.
Add -Wthread-safety to compile flags.
* DecoderTest/Configurations/Base.xcconfig:
[css-flexbox] CDC COVID Vaccine Tracker: Safari garbles data table https://bugs.webkit.org/show_bug.cgi?id=222581 Reviewed by Zalan Bujtas. PerformanceTests: * Layout/nested-flexboxes-percentage-flex-basis.html: Added. Source/WebCore: With nested flexboxes in which the flex-basis is a percentage the current code that stretches the item forces a relayout of the children because it thinks it has percentage height descendants. That happens because we call computePercentageLogicalHeights() with a mock percentage length to check whether a size is definite and that call performs the addPercentageHeightDescendants() call. We should avoid calling the latter in those cases as we're just trying to figure out whether we can compute the flex-basis used value or not. Adding a new parameter to the aforementioned method so that the percentage height descendants map could be left untouched in those cases where we just want to test size definiteness. Apart from making the implementation more correct this brings some performance improvements for the cases described in the first paragraph as it can be seen in the provided performance test (24.5% of improvement). * rendering/RenderBox.cpp: (WebCore::RenderBox::computePercentageLogicalHeight const): * rendering/RenderBox.h: * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::canComputePercentageFlexBasis const): (WebCore::RenderFlexibleBox::childMainSizeIsDefinite const): (WebCore::RenderFlexibleBox::useChildOverridingMainSizeForPercentageResolution): * rendering/RenderFlexibleBox.h: LayoutTests: * TestExpectations: Unskipped a WPT test which is now passing. Canonical link: https://commits.webkit.org/236438@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275873 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-04-13 09:14:23 +00:00
2021-04-12 Sergio Villar Senin <svillar@igalia.com>
[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.
Laying out complex text in columns is O(n^2) https://bugs.webkit.org/show_bug.cgi?id=223363 <rdar://problem/68279075> Reviewed by Zalan Bujtas. PerformanceTests: * Layout/complex-columns.html: Added. Source/WebCore: When we perform line breaking in complex text, we create a persistent TextLayout object for the entire element, and ask it questions about how wide various substrings are in the element. Our calling pattern is like this: layout.width(a, b); layout.width(b, c); layout.width(c, d); layout.width(d, e); The implementation of TextLayout::width() is like this: m_controller->advance(before); float beforeWidth = m_controller->runWidthSoFar(); m_controller->advance(after); float afterWidth = m_controller->runWidthSoFar(); This means that ComplexTextController is getting called twice in a row with the same position. However, the implementation of ComplexTextController::advance() has: if (offset <= m_currentCharacter) { … m_glyphInCurrentRun = 0; … } The condition is true here, because it's getting called twice in a row with the same condition. However, when the condition is true, we throw away all the previous work we've done during previous calls to ComplexTextController::advance(). This patch causes an 18x speedup on the performance test. Performance Test: Layout/complex-columns.html * platform/graphics/ComplexTextController.cpp: (WebCore::ComplexTextController::advance): Canonical link: https://commits.webkit.org/235412@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@274567 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-17 17:23:51 +00:00
2021-03-17 Myles C. Maxfield <mmaxfield@apple.com>
Laying out complex text in columns is O(n^2)
https://bugs.webkit.org/show_bug.cgi?id=223363
<rdar://problem/68279075>
Reviewed by Zalan Bujtas.
* Layout/complex-columns.html: Added.
2021-03-09 Myles C. Maxfield <mmaxfield@apple.com>
MotionMark scores are super sensitive to a single long frame
https://bugs.webkit.org/show_bug.cgi?id=220847
<rdar://problem/74152743>
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 <zalan@apple.com>
[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 <commit-queue@webkit.org>
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
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 <rdar://problem/74537782> Reviewed by Simon Fraser. PerformanceTests: New performance test for nested column flexboxes with percentage heights. * Layout/nested-column-flexboxes-relative-height.html: Added. Source/WebCore: The problem was that we were doing the initial layout for the children of the flex container twice in those cases where the child inline axis was not the main axis (for example with column flex containers in horizontal writing modes). Refactored the code (specially the way we clear overriding sizes) so that we only do it once. This saves tons of layouts in pages with nested column flexboxes with relative heights. No new tests as there is no change in functionality, we're removing duplicate extra layouts. We're however adding a new performance test for column flexboxes with percentage heights. With this patch we go from 3.5 layout/s to 145 layout/s which is ~4000% better. Inspired by Blink's crrev.com/c/1614058 by <cbiesinger@chromium.org>. * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Do not unconditionally clear overriding sizes. Also removed relayoutChildren which is now unused. Do not layout the item, that should have been done in computeInnerFlexBaseSizeForChild() before. Added ASSERTs to verify that child's intrinsic main size was cached as a consequence of the previous layout. (WebCore::RenderFlexibleBox::constructFlexItem): Do not pass relayoutChildren to computeInnerFlexBaseSizeForChild. Also no need to update it after laying out the child. * rendering/RenderFlexibleBox.h: Canonical link: https://commits.webkit.org/234435@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273264 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-22 19:12:03 +00:00
2021-02-22 Sergio Villar Senin <svillar@igalia.com>
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
<rdar://problem/74537782>
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 <mmaxfield@apple.com>
MotionMark scores are super sensitive to a single long frame
https://bugs.webkit.org/show_bug.cgi?id=220847
<rdar://problem/74152743>
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 <mmaxfield@apple.com>
MotionMark focus test can cause extreme variance in whichever test runs directly after it
https://bugs.webkit.org/show_bug.cgi?id=221075
<rdar://problem/72143661>
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 <bdakin@apple.com>
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 <said@apple.com>
[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 <antti@apple.com>
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.
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). Canonical link: https://commits.webkit.org/232347@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270684 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-11 18:23:51 +00:00
2020-12-11 Geoffrey Garen <ggaren@apple.com>
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).
Removing unnecessary locking from JSValue API functions https://bugs.webkit.org/show_bug.cgi?id=219723 Reviewed by Filip Pizlo. PerformanceTests: Print an error message when benchmarks fail to run and add option to change the configuration used to build the benchmarks. * APIBench/api-bench: Source/JavaScriptCore: Remove the unnecessary locking from the JSValueIs* and JSValueMake* API functions that only work on primitives. Also remove the unnecessary method dispatching and call from the -[JSValue is*] methods. This improves the APIBench score by another ~8% since these are such common operations. Here are the results: (Baseline includes https://bugs.webkit.org/show_bug.cgi?id=219663) CURRENT_API: Baseline Change ---------------------------------------- RichardsMostlyC: 74ms 60ms RichardsMostlyObjC: 304ms 300ms RichardsMostlySwift: 305ms 293ms RichardsSomeC: 97ms 77ms RichardsSomeObjC: 158ms 159ms RichardsSomeSwift: 202ms 198ms UPCOMING_API: Baseline Change ---------------------------------------- RichardsMostlyC: 23ms 19ms RichardsMostlyObjC: 282ms 282ms RichardsMostlySwift: 280ms 282ms RichardsSomeC: 95ms 76ms RichardsSomeObjC: 157ms 156ms RichardsSomeSwift: 202ms 197ms ---------------------------------------- Score: 33.6404 36.4006 * API/APICast.h: (toRef): * API/JSValue.mm: (-[JSValue isUndefined]): (-[JSValue isNull]): (-[JSValue isBoolean]): (-[JSValue isNumber]): (-[JSValue isString]): (-[JSValue isObject]): (-[JSValue isSymbol]): * API/JSValueRef.cpp: (JSValueGetType): (JSValueIsUndefined): (JSValueIsNull): (JSValueIsBoolean): (JSValueIsNumber): (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol): (JSValueMakeUndefined): (JSValueMakeNull): (JSValueMakeBoolean): (JSValueMakeNumber): Canonical link: https://commits.webkit.org/232328@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270665 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-11 04:20:19 +00:00
2020-12-10 Tadeu Zagallo <tzagallo@apple.com>
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:
Add a JSC API to allow acquiring the JSLock https://bugs.webkit.org/show_bug.cgi?id=219663 Reviewed by Filip Pizlo. PerformanceTests: 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: Source/JavaScriptCore: Introduce two new functions to the C API: JSLock and JSUnlock. These functions allow users to take control of the JSContext's lock, which can greatly reduce the overhead of bridging between JS and native. * API/JSLockRef.cpp: Added. (JSLock): (JSUnlock): * API/JSLockRefPrivate.h: Added. * API/JSValueRef.cpp: * JavaScriptCore.xcodeproj/project.pbxproj: * Sources.txt: Canonical link: https://commits.webkit.org/232323@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270659 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-10 23:10:36 +00:00
2020-12-10 Tadeu Zagallo <tzagallo@apple.com>
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 <don.olmstead@sony.com>
[CMake] Remove WEBKIT_WRAP_SOURCELIST
https://bugs.webkit.org/show_bug.cgi?id=196916
Reviewed by Michael Catanzaro.
* MallocBench/MallocBench/CMakeLists.txt:
More FALLBACK_PLATFORM adoption https://bugs.webkit.org/show_bug.cgi?id=219545 Patch by Adam Roben <aroben@apple.com> on 2020-12-04 Reviewed by Tim Horton. PerformanceTests: * MediaTime/Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/bmalloc: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/JavaScriptCore: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/ThirdParty: * gtest/xcode/Config/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/ThirdParty/ANGLE: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/ThirdParty/libwebrtc: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WebCore: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WebCore/PAL: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WebInspectorUI: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WebKit: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WebKitLegacy/mac: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Source/WTF: * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Tools: * DumpRenderTree/Scripts/check-xcfilelists.sh: * TestWebKitAPI/Scripts/check-xcfilelists.sh: * WebKitTestRunner/Scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM if it's defined. * ContentExtensionTester/Configurations/SDKVariant.xcconfig: * DumpRenderTree/mac/Configurations/SDKVariant.xcconfig: * ImageDiff/cg/Configurations/SDKVariant.xcconfig: * MiniBrowser/Configurations/SDKVariant.xcconfig: * MobileMiniBrowser/Configurations/SDKVariant.xcconfig: * TestWebKitAPI/Configurations/SDKVariant.xcconfig: * WebEditingTester/Configurations/SDKVariant.xcconfig: * WebKitTestRunner/Configurations/SDKVariant.xcconfig: * lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. Canonical link: https://commits.webkit.org/232124@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-04 19:51:39 +00:00
2020-12-04 Adam Roben <aroben@apple.com>
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.
Adopt FALLBACK_PLATFORM https://bugs.webkit.org/show_bug.cgi?id=219504 Patch by Adam Roben <aroben@apple.com> on 2020-12-03 Reviewed by Tim Horton. PerformanceTests: * MediaTime/Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/bmalloc: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/JavaScriptCore: * Configurations/SDKVariant.xcconfig: * JavaScriptCore.xcodeproj/project.pbxproj: * Scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/ThirdParty: * gtest/xcode/Config/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/ThirdParty/ANGLE: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/ThirdParty/libwebrtc: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebCore: * Configurations/SDKVariant.xcconfig: * Scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebCore/PAL: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebInspectorUI: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebKit: * Configurations/SDKVariant.xcconfig: * Scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebKitLegacy: * scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WebKitLegacy/mac: * Configurations/SDKVariant.xcconfig: * Configurations/WebKitLegacy.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Source/WTF: * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Tools: * ContentExtensionTester/Configurations/SDKVariant.xcconfig: * DumpRenderTree/mac/Configurations/SDKVariant.xcconfig: * ImageDiff/cg/Configurations/SDKVariant.xcconfig: * MiniBrowser/Configurations/SDKVariant.xcconfig: * MobileMiniBrowser/Configurations/SDKVariant.xcconfig: * TestWebKitAPI/Configurations/SDKVariant.xcconfig: * WebEditingTester/Configurations/SDKVariant.xcconfig: * WebKitTestRunner/Configurations/SDKVariant.xcconfig: * lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. Canonical link: https://commits.webkit.org/232103@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270420 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-04 01:22:19 +00:00
2020-12-03 Adam Roben <aroben@apple.com>
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.
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: Canonical link: https://commits.webkit.org/231979@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270277 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-12-01 00:46:54 +00:00
2020-11-30 Tadeu Zagallo <tzagallo@apple.com>
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:
[Mac] Audio and Video element creation up to 300x slower than other browsers https://bugs.webkit.org/show_bug.cgi?id=218206 <rdar://problem/62451019> Reviewed by Eric Carlson. PerformanceTests: * Media/AudioElementCreation.html: Added. * Media/VideoElementCreation.html: Added. Source/WebCore: Tests: PerformanceTests/Media/AudioElementCreation.html PerformanceTests/Media/VideoElementCreation.html Currently, a large percent of the element creation code occurrs as a result of adding its session to PlatformMediaSessionManager, which forces iterating over all extant sessions and then to set various properties of the audio hardware in response. This patch addresses the bulk of those expensive calls, but more performance optimizations are available to further reduce media element creation costs. When an <audio> element is created, we set the preferred audio output buffer size to a large value for performance reasons. However, there's no need to repeatedly call into CoreAudio if the buffer size is already set to that same high value. Store the result of setting the preferred buffer size, and also add a property change listener to detect other callers modifying that same value, so that all set operations with identical sizes become no-ops, and all queries just return cached values. When any media element is created, the entire list of extant sessions is iterated and properties on each are queried. Rather than do these inside the same run-loop, use a TaskQueue to enqueue a task to query the list of created elements during the next run-loop. Between these two optimization, the runtime cost of creating 1000 audio elements is reduced (on this engineer's machine) from 2s to 40ms. * platform/audio/PlatformMediaSessionManager.cpp: (WebCore::PlatformMediaSessionManager::beginInterruption): (WebCore::PlatformMediaSessionManager::addSession): (WebCore::PlatformMediaSessionManager::removeSession): (WebCore::PlatformMediaSessionManager::sessionStateChanged): (WebCore::PlatformMediaSessionManager::forEachDocumentSession): (WebCore::PlatformMediaSessionManager::forEachSession): (WebCore::PlatformMediaSessionManager::anyOfSessions const): * platform/audio/PlatformMediaSessionManager.h: * platform/audio/mac/AudioSessionMac.mm: (WebCore::AudioSessionPrivate::addSampleRateObserverIfNeeded): (WebCore::AudioSessionPrivate::handleSampleRateChange): (WebCore::AudioSessionPrivate::addBufferSizeObserverIfNeeded): (WebCore::AudioSessionPrivate::handleBufferSizeChange): (WebCore::AudioSession::sampleRate const): (WebCore::AudioSession::bufferSize const): (WebCore::AudioSession::preferredBufferSize const): (WebCore::AudioSession::setPreferredBufferSize): Canonical link: https://commits.webkit.org/230965@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269077 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-27 22:21:28 +00:00
2020-10-27 Jer Noble <jer.noble@apple.com>
[Mac] Audio and Video element creation up to 300x slower than other browsers
https://bugs.webkit.org/show_bug.cgi?id=218206
<rdar://problem/62451019>
Reviewed by Eric Carlson.
* Media/AudioElementCreation.html: Added.
* Media/VideoElementCreation.html: Added.
2020-10-27 Caio Lima <ticaiolima@gmail.com>
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:
Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support https://bugs.webkit.org/show_bug.cgi?id=217649 <rdar://problem/70236877> Reviewed by Darin Adler. Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_<PLATFORM> 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. PerformanceTests: * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: Source/bmalloc: * Configurations/DebugRelease.xcconfig: Source/JavaScriptCore: * Configurations/DebugRelease.xcconfig: Source/ThirdParty/ANGLE: * Configurations/DebugRelease.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/DebugRelease.xcconfig: Source/WebCore: No new tests -- no changed functionality. * Configurations/DebugRelease.xcconfig: Source/WebCore/PAL: * Configurations/DebugRelease.xcconfig: Source/WebInspectorUI: * Configurations/DebugRelease.xcconfig: Source/WebKit: * Configurations/DebugRelease.xcconfig: Source/WebKitLegacy/mac: * Configurations/DebugRelease.xcconfig: Source/WTF: * Configurations/DebugRelease.xcconfig: Tools: * ContentExtensionTester/Configurations/DebugRelease.xcconfig: * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: * ImageDiff/cg/Configurations/DebugRelease.xcconfig: * lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig: Canonical link: https://commits.webkit.org/230417@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268420 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-13 21:25:46 +00:00
2020-10-13 Keith Rollin <krollin@apple.com>
Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support
https://bugs.webkit.org/show_bug.cgi?id=217649
<rdar://problem/70236877>
Reviewed by Darin Adler.
Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_<PLATFORM> 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:
[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 Patch by Luming Yin <luming_yin@apple.com> on 2020-10-12 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. PerformanceTests: * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: Source/bmalloc: * Configurations/DebugRelease.xcconfig: Source/JavaScriptCore: * Configurations/DebugRelease.xcconfig: Source/ThirdParty: * gtest/xcode/Config/General.xcconfig: Source/ThirdParty/ANGLE: * Configurations/DebugRelease.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/DebugRelease.xcconfig: Source/WebCore: * Configurations/DebugRelease.xcconfig: Source/WebCore/PAL: * Configurations/DebugRelease.xcconfig: Source/WebInspectorUI: * Configurations/DebugRelease.xcconfig: Source/WebKit: * Configurations/DebugRelease.xcconfig: Source/WebKitLegacy/mac: * Configurations/DebugRelease.xcconfig: Source/WTF: * Configurations/DebugRelease.xcconfig: Tools: * ContentExtensionTester/Configurations/DebugRelease.xcconfig: * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: * ImageDiff/cg/Configurations/DebugRelease.xcconfig: * MiniBrowser/Configurations/DebugRelease.xcconfig: * TestWebKitAPI/Configurations/DebugRelease.xcconfig: * WebEditingTester/Configurations/DebugRelease.xcconfig: * WebKitTestRunner/Configurations/DebugRelease.xcconfig: * lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig: Canonical link: https://commits.webkit.org/230380@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268371 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-12 22:09:36 +00:00
2020-10-12 Luming Yin <luming_yin@apple.com>
[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:
[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 Patch by Luming Yin <luming_yin@apple.com> on 2020-10-12 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 <rdar://70185899> is resolved. PerformanceTests: * DecoderTest/Configurations/DebugRelease.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: Source/bmalloc: * Configurations/DebugRelease.xcconfig: Source/JavaScriptCore: * Configurations/DebugRelease.xcconfig: Source/ThirdParty: * gtest/xcode/Config/General.xcconfig: Source/ThirdParty/ANGLE: * Configurations/DebugRelease.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/DebugRelease.xcconfig: Source/WebCore: * Configurations/DebugRelease.xcconfig: Source/WebCore/PAL: * Configurations/DebugRelease.xcconfig: Source/WebInspectorUI: * Configurations/DebugRelease.xcconfig: Source/WebKit: * Configurations/DebugRelease.xcconfig: Source/WebKitLegacy/mac: * Configurations/DebugRelease.xcconfig: Source/WTF: * Configurations/DebugRelease.xcconfig: Tools: * ContentExtensionTester/Configurations/DebugRelease.xcconfig: * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: * ImageDiff/cg/Configurations/DebugRelease.xcconfig: * MiniBrowser/Configurations/DebugRelease.xcconfig: * TestWebKitAPI/Configurations/DebugRelease.xcconfig: * WebEditingTester/Configurations/DebugRelease.xcconfig: * WebKitTestRunner/Configurations/DebugRelease.xcconfig: * lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig: Canonical link: https://commits.webkit.org/230363@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268353 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-12 16:27:16 +00:00
2020-10-12 Luming Yin <luming_yin@apple.com>
[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 <rdar://70185899> is resolved.
* DecoderTest/Configurations/DebugRelease.xcconfig:
* MediaTime/Configurations/DebugRelease.xcconfig:
2020-10-11 Darin Adler <darin@apple.com>
[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 <jer.noble@apple.com>
[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 <jer.noble@apple.com>
[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<void):
(main):
* DecoderTest/Makefile: Added.
* Makefile.shared: Added.
Update macOS Version macros https://bugs.webkit.org/show_bug.cgi?id=214653 Reviewed by Tim Horton. PerformanceTests: * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: Source/bmalloc: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: Source/JavaScriptCore: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/ThirdParty: * gtest/xcode/Config/DebugProject.xcconfig: * gtest/xcode/Config/ReleaseProject.xcconfig: Source/ThirdParty/ANGLE: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WebCore: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WebCore/PAL: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WebInspectorUI: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WebKit: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: Source/WTF: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * wtf/PlatformHave.h: Tools: * ContentExtensionTester/Configurations/Base.xcconfig: * ContentExtensionTester/Configurations/DebugRelease.xcconfig: * DumpRenderTree/mac/Configurations/Base.xcconfig: * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: * ImageDiff/cg/Configurations/Base.xcconfig: * ImageDiff/cg/Configurations/DebugRelease.xcconfig: * MiniBrowser/Configurations/Base.xcconfig: * MiniBrowser/Configurations/DebugRelease.xcconfig: * TestWebKitAPI/Configurations/Base.xcconfig: * TestWebKitAPI/Configurations/DebugRelease.xcconfig: * TestWebKitAPI/Configurations/WebKitTargetConditionals.xcconfig: * WebEditingTester/Configurations/Base.xcconfig: * WebEditingTester/Configurations/DebugRelease.xcconfig: * WebKitTestRunner/Configurations/Base.xcconfig: * WebKitTestRunner/Configurations/DebugRelease.xcconfig: * lldb/lldbWebKitTester/Configurations/Base.xcconfig: * lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig: Canonical link: https://commits.webkit.org/227485@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264746 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-23 04:49:02 +00:00
2020-07-22 Conrad Shultz <conrad_shultz@apple.com>
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 <pnormand@igalia.com>
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 <sbarati@apple.com>
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:
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. Canonical link: https://commits.webkit.org/226562@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263712 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-30 01:12:31 +00:00
2020-06-29 Tadeu Zagallo <tzagallo@apple.com>
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 <don.olmstead@sony.com>
[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 <darin@apple.com>
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 <jonlee@apple.com>
MotionMark: add link to bug in about page
Unreviewed.
* MotionMark/about.html:
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. Canonical link: https://commits.webkit.org/223865@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260656 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-24 17:58:55 +00:00
2020-04-24 Jon Lee <jonlee@apple.com>
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.
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. PerformanceTests: 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): Source/bmalloc: * bmalloc/Scavenger.cpp: (bmalloc::Scavenger::scavenge): (bmalloc::Scavenger::partialScavenge): * bmalloc/Scavenger.h: (bmalloc::Scavenger::disable): * bmalloc/bmalloc.cpp: (bmalloc::api::disableScavenger): * bmalloc/bmalloc.h: Source/JavaScriptCore: * jsc.cpp: (main): Source/WTF: * wtf/FastMalloc.cpp: (WTF::fastDisableScavenger): * wtf/FastMalloc.h: Canonical link: https://commits.webkit.org/223030@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-07 18:41:13 +00:00
2020-04-07 Saam Barati <sbarati@apple.com>
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):
Implement 1GB of executable memory on arm64 https://bugs.webkit.org/show_bug.cgi?id=208490 <rdar://problem/60797127> Reviewed by Keith Miller. JSTests: Run JetStream2 wasm tests. * wasm.yaml: * wasm/lowExecutableMemory/executable-memory-oom.js: PerformanceTests: * 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): Source/JavaScriptCore: This patch implements the 1GB executable memory space on arm64. To make this work, we implement jumps larger than +/-128MB to use jump islands. Jump islands work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each chunk is split into two: 96MB of executable region, and 16MB of jump island region. With this split, any jump inside a jump island region can get to the adjacent island (forwards or backwards) in a single +/-128MB jump. When linking a jump from A to B, where |A - B| > 128MB, we instead point the jump to an island, where this island has a potential series of jumps that finally lands at B. To allocate executable memory, use a MetaAllocator for each 96MB chunk. To allocate islands, we have a bit vector we use to track used and freed islands. We only grow this bit vector as islands are allocated, so it frequently remains empty or very small. The goal of this patch is to have minimal perf impact when not using islands, so the data structures are designed to only incur overhead when actually using islands. We expect the use of islands to be minimal. We use a red black tree to track all island locations. This allows us to deallocate all islands when an executable memory handle is freed. Typically, this red black tree is empty, so freeing an executable memory handle incurs no extra overhead. To make islands work for Wasm, we now have to link tier up code in two phases. Previously, we would just patch jumps concurrently to Wasm threads running after resetting the icache, knowing that we would be able to atomically update the jump instruction to point to the new destination. However, now when repatching these jumps in a world with jump islands, we might need to allocate islands depending on the jump location and its target. So we now allocate and collect the set of islands, then reset the icache, then atomically update the branch to point to the destination (or an island that jumps to the destination). One important implementation detail here is that for normal island repatching, if we have a jump from A to B, and it allocates a set if islands X, we usually can deallocate X when repatching A to go to B'. This is because the typical repatch scenario in JS happens when that code is not being executed. For Wasm though, those islands X might be running while we want to repatch A to go to B'. So instead of deallocating X, we just append to X in this scenario, and we free the new set X' when the code itself is freed. (This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted, where we would publish a LLInt callee's BBQ replacement before we finished linking the outgoing calls of the BBQ replacement.) This patch also removes the old "CodeProfiling" code that has been unused for a long time. * JavaScriptCore.xcodeproj/project.pbxproj: * Sources.txt: * assembler/ARM64Assembler.h: (JSC::ARM64Assembler::b): (JSC::ARM64Assembler::bl): (JSC::ARM64Assembler::replaceWithJump): (JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently): (JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently): (JSC::ARM64Assembler::computeJumpType): (JSC::ARM64Assembler::canEmitJump): (JSC::ARM64Assembler::linkJumpOrCall): (JSC::ARM64Assembler::linkCompareAndBranch): (JSC::ARM64Assembler::linkConditionalBranch): (JSC::ARM64Assembler::linkTestAndBranch): * assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently): * assembler/LinkBuffer.cpp: (JSC::LinkBuffer::copyCompactAndLinkCode): (JSC::LinkBuffer::linkCode): (JSC::LinkBuffer::allocate): (JSC::LinkBuffer::performFinalization): * assembler/LinkBuffer.h: (JSC::LinkBuffer::LinkBuffer): (JSC::LinkBuffer::setIsJumpIsland): * assembler/MacroAssemblerCodeRef.h: (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): * jit/ExecutableAllocator.cpp: (JSC::initializeJITPageReservation): (JSC::ExecutableAllocator::initializeUnderlyingAllocator): (JSC::ExecutableAllocator::isValid const): (JSC::ExecutableAllocator::allocate): (JSC::ExecutableAllocator::getJumpIslandTo): (JSC::ExecutableAllocator::getJumpIslandToConcurrently): (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted. * jit/ExecutableAllocator.h: (JSC::ExecutableAllocatorBase::allocate): * runtime/CommonSlowPaths.cpp: * runtime/Completion.cpp: (JSC::evaluate): * runtime/JSModuleLoader.cpp: (JSC::moduleLoaderParseModule): * runtime/OptionsList.h: * tools/CodeProfile.cpp: (JSC::truncateTrace): Deleted. (JSC::CodeProfile::sample): Deleted. (JSC::CodeProfile::report): Deleted. * tools/CodeProfile.h: (JSC::CodeProfile::CodeProfile): Deleted. (JSC::CodeProfile::parent): Deleted. (JSC::CodeProfile::addChild): Deleted. (): Deleted. (JSC::CodeProfile::CodeRecord::CodeRecord): Deleted. * tools/CodeProfiling.cpp: (JSC::setProfileTimer): Deleted. (JSC::profilingTimer): Deleted. (JSC::CodeProfiling::sample): Deleted. (JSC::CodeProfiling::notifyAllocator): Deleted. (JSC::CodeProfiling::getOwnerUIDForPC): Deleted. (JSC::CodeProfiling::begin): Deleted. (JSC::CodeProfiling::end): Deleted. * tools/CodeProfiling.h: (): Deleted. (JSC::CodeProfiling::CodeProfiling): Deleted. (JSC::CodeProfiling::~CodeProfiling): Deleted. (JSC::CodeProfiling::enabled): Deleted. (JSC::CodeProfiling::beVerbose): Deleted. (JSC::CodeProfiling::beVeryVerbose): Deleted. * wasm/WasmBBQPlan.cpp: (JSC::Wasm::BBQPlan::work): * wasm/WasmCodeBlock.h: * wasm/WasmOMGForOSREntryPlan.cpp: (JSC::Wasm::OMGForOSREntryPlan::work): * wasm/WasmOMGPlan.cpp: (JSC::Wasm::OMGPlan::work): * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::updateCallSitesToCallUs): * wasm/WasmPlan.h: Source/WTF: * wtf/MetaAllocator.cpp: (WTF::MetaAllocatorTracker::notify): (WTF::MetaAllocatorTracker::release): (WTF::MetaAllocator::release): (WTF::MetaAllocatorHandle::MetaAllocatorHandle): (WTF::MetaAllocatorHandle::~MetaAllocatorHandle): (WTF::MetaAllocatorHandle::shrink): (WTF::MetaAllocator::MetaAllocator): (WTF::MetaAllocator::allocate): (WTF::MetaAllocator::currentStatistics): * wtf/MetaAllocator.h: (WTF::MetaAllocatorTracker::find): (WTF::MetaAllocator::allocate): (WTF::MetaAllocator::currentStatistics): (WTF::MetaAllocator::getLock): Deleted. * wtf/MetaAllocatorHandle.h: (WTF::MetaAllocatorHandle::allocator): (WTF::MetaAllocatorHandle::isManaged): Deleted. (WTF::MetaAllocatorHandle::ownerUID): Deleted. * wtf/PlatformEnable.h: * wtf/RedBlackTree.h: * wtf/StdLibExtras.h: (WTF::constructFixedSizeArrayWithArgumentsImpl): (WTF::constructFixedSizeArrayWithArguments): Tools: * Scripts/run-jsc-stress-tests: * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp: (TestWebKitAPI::TEST_F): * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp: (TestWebKitAPI::TEST_F): Canonical link: https://commits.webkit.org/222973@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
2020-04-06 Saam Barati <sbarati@apple.com>
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
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 <sbarati@apple.com>
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):
Should not use variable-length-array (VLA) https://bugs.webkit.org/show_bug.cgi?id=209043 Reviewed by Mark Lam. PerformanceTests: * MediaTime/Configurations/Base.xcconfig: Source/bmalloc: * Configurations/Base.xcconfig: Source/JavaScriptCore: This patch disables variable-length-array (VLA). If this feature uses user-input, user can control the stack height consumed by C++ code. This patch avoids using VLA. To achieve that, 1. We set `-Wvla` warning option to trigger warnings if it is used. 2. Introduce MarkedJSValueRefArray for API. This replaces `JSValueRef arguments[variableLength]` use case. MarkedJSValueRefArray registers itself to JSC GC so that GC can mark it as a strong root. * API/JSContext.mm: (+[JSContext currentArguments]): * API/JSValue.mm: (-[JSValue callWithArguments:]): (-[JSValue constructWithArguments:]): (-[JSValue invokeMethod:withArguments:]): * API/MarkedJSValueRefArray.cpp: Added. (JSC::MarkedJSValueRefArray::MarkedJSValueRefArray): (JSC::MarkedJSValueRefArray::~MarkedJSValueRefArray): (JSC::MarkedJSValueRefArray::visitAggregate): * API/MarkedJSValueRefArray.h: Added. * API/tests/minidom.c: (print): * API/tests/testapi.cpp: (TestAPI::markedJSValueArrayAndGC): (testCAPIViaCpp): * Configurations/Base.xcconfig: * JavaScriptCore.xcodeproj/project.pbxproj: * Sources.txt: * heap/Heap.cpp: (JSC::Heap::addCoreConstraints): (JSC::Heap::addMarkedJSValueRefArray): * heap/Heap.h: * heap/MarkedSpace.h: (JSC::MarkedSpace::activeWeakSetsBegin): Deleted. (JSC::MarkedSpace::activeWeakSetsEnd): Deleted. (JSC::MarkedSpace::newActiveWeakSetsBegin): Deleted. (JSC::MarkedSpace::newActiveWeakSetsEnd): Deleted. * runtime/ArgList.h: Source/WebCore: * Configurations/Base.xcconfig: * crypto/mac/SerializedCryptoKeyWrapMac.mm: (WebCore::wrapSerializedCryptoKey): (WebCore::unwrapSerializedCryptoKey): * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::getInternalformatParameter): * platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp: (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices): * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: (WebCore::updateDisplayID): (WebCore::ScreenDisplayCaptureSourceMac::screenCaptureDevices): Source/WebCore/PAL: * Configurations/Base.xcconfig: Source/WebInspectorUI: * Configurations/Base.xcconfig: Source/WebKit: * Configurations/Base.xcconfig: * UIProcess/_WKTouchEventGenerator.mm: (-[_WKTouchEventGenerator touchDown:touchCount:]): (-[_WKTouchEventGenerator liftUp:touchCount:]): (-[_WKTouchEventGenerator moveToPoints:touchCount:duration:]): Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: Source/WTF: * Configurations/Base.xcconfig: * wtf/UUID.cpp: (WTF::bootSessionUUIDString): Tools: * ContentExtensionTester/Configurations/Base.xcconfig: * lldb/lldbWebKitTester/Configurations/Base.xcconfig: Canonical link: https://commits.webkit.org/222020@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-15 10:16:52 +00:00
2020-03-15 Yusuke Suzuki <ysuzuki@apple.com>
Should not use variable-length-array (VLA)
https://bugs.webkit.org/show_bug.cgi?id=209043
Reviewed by Mark Lam.
* MediaTime/Configurations/Base.xcconfig:
[CMake] Use builtin targets https://bugs.webkit.org/show_bug.cgi?id=205166 Reviewed by Darin Adler. .: Add WebKitFindPackage.cmake which wraps CMake's find_package to provide targets for common libraries. Rationale: 1. There are a number of libraries which are found using CMake's internal Find modules that contain targets but not all of them are available in the minimum version of CMake we support, 3.10. 2. Updating to CMake 3.12 or higher is not possible due to the WebKit GTK's support policy. It looks like the next time we can bump the version is spring 2021. 3. Apple builds, both Mac and Windows, have libraries that won't be found using the stock CMake modules. AppleWin also has internal builds where all libraries have a DEBUG_SUFFIX of _debug that would not be picked up. In the implementation of find_package any Apple specific requirements are dealt with and the expected CMake values are populated. For all other cases CMake's original find_package is called so there's no behavior change. Afterwards if there is a library that has a target but the target was not created it is created from the definitions that are present from the find module at CMake 3.10. This makes it so all ports consistently have targets across all versions of CMake above the current minimum. * Source/cmake/OptionsAppleWin.cmake: * Source/cmake/OptionsPlayStation.cmake: * Source/cmake/WebKitCommon.cmake: * Source/cmake/WebKitFindPackage.cmake: Added. * Source/cmake/target/icu.cmake: Removed. PerformanceTests: * MallocBench/MallocBench/CMakeLists.txt: Source/WebCore: * CMakeLists.txt: * PlatformGTK.cmake: * PlatformMac.cmake: * platform/Curl.cmake: * platform/FreeType.cmake: * platform/ImageDecoders.cmake: Source/WebCore/PAL: * pal/PlatformPlayStation.cmake: Source/WebKit: * PlatformFTW.cmake: * PlatformWPE.cmake: * PlatformWin.cmake: Source/WebKitLegacy: * PlatformFTW.cmake: * PlatformWin.cmake: Source/WTF: * wtf/PlatformGTK.cmake: * wtf/PlatformJSCOnly.cmake: * wtf/PlatformPlayStation.cmake: * wtf/PlatformWPE.cmake: Tools: * TestWebKitAPI/PlatformWin.cmake: Canonical link: https://commits.webkit.org/220799@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256731 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-17 15:37:39 +00:00
2020-02-17 Don Olmstead <don.olmstead@sony.com>
[CMake] Use builtin targets
https://bugs.webkit.org/show_bug.cgi?id=205166
Reviewed by Darin Adler.
* MallocBench/MallocBench/CMakeLists.txt:
IndexedDB: speed up index records deletion https://bugs.webkit.org/show_bug.cgi?id=206196 PerformanceTests: Reviewed by Brady Eidson. * IndexedDB/basic/index-cursor-delete-2.html: Added. Source/WebCore: <rdar://problem/53596307> Reviewed by Brady Eidson. This patch does a few things to accelerate deletion for index records: 1. make indexID unique in database instead of objectStore 2. create an index on IndexRecords table 3. optimize some SQLite statements to take advantage of 1 and 2 Test: IndexedDB.IDBObjectStoreInfoUpgradeToV2 Make test PerformanceTests/IndexedDB/basic/index-cursor-delete-2.html 7.5x faster. * Modules/indexeddb/IDBDatabase.h: * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::createIndex): * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::MemoryIDBBackingStore::createIndex): * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::createV1ObjectStoreInfoSchema): (WebCore::IDBServer::createV2ObjectStoreInfoSchema): (WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsRecordIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidObjectStoreInfoTable): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedHasIndexRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteOneIndexRecord): Deleted. * Modules/indexeddb/server/SQLiteIDBBackingStore.h: * Modules/indexeddb/server/SQLiteIDBCursor.cpp: (WebCore::IDBServer::buildIndexStatement): (WebCore::IDBServer::SQLiteIDBCursor::bindArguments): * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::createIndex): * Modules/indexeddb/shared/IDBDatabaseInfo.cpp: (WebCore::IDBDatabaseInfo::IDBDatabaseInfo): (WebCore::IDBDatabaseInfo::setMaxIndexID): * Modules/indexeddb/shared/IDBDatabaseInfo.h: (WebCore::IDBDatabaseInfo::generateNextIndexID): (WebCore::IDBDatabaseInfo::encode const): (WebCore::IDBDatabaseInfo::decode): * Modules/indexeddb/shared/IDBObjectStoreInfo.cpp: (WebCore::IDBObjectStoreInfo::createNewIndex): (WebCore::IDBObjectStoreInfo::addExistingIndex): (WebCore::IDBObjectStoreInfo::isolatedCopy const): * Modules/indexeddb/shared/IDBObjectStoreInfo.h: (WebCore::IDBObjectStoreInfo::autoIncrement const): (WebCore::IDBObjectStoreInfo::encode const): (WebCore::IDBObjectStoreInfo::decode): (WebCore::IDBObjectStoreInfo::maxIndexID const): Deleted. Tools: Reviewed by Brady Eidson. * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKitCocoa/IDBObjectStoreInfoUpgrade.sqlite3: Added. * TestWebKitAPI/Tests/WebKitCocoa/IDBObjectStoreInfoUpgradeToV2.html: Added. * TestWebKitAPI/Tests/WebKitCocoa/IDBObjectStoreInfoUpgradeToV2.mm: Added. (-[IDBObjectStoreInfoUpgradeToV2MessageHandler userContentController:didReceiveScriptMessage:]): (TEST): Canonical link: https://commits.webkit.org/219924@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255318 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-28 23:17:33 +00:00
2020-01-28 Sihui Liu <sihui_liu@apple.com>
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 <sihui_liu@apple.com>
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
<rdar://problem/49137688>
Re-enable the test after recent IDB performance improvement.
Reviewed by Alexey Proskuryakov.
* Skipped:
[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. .: Add ENABLE_AUTOCAPITALIZE build flag. It's private and disabled by default, enabled in GTK and WPE ports. * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsWPE.cmake: * Source/cmake/WebKitFeatures.cmake: PerformanceTests: Split ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE and remove the IOS prefix. * StitchMarker/wtf/FeatureDefines.h: Source/WebCore: Use ENABLE(AUTOCAPITALIZE) and ENABLE(AUTOCORRECT) instead of ENABLE(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE). * Sources.txt: Add Autocapitalize.cpp to the build. * html/Autocapitalize.cpp: Add ENABLE(AUTOCAPITALIZE) guards. * html/Autocapitalize.h: Ditto. * html/HTMLElement.cpp: * html/HTMLElement.h: * html/HTMLElement.idl: * html/HTMLFormControlElement.cpp: * html/HTMLFormControlElement.h: * html/HTMLFormElement.cpp: * html/HTMLFormElement.h: * loader/EmptyClients.cpp: Update to new API of EditorClient::setInputMethodState * page/EditorClient.h: The focused element or nullptr is now received by setInputMethodState() instead of enabled/disabled boolean. * page/FocusController.cpp: (WebCore::FocusController::setFocusedElement): Pass the focused element or nullptr to setInputMethodState(). Source/WebKit: Add input-purpose and input-hints properties to WebKitInputMethodContext. The message SetInputMethodState now receives an optional InputMethodState struct with information about the purpose and hints of the active editable element. * Scripts/webkit/messages.py: Only include InputMethodState.h for GTK and WPE. * Shared/glib/InputMethodState.cpp: Added. (WebKit::InputMethodState::setPurposeOrHintForInputMode): (WebKit::inputElementHasDigitsPattern): (WebKit::InputMethodState::setPurposeForInputElement): (WebKit::InputMethodState::addHintsForAutocapitalizeType): (WebKit::InputMethodState::encode const): (WebKit::InputMethodState::decode): * Shared/glib/InputMethodState.h: Added. (WebKit::operator==): * SourcesGTK.txt: * SourcesWPE.txt: * UIProcess/API/glib/InputMethodFilter.cpp: (WebKit::InputMethodFilter::setContext): Use isEnabled() instead of m_enabled. (WebKit::InputMethodFilter::setState): Now receives an optional InputMethodState struct. (WebKit::InputMethodFilter::filterKeyEvent): Use isEnabled() instead of m_enabled. (WebKit::InputMethodFilter::isViewFocused const): Ditto. (WebKit::toWebKitPurpose): Helper to convert InputMethodState::Purpose to WebKitInputPurpose. (WebKit::toWebKitHints): Helper to convert InputMethodState::Hint to WebKitInputHints. (WebKit::InputMethodFilter::notifyFocusedIn): Set the purpose and hints to the context. (WebKit::InputMethodFilter::notifyFocusedOut): Use isEnabled() instead of m_enabled. (WebKit::InputMethodFilter::notifyCursorRect): Ditto. (WebKit::InputMethodFilter::preeditStarted): Ditto. (WebKit::InputMethodFilter::preeditChanged): Ditto. (WebKit::InputMethodFilter::preeditFinished): Ditto. (WebKit::InputMethodFilter::committed): Ditto. * UIProcess/API/glib/InputMethodFilter.h: (WebKit::InputMethodFilter::isEnabled const): Return true if we have a state. * UIProcess/API/glib/WebKitInputMethodContext.cpp: (webkitInputMethodContextSetProperty): Properties setter. (webkitInputMethodContextGetProperty): Properties getter. (webkit_input_method_context_class_init): Add implementation for properties getter and setter. (webkit_input_method_context_get_input_purpose): (webkit_input_method_context_set_input_purpose): (webkit_input_method_context_get_input_hints): (webkit_input_method_context_set_input_hints): * UIProcess/API/gtk/WebKitInputMethodContext.h: * UIProcess/API/gtk/WebKitInputMethodContextImplGtk.cpp: (toGtkInputPurpose): Helper to convert WebKitInputPurpose to GtkInputPurpose. (toGtkInputHints): Helper to convert WebKitInputHints to GtkInputHints. (inputPurposeChangedCallback): Set the purpose on GtkIMContext. (inputHintsChangedCallback): Set the hints on GtkIMContext. (webkitInputMethodContextImplGtkConstructed): Connect to notify signal for input-purpose and input-hints properties of the context. * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseSetInputMethodState): * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: * UIProcess/API/wpe/PageClientImpl.cpp: (WebKit::PageClientImpl::setInputMethodState): * UIProcess/API/wpe/PageClientImpl.h: * UIProcess/API/wpe/WPEView.cpp: (WKWPE::View::setInputMethodState): * UIProcess/API/wpe/WPEView.h: * UIProcess/API/wpe/WebKitInputMethodContext.h: * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/gtk/WebPageProxyGtk.cpp: (WebKit::WebPageProxy::setInputMethodState): * UIProcess/wpe/WebPageProxyWPE.cpp: (WebKit::WebPageProxy::setInputMethodState): * WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::WebEditorClient::setInputMethodState): * WebProcess/WebCoreSupport/WebEditorClient.h: * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/glib/WebPageGLib.cpp: (WebKit::inputMethodSateForElement): Build an InputMethodState for the given element. (WebKit::WebPage::setInputMethodState): Source/WebKitLegacy/mac: * DOM/DOMHTMLElement.mm: Use ENABLE(AUTOCORRECT) and ENABLE(AUTOCAPITALIZE). * WebCoreSupport/WebEditorClient.h: Update tom the new API to WebEditorClient::setInputMethodState. * WebCoreSupport/WebEditorClient.mm: (WebEditorClient::setInputMethodState): Ditto. Source/WebKitLegacy/win: Update to the new API of WebEditorClient::setInputMethodState. * WebCoreSupport/WebEditorClient.cpp: (WebEditorClient::setInputMethodState): * WebCoreSupport/WebEditorClient.h: Source/WTF: Split ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE and remove the IOS prefix. * wtf/FeatureDefines.h: Tools: Add new test case to check the purpose and hints API. * TestWebKitAPI/Tests/WebKitGLib/TestInputMethodContext.cpp: (testWebKitInputMethodContextContentType): (beforeAll): Canonical link: https://commits.webkit.org/218989@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254121 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-07 10:48:45 +00:00
2020-01-07 Carlos Garcia Campos <cgarcia@igalia.com>
[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:
PerformanceTests: 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: Source/JavaScriptCore: 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. * API/tests/testapi.c: * assembler/ARM64Assembler.h: (JSC::ARM64Assembler::replaceWithLoad): (JSC::ARM64Assembler::replaceWithAddressComputation): * assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::LocalWriter::LocalWriter): * assembler/LinkBuffer.cpp: (JSC::LinkBuffer::copyCompactAndLinkCode): * assembler/ProbeStack.cpp: (JSC::Probe::Stack::Stack): * assembler/ProbeStack.h: * b3/B3FoldPathConstants.cpp: * b3/B3LowerToAir.cpp: * b3/B3MemoryValue.cpp: (JSC::B3::MemoryValue::MemoryValue): * b3/B3Opcode.cpp: * b3/B3Type.h: * b3/B3TypeMap.h: * b3/B3Width.h: * b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp: (JSC::B3::Air::GenerateAndAllocateRegisters::prepareForGeneration): (JSC::B3::Air::GenerateAndAllocateRegisters::generate): * b3/air/AirAllocateRegistersAndStackAndGenerateCode.h: * b3/air/AirAllocateRegistersByGraphColoring.cpp: * b3/air/AirArg.cpp: * b3/air/AirArg.h: * b3/air/AirCode.h: * b3/air/AirEmitShuffle.cpp: (JSC::B3::Air::emitShuffle): * builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::createExecutable): * bytecode/AccessCase.cpp: * bytecode/AccessCase.h: * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndex): * bytecode/CodeBlockHash.cpp: (JSC::CodeBlockHash::dump const): * bytecode/StructureStubInfo.cpp: * bytecode/StructureStubInfo.h: * bytecompiler/NodesCodegen.cpp: (JSC::FunctionCallResolveNode::emitBytecode): * bytecompiler/RegisterID.h: (JSC::RegisterID::RegisterID): (JSC::RegisterID::setIndex): * debugger/Debugger.cpp: (JSC::Debugger::removeBreakpoint): * debugger/DebuggerEvalEnabler.h: (JSC::DebuggerEvalEnabler::DebuggerEvalEnabler): (JSC::DebuggerEvalEnabler::~DebuggerEvalEnabler): * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransitions): * dfg/DFGAbstractValue.cpp: * dfg/DFGAbstractValue.h: (JSC::DFG::AbstractValue::merge): (JSC::DFG::AbstractValue::checkConsistency const): (JSC::DFG::AbstractValue::assertIsRegistered const): * dfg/DFGArithMode.h: (JSC::DFG::doesOverflow): * dfg/DFGBasicBlock.cpp: (JSC::DFG::BasicBlock::BasicBlock): * dfg/DFGBasicBlock.h: (JSC::DFG::BasicBlock::didLink): * dfg/DFGCFAPhase.cpp: (JSC::DFG::CFAPhase::performBlockCFA): * dfg/DFGCommon.h: (JSC::DFG::validationEnabled): * dfg/DFGCommonData.cpp: (JSC::DFG::CommonData::finalizeCatchEntrypoints): * dfg/DFGDesiredWatchpoints.h: * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGEdge.h: (JSC::DFG::Edge::makeWord): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGJITCode.cpp: (JSC::DFG::JITCode::finalizeOSREntrypoints): * dfg/DFGObjectAllocationSinkingPhase.cpp: * dfg/DFGSSAConversionPhase.cpp: (JSC::DFG::SSAConversionPhase::run): * dfg/DFGScoreBoard.h: (JSC::DFG::ScoreBoard::assertClear): * dfg/DFGSlowPathGenerator.h: (JSC::DFG::SlowPathGenerator::generate): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileCurrentBlock): (JSC::DFG::SpeculativeJIT::emitBinarySwitchStringRecurse): (JSC::DFG::SpeculativeJIT::emitAllocateButterfly): (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): (JSC::DFG::SpeculativeJIT::compileMakeRope): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::fillSpeculateCell): * dfg/DFGStructureAbstractValue.cpp: * dfg/DFGStructureAbstractValue.h: (JSC::DFG::StructureAbstractValue::assertIsRegistered const): * dfg/DFGVarargsForwardingPhase.cpp: * dfg/DFGVirtualRegisterAllocationPhase.cpp: (JSC::DFG::VirtualRegisterAllocationPhase::run): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::callPreflight): (JSC::FTL::DFG::LowerDFGToB3::callCheck): (JSC::FTL::DFG::LowerDFGToB3::crash): * ftl/FTLOperations.cpp: (JSC::FTL::operationMaterializeObjectInOSR): * heap/BlockDirectory.cpp: (JSC::BlockDirectory::assertNoUnswept): * heap/GCSegmentedArray.h: (JSC::GCArraySegment::GCArraySegment): * heap/GCSegmentedArrayInlines.h: (JSC::GCSegmentedArray<T>::clear): (JSC::GCSegmentedArray<T>::expand): (JSC::GCSegmentedArray<T>::validatePrevious): * heap/HandleSet.cpp: * heap/HandleSet.h: * heap/Heap.cpp: (JSC::Heap::updateAllocationLimits): * heap/Heap.h: * heap/MarkedBlock.cpp: * heap/MarkedBlock.h: (JSC::MarkedBlock::assertValidCell const): (JSC::MarkedBlock::assertMarksNotStale): * heap/MarkedSpace.cpp: (JSC::MarkedSpace::beginMarking): (JSC::MarkedSpace::endMarking): (JSC::MarkedSpace::assertNoUnswept): * heap/PreciseAllocation.cpp: * heap/PreciseAllocation.h: (JSC::PreciseAllocation::assertValidCell const): * heap/SlotVisitor.cpp: (JSC::SlotVisitor::SlotVisitor): (JSC::SlotVisitor::appendJSCellOrAuxiliary): * heap/SlotVisitor.h: * inspector/InspectorProtocolTypes.h: (Inspector::Protocol::BindingTraits<JSON::ArrayOf<T>>::assertValueHasExpectedType): * inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py: (CppProtocolTypesImplementationGenerator._generate_assertion_for_object_declaration): (CppProtocolTypesImplementationGenerator): (CppProtocolTypesImplementationGenerator._generate_assertion_for_enum): * inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result: * interpreter/FrameTracers.h: (JSC::JITOperationPrologueCallFrameTracer::JITOperationPrologueCallFrameTracer): * interpreter/Interpreter.cpp: (JSC::Interpreter::Interpreter): * interpreter/Interpreter.h: * jit/AssemblyHelpers.cpp: (JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo): * jit/AssemblyHelpers.h: (JSC::AssemblyHelpers::prepareCallOperation): * jit/BinarySwitch.cpp: (JSC::BinarySwitch::BinarySwitch): * jit/CCallHelpers.h: (JSC::CCallHelpers::setupStubArgs): * jit/CallFrameShuffler.cpp: (JSC::CallFrameShuffler::emitDeltaCheck): (JSC::CallFrameShuffler::prepareAny): * jit/JIT.cpp: (JSC::JIT::assertStackPointerOffset): (JSC::JIT::compileWithoutLinking): * jit/JITOpcodes.cpp: (JSC::JIT::emitSlow_op_loop_hint): * jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_from_scope): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::emit_op_get_from_scope): * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jit/ThunkGenerators.cpp: (JSC::emitPointerValidation): * llint/LLIntData.cpp: (JSC::LLInt::Data::performAssertions): * llint/LLIntOfflineAsmConfig.h: * parser/Lexer.cpp: * parser/Lexer.h: (JSC::isSafeBuiltinIdentifier): (JSC::Lexer<T>::lexExpectIdentifier): * runtime/ArgList.h: (JSC::MarkedArgumentBuffer::setNeedsOverflowCheck): (JSC::MarkedArgumentBuffer::clearNeedsOverflowCheck): * runtime/Butterfly.h: (JSC::ContiguousData::ContiguousData): (JSC::ContiguousData::Data::Data): * runtime/HashMapImpl.h: (JSC::HashMapImpl::checkConsistency const): (JSC::HashMapImpl::assertBufferIsEmpty const): * runtime/JSCellInlines.h: (JSC::JSCell::methodTable const): * runtime/JSFunction.cpp: * runtime/JSFunction.h: (JSC::JSFunction::assertTypeInfoFlagInvariants): * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): * runtime/JSGlobalObject.h: * runtime/JSObject.cpp: (JSC::JSObject::visitChildren): (JSC::JSFinalObject::visitChildren): * runtime/JSObjectInlines.h: (JSC::JSObject::validatePutOwnDataProperty): * runtime/JSSegmentedVariableObject.h: (JSC::JSSegmentedVariableObject::assertVariableIsInThisObject): * runtime/LiteralParser.cpp: (JSC::LiteralParser<CharType>::Lexer::lex): * runtime/LiteralParser.h: * runtime/Operations.h: (JSC::scribbleFreeCells): * runtime/OptionsList.h: * runtime/VM.cpp: (JSC::VM::computeCanUseJIT): * runtime/VM.h: (JSC::VM::canUseJIT): * runtime/VarOffset.h: (JSC::VarOffset::checkSanity const): * runtime/WeakMapImpl.h: (JSC::WeakMapImpl::checkConsistency const): (JSC::WeakMapImpl::assertBufferIsEmpty const): * wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::validateInst): * wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::parseAndCompile): * wasm/WasmFunctionParser.h: (JSC::Wasm::FunctionParser::validationFail const): * wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::LLIntGenerator::checkConsistency): * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::tryRemoveContextAndCancelIfLast): * wasm/WasmSectionParser.h: * wasm/WasmSections.h: * wasm/WasmSignatureInlines.h: (JSC::Wasm::SignatureInformation::get): * wasm/WasmWorklist.cpp: (JSC::Wasm::Worklist::enqueue): * wasm/js/JSToWasm.cpp: (JSC::Wasm::createJSToWasmWrapper): * wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::previousInstanceOffset const): Source/WebCore: 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. * Modules/fetch/FetchBodySource.cpp: (WebCore::FetchBodySource::close): * Modules/fetch/FetchBodySource.h: * Modules/webdatabase/DatabaseDetails.h: (WebCore::DatabaseDetails::DatabaseDetails): (WebCore::DatabaseDetails::operator=): * Modules/webdatabase/DatabaseTask.cpp: (WebCore::DatabaseTask::performTask): * Modules/webdatabase/DatabaseTask.h: * Modules/webdatabase/DatabaseThread.cpp: (WebCore::DatabaseThread::terminationRequested const): * Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h: (WebCore::WHLSL::AST::TypeAnnotation::TypeAnnotation): * Modules/webgpu/WHLSL/WHLSLHighZombieFinder.cpp: (WebCore::WHLSL::findHighZombies): * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp: (WebCore::WHLSL::matches): * Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp: (WebCore::WHLSL::checkLiteralTypes): * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: (WebCore::WHLSL::FindAllTypes::appendNamedType): * bindings/js/JSCallbackData.h: * bindings/js/JSLazyEventListener.cpp: * bindings/js/JSLazyEventListener.h: * contentextensions/ContentExtensionCompiler.cpp: (WebCore::ContentExtensions::compileRuleList): * css/CSSCalculationValue.cpp: (WebCore::CSSCalcOperationNode::primitiveType const): * css/CSSComputedStyleDeclaration.cpp: (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): * css/CSSPrimitiveValue.cpp: * css/CSSSelector.cpp: (WebCore::CSSSelector::selectorText const): * css/CSSStyleSheet.cpp: * dom/ActiveDOMObject.cpp: (WebCore::ActiveDOMObject::suspendIfNeeded): (WebCore::ActiveDOMObject::assertSuspendIfNeededWasCalled const): * dom/ActiveDOMObject.h: * dom/ContainerNode.cpp: * dom/ContainerNodeAlgorithms.cpp: * dom/ContainerNodeAlgorithms.h: * dom/CustomElementReactionQueue.cpp: * dom/CustomElementReactionQueue.h: (WebCore::CustomElementReactionDisallowedScope::CustomElementReactionDisallowedScope): (WebCore::CustomElementReactionDisallowedScope::~CustomElementReactionDisallowedScope): * dom/Document.cpp: (WebCore::Document::hitTest): * dom/Document.h: (WebCore::Document::decrementReferencingNodeCount): * dom/Element.cpp: (WebCore::Element::addShadowRoot): (WebCore::Element::getURLAttribute const): (WebCore::Element::getNonEmptyURLAttribute const): * dom/Element.h: * dom/ElementAndTextDescendantIterator.h: (WebCore::ElementAndTextDescendantIterator::ElementAndTextDescendantIterator): (WebCore::ElementAndTextDescendantIterator::dropAssertions): (WebCore::ElementAndTextDescendantIterator::popAncestorSiblingStack): (WebCore::ElementAndTextDescendantIterator::traverseNextSibling): (WebCore::ElementAndTextDescendantIterator::traversePreviousSibling): * dom/ElementDescendantIterator.h: (WebCore::ElementDescendantIterator::ElementDescendantIterator): (WebCore::ElementDescendantIterator::dropAssertions): (WebCore::ElementDescendantIterator::operator++): (WebCore::ElementDescendantIterator::operator--): (WebCore::ElementDescendantConstIterator::ElementDescendantConstIterator): (WebCore::ElementDescendantConstIterator::dropAssertions): (WebCore::ElementDescendantConstIterator::operator++): * dom/ElementIterator.h: (WebCore::ElementIterator<ElementType>::ElementIterator): (WebCore::ElementIterator<ElementType>::traverseNext): (WebCore::ElementIterator<ElementType>::traversePrevious): (WebCore::ElementIterator<ElementType>::traverseNextSibling): (WebCore::ElementIterator<ElementType>::traversePreviousSibling): (WebCore::ElementIterator<ElementType>::traverseNextSkippingChildren): (WebCore::ElementIterator<ElementType>::dropAssertions): (WebCore::ElementIterator<ElementType>::traverseAncestor): (WebCore::ElementConstIterator<ElementType>::ElementConstIterator): (WebCore::ElementConstIterator<ElementType>::traverseNext): (WebCore::ElementConstIterator<ElementType>::traversePrevious): (WebCore::ElementConstIterator<ElementType>::traverseNextSibling): (WebCore::ElementConstIterator<ElementType>::traversePreviousSibling): (WebCore::ElementConstIterator<ElementType>::traverseNextSkippingChildren): (WebCore::ElementConstIterator<ElementType>::traverseAncestor): (WebCore::ElementConstIterator<ElementType>::dropAssertions): * dom/EventContext.cpp: * dom/EventContext.h: * dom/EventListener.h: * dom/EventPath.cpp: * dom/EventSender.h: * dom/EventTarget.cpp: (WebCore::EventTarget::addEventListener): (WebCore::EventTarget::setAttributeEventListener): (WebCore::EventTarget::innerInvokeEventListeners): * dom/Node.cpp: (WebCore::Node::~Node): (WebCore::Node::moveNodeToNewDocument): (WebCore::Node::removedLastRef): * dom/Node.h: (WebCore::Node::deref const): * dom/ScriptDisallowedScope.h: (WebCore::ScriptDisallowedScope::InMainThread::isEventDispatchAllowedInSubtree): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::~ScriptExecutionContext): * dom/ScriptExecutionContext.h: * dom/SelectorQuery.cpp: (WebCore::SelectorDataList::execute const): * dom/SlotAssignment.cpp: (WebCore::SlotAssignment::addSlotElementByName): (WebCore::SlotAssignment::removeSlotElementByName): (WebCore::SlotAssignment::resolveSlotsAfterSlotMutation): (WebCore::SlotAssignment::findFirstSlotElement): * dom/SlotAssignment.h: * dom/TreeScopeOrderedMap.cpp: (WebCore::TreeScopeOrderedMap::add): (WebCore::TreeScopeOrderedMap::get const): * dom/TreeScopeOrderedMap.h: * fileapi/Blob.cpp: * fileapi/Blob.h: * history/BackForwardCache.cpp: (WebCore::BackForwardCache::removeAllItemsForPage): * history/BackForwardCache.h: * html/CanvasBase.cpp: (WebCore::CanvasBase::notifyObserversCanvasDestroyed): * html/CanvasBase.h: * html/HTMLCollection.h: (WebCore::CollectionNamedElementCache::didPopulate): * html/HTMLSelectElement.cpp: (WebCore:: const): * html/HTMLTableRowsCollection.cpp: (WebCore::assertRowIsInTable): * html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::indexForPosition const): * html/canvas/CanvasRenderingContext2DBase.cpp: (WebCore::CanvasRenderingContext2DBase::~CanvasRenderingContext2DBase): * html/parser/HTMLParserScheduler.cpp: (WebCore::HTMLParserScheduler::HTMLParserScheduler): (WebCore::HTMLParserScheduler::suspend): (WebCore::HTMLParserScheduler::resume): * html/parser/HTMLParserScheduler.h: * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginStartTag): (WebCore::HTMLToken::beginEndTag): (WebCore::HTMLToken::endAttribute): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::HTMLTreeBuilder): (WebCore::HTMLTreeBuilder::constructTree): * html/parser/HTMLTreeBuilder.h: (WebCore::HTMLTreeBuilder::~HTMLTreeBuilder): * layout/FormattingContext.cpp: (WebCore::Layout::FormattingContext::geometryForBox const): * layout/blockformatting/BlockFormattingContext.cpp: (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition): * layout/blockformatting/BlockFormattingContext.h: * layout/displaytree/DisplayBox.cpp: (WebCore::Display::Box::Box): * layout/displaytree/DisplayBox.h: (WebCore::Display::Box::setTopLeft): (WebCore::Display::Box::setTop): (WebCore::Display::Box::setLeft): (WebCore::Display::Box::setContentBoxHeight): (WebCore::Display::Box::setContentBoxWidth): (WebCore::Display::Box::setHorizontalMargin): (WebCore::Display::Box::setVerticalMargin): (WebCore::Display::Box::setHorizontalComputedMargin): (WebCore::Display::Box::setBorder): (WebCore::Display::Box::setPadding): * layout/displaytree/DisplayInlineRect.h: (WebCore::Display::InlineRect::InlineRect): (WebCore::Display::InlineRect::setTopLeft): (WebCore::Display::InlineRect::setTop): (WebCore::Display::InlineRect::setBottom): (WebCore::Display::InlineRect::setLeft): (WebCore::Display::InlineRect::setWidth): (WebCore::Display::InlineRect::setHeight): * layout/displaytree/DisplayLineBox.h: (WebCore::Display::LineBox::LineBox): (WebCore::Display::LineBox::setBaselineOffsetIfGreater): (WebCore::Display::LineBox::resetBaseline): (WebCore::Display::LineBox::Baseline::Baseline): (WebCore::Display::LineBox::Baseline::setAscent): (WebCore::Display::LineBox::Baseline::setDescent): (WebCore::Display::LineBox::Baseline::reset): * layout/displaytree/DisplayRect.h: (WebCore::Display::Rect::Rect): (WebCore::Display::Rect::setTopLeft): (WebCore::Display::Rect::setTop): (WebCore::Display::Rect::setLeft): (WebCore::Display::Rect::setWidth): (WebCore::Display::Rect::setHeight): (WebCore::Display::Rect::setSize): (WebCore::Display::Rect::clone const): * layout/floats/FloatingContext.cpp: * layout/inlineformatting/InlineLineBuilder.cpp: (WebCore::Layout::LineBuilder::CollapsibleContent::collapse): * layout/tableformatting/TableGrid.cpp: (WebCore::Layout::TableGrid::Column::setWidthConstraints): (WebCore::Layout::TableGrid::Column::setLogicalWidth): (WebCore::Layout::TableGrid::Column::setLogicalLeft): * layout/tableformatting/TableGrid.h: * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::continueAfterContentPolicy): (WebCore::DocumentLoader::attachToFrame): (WebCore::DocumentLoader::detachFromFrame): (WebCore::DocumentLoader::addSubresourceLoader): * loader/DocumentLoader.h: * loader/ImageLoader.cpp: * loader/cache/CachedResource.h: * loader/cache/MemoryCache.cpp: (WebCore::MemoryCache::lruListFor): (WebCore::MemoryCache::removeFromLRUList): * page/FrameView.cpp: (WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive): * page/FrameViewLayoutContext.cpp: * page/FrameViewLayoutContext.h: * page/Page.cpp: * page/Page.h: * page/ViewportConfiguration.cpp: * page/ViewportConfiguration.h: * page/mac/EventHandlerMac.mm: (WebCore::CurrentEventScope::CurrentEventScope): * platform/DateComponents.cpp: (WebCore::DateComponents::toStringForTime const): * platform/ScrollableArea.cpp: * platform/SharedBuffer.cpp: (WebCore::SharedBuffer::combineIntoOneSegment const): * platform/SharedBuffer.h: * platform/Supplementable.h: * platform/Timer.cpp: (WebCore::TimerBase::checkHeapIndex const): (WebCore::TimerBase::updateHeapIfNeeded): * platform/graphics/BitmapImage.cpp: * platform/graphics/BitmapImage.h: * platform/graphics/Image.h: * platform/graphics/ShadowBlur.cpp: (WebCore::ScratchBuffer::ScratchBuffer): (WebCore::ScratchBuffer::getScratchBuffer): (WebCore::ScratchBuffer::scheduleScratchBufferPurge): * platform/graphics/ca/win/CACFLayerTreeHost.cpp: (WebCore::CACFLayerTreeHost::setWindow): * platform/graphics/ca/win/CACFLayerTreeHost.h: * platform/graphics/cg/ImageBufferDataCG.cpp: (WebCore::ImageBufferData::putData): * platform/graphics/cocoa/FontCacheCoreText.cpp: * platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp: (gstAllocatorFastMallocFree): * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: (Nicosia::PaintingContextCairo::ForPainting::ForPainting): * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp: (Nicosia::BackingStoreTextureMapperImpl::createTile): * platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: (Nicosia::ContentLayerTextureMapperImpl::~ContentLayerTextureMapperImpl): * platform/graphics/win/GradientDirect2D.cpp: (WebCore::Gradient::fill): * platform/graphics/win/ImageBufferDataDirect2D.cpp: (WebCore::ImageBufferData::putData): * platform/graphics/win/PathDirect2D.cpp: (WebCore::Path::appendGeometry): (WebCore::Path::Path): (WebCore::Path::operator=): (WebCore::Path::strokeContains const): (WebCore::Path::transform): * platform/graphics/win/PlatformContextDirect2D.cpp: (WebCore::PlatformContextDirect2D::setTags): * platform/mediastream/MediaStreamTrackPrivate.h: * platform/mediastream/RealtimeOutgoingAudioSource.cpp: (WebCore::RealtimeOutgoingAudioSource::~RealtimeOutgoingAudioSource): * platform/mediastream/RealtimeOutgoingVideoSource.cpp: (WebCore::RealtimeOutgoingVideoSource::~RealtimeOutgoingVideoSource): * platform/network/HTTPParsers.cpp: (WebCore::isCrossOriginSafeHeader): * platform/sql/SQLiteDatabase.cpp: * platform/sql/SQLiteDatabase.h: * platform/sql/SQLiteStatement.cpp: (WebCore::SQLiteStatement::SQLiteStatement): (WebCore::SQLiteStatement::prepare): (WebCore::SQLiteStatement::finalize): * platform/sql/SQLiteStatement.h: * platform/win/COMPtr.h: * rendering/ComplexLineLayout.cpp: (WebCore::ComplexLineLayout::removeInlineBox const): * rendering/FloatingObjects.cpp: (WebCore::FloatingObject::FloatingObject): (WebCore::FloatingObjects::addPlacedObject): (WebCore::FloatingObjects::removePlacedObject): * rendering/FloatingObjects.h: * rendering/GridTrackSizingAlgorithm.cpp: * rendering/GridTrackSizingAlgorithm.h: * rendering/LayoutDisallowedScope.cpp: * rendering/LayoutDisallowedScope.h: * rendering/RenderBlock.cpp: * rendering/RenderBlock.h: * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutBlockChild): (WebCore::RenderBlockFlow::removeFloatingObject): (WebCore::RenderBlockFlow::ensureLineBoxes): * rendering/RenderBoxModelObject.cpp: * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutBlock): * rendering/RenderElement.cpp: * rendering/RenderGeometryMap.cpp: (WebCore::RenderGeometryMap::mapToContainer const): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::placeItemsOnGrid const): (WebCore::RenderGrid::baselinePosition const): * rendering/RenderInline.cpp: (WebCore::RenderInline::willBeDestroyed): * rendering/RenderLayer.cpp: (WebCore::ClipRectsCache::ClipRectsCache): (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::paintList): (WebCore::RenderLayer::hitTestLayer): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::calculateClipRects const): * rendering/RenderLayer.h: * rendering/RenderLayerBacking.cpp: (WebCore::traverseVisibleNonCompositedDescendantLayers): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): (WebCore::RenderLayerCompositor::addDescendantsToOverlapMapRecursive const): (WebCore::RenderLayerCompositor::recursiveRepaintLayer): (WebCore::RenderLayerCompositor::layerHas3DContent const): * rendering/RenderLayoutState.cpp: (WebCore::RenderLayoutState::RenderLayoutState): (WebCore::RenderLayoutState::computeOffsets): (WebCore::RenderLayoutState::addLayoutDelta): * rendering/RenderLayoutState.h: (WebCore::RenderLayoutState::RenderLayoutState): * rendering/RenderObject.cpp: (WebCore::RenderObject::RenderObject): (WebCore::RenderObject::~RenderObject): (WebCore::RenderObject::clearNeedsLayout): * rendering/RenderObject.h: * rendering/RenderQuote.cpp: (WebCore::quotesForLanguage): * rendering/RenderTableCell.h: * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::computeOverflowFromCells): * rendering/RenderTextLineBoxes.cpp: (WebCore::RenderTextLineBoxes::checkConsistency const): * rendering/RenderTextLineBoxes.h: * rendering/line/BreakingContext.h: (WebCore::tryHyphenating): * rendering/style/GridArea.h: (WebCore::GridSpan::GridSpan): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::~RenderStyle): * rendering/style/RenderStyle.h: * rendering/updating/RenderTreeBuilderRuby.cpp: (WebCore::RenderTreeBuilder::Ruby::detach): * rendering/updating/RenderTreePosition.cpp: (WebCore::RenderTreePosition::computeNextSibling): * rendering/updating/RenderTreePosition.h: * svg/SVGToOTFFontConversion.cpp: (WebCore::SVGToOTFFontConverter::Placeholder::Placeholder): (WebCore::SVGToOTFFontConverter::Placeholder::populate): (WebCore::SVGToOTFFontConverter::appendCFFTable): (WebCore::SVGToOTFFontConverter::firstGlyph const): (WebCore::SVGToOTFFontConverter::appendKERNTable): * svg/SVGTransformDistance.cpp: (WebCore::SVGTransformDistance::SVGTransformDistance): (WebCore::SVGTransformDistance::scaledDistance const): (WebCore::SVGTransformDistance::addSVGTransforms): (WebCore::SVGTransformDistance::addToSVGTransform const): (WebCore::SVGTransformDistance::distance const): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::nativeImage): * testing/InternalSettings.cpp: * workers/service/ServiceWorkerJob.h: * worklets/PaintWorkletGlobalScope.h: (WebCore::PaintWorkletGlobalScope::~PaintWorkletGlobalScope): * xml/XPathStep.cpp: Source/WebKit: 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. * NetworkProcess/NetworkSession.cpp: (WebKit::NetworkSession::invalidateAndCancel): * NetworkProcess/NetworkSession.h: * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::setCapacity): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (toNSURLSessionResponseDisposition): (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): * Platform/IPC/Connection.cpp: (IPC::Connection::waitForMessage): * Platform/IPC/MessageReceiver.h: (IPC::MessageReceiver::willBeAddedToMessageReceiverMap): (IPC::MessageReceiver::willBeRemovedFromMessageReceiverMap): * Platform/IPC/cocoa/ConnectionCocoa.mm: (IPC::readFromMachPort): * Platform/mac/MachUtilities.cpp: (setMachExceptionPort): * Shared/API/APIClient.h: (API::Client::Client): * Shared/API/Cocoa/WKRemoteObjectCoder.mm: * Shared/Cocoa/ArgumentCodersCocoa.h: * Shared/SharedStringHashTableReadOnly.cpp: * UIProcess/BackingStore.cpp: (WebKit::BackingStore::incorporateUpdate): * UIProcess/GenericCallback.h: * UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::ProcessLauncher::launchProcess): * UIProcess/PageLoadState.h: (WebKit::PageLoadState::Transaction::Token::Token): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::~WebPageProxy): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResponse): * WebProcess/Network/WebResourceLoader.h: * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::NetscapePluginStream): (WebKit::NetscapePluginStream::notifyAndDestroyStream): * WebProcess/Plugins/Netscape/NetscapePluginStream.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::runModal): * WebProcess/WebProcess.cpp: (WebKit::checkDocumentsCaptureStateConsistency): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::updateProcessName): Source/WebKitLegacy: 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. * Storage/StorageAreaImpl.cpp: (WebKit::StorageAreaImpl::StorageAreaImpl): (WebKit::StorageAreaImpl::close): * Storage/StorageAreaImpl.h: Source/WebKitLegacy/mac: 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. * History/WebHistory.mm: (-[WebHistoryPrivate removeItemForURLString:]): * WebView/WebFrame.mm: Source/WebKitLegacy/win: 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. * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp: (WKQCA::CAD3DRenderer::swapChain): (WKQCA::CAD3DRenderer::initialize): * WebKitQuartzCoreAdditions/CAD3DRenderer.h: * WebView.cpp: (WebView::Release): * WebView.h: Source/WTF: 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. This patch did the following changes: 1. Replaced ASSERT_DISABLED with ASSERT_ENABLED. This change does away with the need for the double negative !ASSERT_DISABLED test that is commonly used all over the code, thereby improving code readability. In Assertions.h, there is also BACKTRACE_DISABLED, ASSERT_MSG_DISABLED, ASSERT_ARG_DISABLED, FATAL_DISABLED, ERROR_DISABLED, LOG_DISABLED, and RELEASE_LOG_DISABLED. We should replace those with ..._ENABLED equivalents as well. We'll do that in another patch. For now, they are left as is to minimize the size of this patch. See https://bugs.webkit.org/show_bug.cgi?id=205780. 2. Fixed some code was guarded with "#ifndef NDEBUG" that should actually be guarded by "#if ASSERT_ENABLED" instead. 3. In cases where the change is minimal, we move some code around so that we can test for "#if ASSERT_ENABLED" instead of "#if !ASSERT_ENABLED". * wtf/Assertions.h: * wtf/AutomaticThread.cpp: (WTF::AutomaticThread::start): * wtf/BitVector.h: * wtf/BlockObjCExceptions.mm: (ReportBlockedObjCException): * wtf/BloomFilter.h: * wtf/CallbackAggregator.h: (WTF::CallbackAggregator::CallbackAggregator): * wtf/CheckedArithmetic.h: (WTF::observesOverflow<AssertNoOverflow>): * wtf/CheckedBoolean.h: (CheckedBoolean::CheckedBoolean): (CheckedBoolean::operator bool): * wtf/CompletionHandler.h: (WTF::CompletionHandler<Out): * wtf/DateMath.cpp: (WTF::initializeDates): * wtf/Gigacage.cpp: (Gigacage::tryAllocateZeroedVirtualPages): * wtf/HashTable.h: (WTF::KeyTraits>::checkKey): (WTF::KeyTraits>::checkTableConsistencyExceptSize const): * wtf/LoggerHelper.h: * wtf/NaturalLoops.h: (WTF::NaturalLoops::headerOf const): * wtf/NeverDestroyed.h: (WTF::LazyNeverDestroyed::construct): * wtf/OptionSet.h: (WTF::OptionSet::OptionSet): * wtf/Platform.h: * wtf/PtrTag.h: * wtf/RefCounted.h: (WTF::RefCountedBase::disableThreadingChecks): (WTF::RefCountedBase::enableThreadingChecksGlobally): (WTF::RefCountedBase::RefCountedBase): (WTF::RefCountedBase::applyRefDerefThreadingCheck const): * wtf/SingleRootGraph.h: (WTF::SingleRootGraph::assertIsConsistent const): * wtf/SizeLimits.cpp: * wtf/StackBounds.h: (WTF::StackBounds::checkConsistency const): * wtf/URLParser.cpp: (WTF::URLParser::URLParser): (WTF::URLParser::domainToASCII): * wtf/ValueCheck.h: * wtf/Vector.h: (WTF::Malloc>::checkConsistency): * wtf/WeakHashSet.h: * wtf/WeakPtr.h: (WTF::WeakPtrImpl::WeakPtrImpl): (WTF::WeakPtrFactory::WeakPtrFactory): * wtf/text/AtomStringImpl.cpp: * wtf/text/AtomStringImpl.h: * wtf/text/StringBuilder.cpp: (WTF::StringBuilder::reifyString const): * wtf/text/StringBuilder.h: * wtf/text/StringCommon.h: (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon): * wtf/text/StringHasher.h: (WTF::StringHasher::addCharacters): * wtf/text/StringImpl.h: * wtf/text/SymbolImpl.h: * wtf/text/UniquedStringImpl.h: Tools: Remove WebsiteDataStore::setServiceWorkerRegistrationDirectory https://bugs.webkit.org/show_bug.cgi?id=205754 Patch by Alex Christensen <achristensen@webkit.org> on 2020-01-06 Reviewed by Youenn Fablet. * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm: * WebKitTestRunner/TestController.cpp: (WTR::TestController::websiteDataStore): (WTR::TestController::platformAdjustContext): * WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::initializeWebViewConfiguration): Canonical link: https://commits.webkit.org/218957@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254087 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-06 22:24:50 +00:00
2020-01-06 Mark Lam <mark.lam@apple.com>
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:
Rename GraphicsContext3D to GraphicsContextGL https://bugs.webkit.org/show_bug.cgi?id=205778 <rdar://problem/58327597> 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). .: * Source/CMakeLists.txt: * Source/cmake/OptionsFTW.cmake: * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsMac.cmake: * Source/cmake/OptionsPlayStation.cmake: * Source/cmake/OptionsWPE.cmake: * Source/cmake/OptionsWinCairo.cmake: PerformanceTests: * StitchMarker/wtf/FeatureDefines.h: * StitchMarker/wtf/Platform.h: Source/WebCore: * CMakeLists.txt: * Headers.cmake: * PlatformAppleWin.cmake: * PlatformFTW.cmake: * PlatformGTK.cmake: * PlatformMac.cmake: * PlatformPlayStation.cmake: * PlatformWin.cmake: * Sources.txt: * SourcesCocoa.txt: * SourcesGTK.txt: * SourcesWPE.txt: * WebCore.xcodeproj/project.pbxproj: * html/HTMLVideoElement.cpp: * html/HTMLVideoElement.h: * html/OffscreenCanvas.cpp: * html/canvas/ANGLEInstancedArrays.cpp: * html/canvas/OESVertexArrayObject.cpp: * html/canvas/WebGL2RenderingContext.cpp: * html/canvas/WebGL2RenderingContext.h: * html/canvas/WebGLActiveInfo.h: * html/canvas/WebGLBuffer.cpp: * html/canvas/WebGLBuffer.h: * html/canvas/WebGLCompressedTextureASTC.cpp: * html/canvas/WebGLCompressedTextureATC.cpp: * html/canvas/WebGLCompressedTextureETC.cpp: * html/canvas/WebGLCompressedTextureETC1.cpp: * html/canvas/WebGLCompressedTexturePVRTC.cpp: * html/canvas/WebGLCompressedTextureS3TC.cpp: * html/canvas/WebGLContextAttributes.h: * html/canvas/WebGLContextGroup.cpp: * html/canvas/WebGLContextGroup.h: * html/canvas/WebGLContextObject.cpp: * html/canvas/WebGLContextObject.h: * html/canvas/WebGLDebugShaders.cpp: * html/canvas/WebGLDepthTexture.cpp: * html/canvas/WebGLDepthTexture.h: * html/canvas/WebGLDrawBuffers.cpp: * html/canvas/WebGLFramebuffer.cpp: * html/canvas/WebGLFramebuffer.h: * html/canvas/WebGLObject.cpp: * html/canvas/WebGLObject.h: * html/canvas/WebGLProgram.cpp: * html/canvas/WebGLProgram.h: * html/canvas/WebGLQuery.cpp: * html/canvas/WebGLQuery.h: * html/canvas/WebGLRenderbuffer.cpp: * html/canvas/WebGLRenderbuffer.h: * html/canvas/WebGLRenderingContext.cpp: * html/canvas/WebGLRenderingContext.h: * html/canvas/WebGLRenderingContextBase.cpp: * html/canvas/WebGLRenderingContextBase.h: * html/canvas/WebGLSampler.cpp: * html/canvas/WebGLSampler.h: * html/canvas/WebGLShader.cpp: * html/canvas/WebGLShader.h: * html/canvas/WebGLShaderPrecisionFormat.h: * html/canvas/WebGLSharedObject.cpp: * html/canvas/WebGLSharedObject.h: * html/canvas/WebGLSync.cpp: * html/canvas/WebGLSync.h: * html/canvas/WebGLTexture.cpp: * html/canvas/WebGLTexture.h: * html/canvas/WebGLTransformFeedback.cpp: * html/canvas/WebGLTransformFeedback.h: * html/canvas/WebGLVertexArrayObject.cpp: * html/canvas/WebGLVertexArrayObject.h: * html/canvas/WebGLVertexArrayObjectBase.cpp: * html/canvas/WebGLVertexArrayObjectBase.h: * html/canvas/WebGLVertexArrayObjectOES.cpp: * html/canvas/WebGLVertexArrayObjectOES.h: * inspector/InspectorShaderProgram.cpp: * loader/FrameLoaderClient.h: * page/Chrome.cpp: * platform/SourcesCairo.txt: * platform/TextureMapper.cmake: * platform/WebGLStateTracker.cpp: * platform/WebGLStateTracker.h: * platform/graphics/ANGLEWebKitBridge.cpp: * platform/graphics/ExtensionsGL.h: Renamed from Source/WebCore/platform/graphics/Extensions3D.h. * platform/graphics/FormatConverter.cpp: * platform/graphics/FormatConverter.h: * platform/graphics/GLContext.cpp: * platform/graphics/GLContext.h: * platform/graphics/GraphicsContext.h: * platform/graphics/GraphicsContext3D.cpp: Removed. * platform/graphics/GraphicsContext3DBase.cpp: Removed. * platform/graphics/GraphicsContextGL.cpp: Added. * platform/graphics/GraphicsContextGL.h: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DBase.h. * platform/graphics/GraphicsContextGLAttributes.h: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DAttributes.h. * platform/graphics/ImageBuffer.cpp: * platform/graphics/ImageBuffer.h: * platform/graphics/MediaPlayer.cpp: * platform/graphics/MediaPlayer.h: * platform/graphics/MediaPlayerPrivate.h: * platform/graphics/OpenGLShims.cpp: * platform/graphics/angle/ExtensionsGLANGLE.cpp: Renamed from Source/WebCore/platform/graphics/angle/Extensions3DANGLE.cpp. * platform/graphics/angle/ExtensionsGLANGLE.h: Renamed from Source/WebCore/platform/graphics/angle/Extensions3DANGLE.h. * platform/graphics/angle/GraphicsContextGLANGLE.cpp: Renamed from Source/WebCore/platform/graphics/angle/GraphicsContext3DANGLE.cpp. * platform/graphics/angle/TemporaryANGLESetting.cpp: * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: * platform/graphics/cairo/GraphicsContextGLCairo.cpp: Renamed from Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp. * platform/graphics/cairo/ImageBufferCairo.cpp: * platform/graphics/cg/GraphicsContextGLCG.cpp: Renamed from Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp. * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: Renamed from Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm. * platform/graphics/cocoa/IOSurface.mm: * platform/graphics/cocoa/WebGLLayer.h: * platform/graphics/cocoa/WebGLLayer.mm: * platform/graphics/cpu/arm/GraphicsContextGLNEON.h: Renamed from Source/WebCore/platform/graphics/cpu/arm/GraphicsContext3DNEON.h. * platform/graphics/cv/TextureCacheCV.h: * platform/graphics/cv/TextureCacheCV.mm: * platform/graphics/cv/VideoTextureCopierCV.cpp: * platform/graphics/cv/VideoTextureCopierCV.h: * platform/graphics/egl/GLContextEGL.cpp: * platform/graphics/egl/GLContextEGL.h: * platform/graphics/glx/GLContextGLX.cpp: * platform/graphics/glx/GLContextGLX.h: * platform/graphics/gpu/Texture.cpp: * platform/graphics/gpu/Texture.h: * platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: * platform/graphics/ios/GraphicsContextGLOpenGLESIOS.h: Renamed from Source/WebCore/platform/graphics/ios/GraphicsContext3DIOS.h. * platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.cpp: * platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.h: * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h: * platform/graphics/opengl/ExtensionsGLOpenGL.cpp: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp. * platform/graphics/opengl/ExtensionsGLOpenGL.h: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h. * platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp. * platform/graphics/opengl/ExtensionsGLOpenGLCommon.h: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.h. * platform/graphics/opengl/ExtensionsGLOpenGLES.cpp: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLES.cpp. * platform/graphics/opengl/ExtensionsGLOpenGLES.h: Renamed from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLES.h. * platform/graphics/opengl/GraphicsContextGLOpenGL.cpp: Added. * platform/graphics/opengl/GraphicsContextGLOpenGL.h: Renamed from Source/WebCore/platform/graphics/GraphicsContext3D.h. * platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp: Renamed from Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp. * platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp: Renamed from Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp. * platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp: Renamed from Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp. * platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DManager.cpp. * platform/graphics/opengl/GraphicsContextGLOpenGLManager.h: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DManager.h. * platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp. * platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.h: Renamed from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.h. * platform/graphics/opengl/TemporaryOpenGLSetting.cpp: * platform/graphics/opengl/TemporaryOpenGLSetting.h: * platform/graphics/texmap/BitmapTextureGL.cpp: * platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp: Renamed from Source/WebCore/platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp. * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h: * platform/graphics/texmap/TextureMapperGL.cpp: * platform/graphics/win/GraphicsContextGLDirect2D.cpp: Renamed from Source/WebCore/platform/graphics/win/GraphicsContext3DDirect2D.cpp. * testing/Internals.cpp: Source/WebKit: * CMakeLists.txt: * UIProcess/gtk/WaylandCompositor.cpp: (WebKit::WaylandCompositor::initializeEGL): * UIProcess/mac/HighPerformanceGPUManager.cpp: * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::copyVideoTextureToPlatformTexture): * WebProcess/GPU/media/MediaPlayerPrivateRemote.h: * WebProcess/WebPage/WebPage.cpp: * WebProcess/WebPage/mac/WebPageMac.mm: * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::displayConfigurationChanged): Source/WTF: * wtf/FeatureDefines.h: * wtf/Platform.h: Tools: * Scripts/webkitpy/common/config/watchlist: Canonical link: https://commits.webkit.org/218939@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254064 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-06 18:52:42 +00:00
2020-01-05 Dean Jackson <dino@apple.com>
Rename GraphicsContext3D to GraphicsContextGL
https://bugs.webkit.org/show_bug.cgi?id=205778
<rdar://problem/58327597>
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 <antti@apple.com>
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):
Put OffscreenCanvas behind a build flag https://bugs.webkit.org/show_bug.cgi?id=203146 Patch by Chris Lord <clord@igalia.com> on 2019-10-26 Reviewed by Ryosuke Niwa. .: Put OffscreenCanvas behind a build flag and enable building with experimental features on GTK and WPE. * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsWPE.cmake: * Source/cmake/WebKitFeatures.cmake: LayoutTests/imported/w3c: OffscreenCanvas is disabled by default, adjust expectations accordingly. * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt: * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt: * web-platform-tests/html/dom/idlharness.https-expected.txt: * web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt: PerformanceTests: * StitchMarker/wtf/FeatureDefines.h: Source/JavaScriptCore: * Configurations/FeatureDefines.xcconfig: Source/WebCore: No new tests. No behavior changes. * Configurations/FeatureDefines.xcconfig: * bindings/js/JSEventTargetCustom.cpp: * bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp: * dom/EventTargetFactory.in: * html/ImageBitmap.idl: * html/OffscreenCanvas.cpp: * html/OffscreenCanvas.h: * html/OffscreenCanvas.idl: * html/canvas/CanvasRenderingContext.cpp: * html/canvas/ImageBitmapRenderingContext.idl: * html/canvas/OffscreenCanvasRenderingContext2D.cpp: * html/canvas/OffscreenCanvasRenderingContext2D.h: * html/canvas/OffscreenCanvasRenderingContext2D.idl: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::canvas): * html/canvas/WebGLRenderingContextBase.h: * html/canvas/WebGLRenderingContextBase.idl: * inspector/agents/InspectorCanvasAgent.cpp: * page/PageConsoleClient.cpp: (WebCore::canvasRenderingContext): * page/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::setImageBitmapEnabled): (WebCore::RuntimeEnabledFeatures::imageBitmapEnabled const): (WebCore::RuntimeEnabledFeatures::setOffscreenCanvasEnabled): (WebCore::RuntimeEnabledFeatures::offscreenCanvasEnabled const): * page/WindowOrWorkerGlobalScope.idl: Source/WebCore/PAL: * Configurations/FeatureDefines.xcconfig: Source/WebKit: Split the ImageBitmapOffscreenCanvas setting into two separate settings so OffscreenCanvas can be disabled at build time. * Configurations/FeatureDefines.xcconfig: * Shared/WebPreferences.yaml: * Shared/WebPreferencesDefaultValues.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::WebInspectorUI): Source/WebKitLegacy/mac: * Configurations/FeatureDefines.xcconfig: Source/WTF: * wtf/FeatureDefines.h: Tools: Put OffscreenCanvas behind a build flag and enable the runtime setting when running tests on platforms where it's built (GTK and WPE). * Scripts/webkitperl/FeatureList.pm: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::beginTesting): * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setOffscreenCanvasEnabled): * WebKitTestRunner/InjectedBundle/TestRunner.h: Websites/webkit.org: Update to reflect split ImageBitmapOffscreenCanvas settings. * experimental-features.html: LayoutTests: OffscreenCanvas is disabled by default except on GTK/WPE. Adjust test expectations accordingly. * TestExpectations: * platform/gtk/TestExpectations: * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt. * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt. * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt. * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt: Renamed from LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt. * platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt. * platform/gtk/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt. * platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt: * platform/ios/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: * platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt: * platform/wpe/TestExpectations: * platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt. * platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt. * platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt. * platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt. * platform/wpe/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window-expected.txt. Canonical link: https://commits.webkit.org/216857@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-26 07:12:47 +00:00
2019-10-26 Chris Lord <clord@igalia.com>
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 <clopez@igalia.com>
[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 <sbarati@apple.com>
Have a CLI version of JetStream 2 to run on watchOS
https://bugs.webkit.org/show_bug.cgi?id=202998
<rdar://problem/56208554>
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 <aperez@igalia.com>
[Linux] Avoid usage of <sys/sysctl.h> in MallocBench
https://bugs.webkit.org/show_bug.cgi?id=203109
Reviewed by Carlos Alberto Lopez Perez.
* MallocBench/MallocBench/CPUCount.cpp: Only include <sys/sysctl.h> if
the sysctl() function will be used.
2019-10-17 Carlos Alberto Lopez Perez <clopez@igalia.com>
[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.
[BigInt] Add ValueBitRShift into DFG https://bugs.webkit.org/show_bug.cgi?id=192663 Reviewed by Robin Morisset. JSTests: * stress/big-int-right-shift-jit-osr.js: Added. * stress/big-int-right-shift-jit-untyped.js: Added. * stress/big-int-right-shift-jit.js: Added. * stress/value-rshift-ai-rule.js: Added. PerformanceTests: * BigIntBench/big-int-simple-rshift.js: Added. (bigInt): Source/JavaScriptCore: We are introducing a new node called ValueBitRShift that is responsible to handle speculation of `UntypedUse` and `BigIntUse` during DFG. Following the approach of other bitwise operations, we now have 2 nodes to handle ">>" operator during JIT, mainly because of the introduction of BigInt, that makes this operator result into Int32 or BigInt. We renamed `BitRShift` to `ArithBitRShift` and such node handles Integers and Numbers speculation and can only return Int32 values. * bytecode/BytecodeList.rb: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): * bytecode/Opcode.h: Adding support to ValueProfile to `op_rshift` to be used during prediction propagation. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::handleConstantBinaryBitwiseOp): (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): Adding support to still do constant propagation of ValueBitRShift when it is `UntypedUse`. * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::isWithinPowerOfTwo): (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): `ValueBitRshift` can trigger GC when it is `BigIntUse` because the operation `JSBigInt::signedRightShift` potentially allocates new JSBigInts. It also can trigger GC when it is `UntypedUse` because it can execute arbitrary code. * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): The fixup rule of `ValueBitRShift` checks if it should fixup for `BigIntUse` or `UntypedUse`. If those checks fail, we fallback to `ArithBitRShift`. * dfg/DFGNode.h: (JSC::DFG::Node::hasNumericResult): (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: We are using the same rule used by `ValueBitLShift` to propagate types. We try to propagate the type based on operation's input, but fallback to `getHeapPrediction()` if this is not possible. * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::emitUntypedRightShiftBitOp): (JSC::DFG::SpeculativeJIT::compileValueBitRShift): (JSC::DFG::SpeculativeJIT::compileShiftOp): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::shiftOp): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGStrengthReductionPhase.cpp: (JSC::DFG::StrengthReductionPhase::handleNode): * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitRShift): (JSC::FTL::DFG::LowerDFGToB3::compileArithBitRShift): (JSC::FTL::DFG::LowerDFGToB3::compileBitRShift): Deleted. * llint/LowLevelInterpreter64.asm: * runtime/CommonSlowPaths.cpp: (JSC::SLOW_PATH_DECL): Canonical link: https://commits.webkit.org/215757@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250313 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-09-24 19:09:03 +00:00
2019-09-24 Caio Lima <ticaiolima@gmail.com>
[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 <jonlee@apple.com>
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.
Update .xcconfig symbols to reflect the current set of past and future product versions. https://bugs.webkit.org/show_bug.cgi?id=200720 <rdar://problem/54305032> 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. PerformanceTests: * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/DebugRelease.xcconfig: Source/bmalloc: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: Source/JavaScriptCore: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/ThirdParty: * gtest/xcode/Config/DebugProject.xcconfig: * gtest/xcode/Config/ReleaseProject.xcconfig: Source/ThirdParty/ANGLE: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WebCore: No new tests -- no new or changed functionality. * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WebCore/PAL: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WebInspectorUI: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WebKit: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: Source/WTF: * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: Tools: * ContentExtensionTester/Configurations/Base.xcconfig: * ContentExtensionTester/Configurations/DebugRelease.xcconfig: * DumpRenderTree/mac/Configurations/Base.xcconfig: * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: * ImageDiff/cg/Configurations/Base.xcconfig: * ImageDiff/cg/Configurations/DebugRelease.xcconfig: * MiniBrowser/Configurations/Base.xcconfig: * MiniBrowser/Configurations/DebugRelease.xcconfig: * TestWebKitAPI/Configurations/Base.xcconfig: * TestWebKitAPI/Configurations/DebugRelease.xcconfig: * WebEditingTester/Configurations/Base.xcconfig: * WebEditingTester/Configurations/DebugRelease.xcconfig: * WebKitTestRunner/Configurations/Base.xcconfig: * WebKitTestRunner/Configurations/DebugRelease.xcconfig: * lldb/lldbWebKitTester/Configurations/Base.xcconfig: * lldb/lldbWebKitTester/Configurations/DebugRelease.xcconfig: Canonical link: https://commits.webkit.org/214982@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249312 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-30 04:18:29 +00:00
2019-08-29 Keith Rollin <krollin@apple.com>
Update .xcconfig symbols to reflect the current set of past and future product versions.
https://bugs.webkit.org/show_bug.cgi?id=200720
<rdar://problem/54305032>
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:
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: Canonical link: https://commits.webkit.org/214694@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248947 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-21 17:21:27 +00:00
2019-08-21 Sihui Liu <sihui_liu@apple.com>
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:
Remove IDB-specific quota https://bugs.webkit.org/show_bug.cgi?id=196545 <rdar://problem/54201783> Reviewed by Youenn Fablet. PerformanceTests: * IndexedDB/large-binary-keys.html: * IndexedDB/large-string-keys.html: Source/WebCore: Re-land r248526 with fix for performance tests. No change of behavior as IDB specific quota is no longer used. Instead a global quota is used. This quota currently handles IDB and Cache API. * Modules/indexeddb/server/IDBBackingStore.h: * Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::createBackingStore): (WebCore::IDBServer::IDBServer::setPerOriginQuota): Deleted. * Modules/indexeddb/server/IDBServer.h: (WebCore::IDBServer::IDBServer::perOriginQuota const): Deleted. * Modules/indexeddb/server/MemoryIDBBackingStore.h: * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore): (WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction): (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue): (WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const): Deleted. (WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const): Deleted. * Modules/indexeddb/server/SQLiteIDBBackingStore.h: * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::setQuota): Deleted. * Modules/indexeddb/server/UniqueIDBDatabase.h: Source/WebKit: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::createIDBServer): (WebKit::NetworkProcess::addIndexedDatabaseSession): (WebKit::NetworkProcess::setIDBPerOriginQuota): Deleted. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * UIProcess/API/C/WKContext.cpp: (WKContextSetIDBPerOriginQuota): Deleted. * UIProcess/API/C/WKContextPrivate.h: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setIDBPerOriginQuota): Deleted. * UIProcess/WebProcessPool.h: Source/WebKitLegacy: * Storage/WebDatabaseProvider.cpp: (WebDatabaseProvider::setIDBPerOriginQuota): Deleted. * Storage/WebDatabaseProvider.h: Source/WebKitLegacy/mac: * Storage/WebDatabaseManager.mm: (-[WebDatabaseManager setIDBPerOriginQuota:]): Deleted. * Storage/WebDatabaseManagerPrivate.h: Source/WebKitLegacy/win: * Interfaces/IWebDatabaseManager.idl: * WebDatabaseManager.cpp: (WebDatabaseManager::setIDBPerOriginQuota): Deleted. * WebDatabaseManager.h: Tools: * DumpRenderTree/TestRunner.cpp: (TestRunner::staticFunctions): (setIDBPerOriginQuotaCallback): Deleted. * DumpRenderTree/TestRunner.h: * DumpRenderTree/mac/DumpRenderTree.mm: (runTest): * DumpRenderTree/mac/TestRunnerMac.mm: (TestRunner::setIDBPerOriginQuota): Deleted. * DumpRenderTree/win/TestRunnerWin.cpp: (TestRunner::setIDBPerOriginQuota): Deleted. * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setIDBPerOriginQuota): Deleted. * WebKitTestRunner/InjectedBundle/TestRunner.h: * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetStateToConsistentValues): (WTR::TestController::setIDBPerOriginQuota): Deleted. * WebKitTestRunner/TestController.h: * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): Canonical link: https://commits.webkit.org/214619@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248856 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-19 17:12:37 +00:00
2019-08-19 Sihui Liu <sihui_liu@apple.com>
Remove IDB-specific quota
https://bugs.webkit.org/show_bug.cgi?id=196545
<rdar://problem/54201783>
Reviewed by Youenn Fablet.
* IndexedDB/large-binary-keys.html:
* IndexedDB/large-string-keys.html:
Remove support for macOS < 10.13 https://bugs.webkit.org/show_bug.cgi?id=200694 <rdar://problem/54278851> 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. PerformanceTests: * StitchMarker/wtf/Platform.h: * StitchMarker/wtf/dependencies/bmalloc/BPlatform.h: * StitchMarker/wtf/text/icu/TextBreakIteratorICU.h: (WTF::TextBreakIteratorICU::TextBreakIteratorICU): (WTF::caretRules): Deleted. Source/JavaScriptCore: * API/WebKitAvailability.h: Source/ThirdParty/libwebrtc: * Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h: * WebKit/libwebrtc.diff: Source/WebCore: No new tests -- no added or changed functionality. * Modules/applepay/cocoa/PaymentContactCocoa.mm: (WebCore::subLocality): (WebCore::setSubLocality): (WebCore::subAdministrativeArea): (WebCore::setSubAdministrativeArea): * WebCorePrefix.h: * crypto/mac/CryptoKeyRSAMac.cpp: * editing/cocoa/WebContentReaderCocoa.mm: * page/mac/TextIndicatorWindow.mm: (-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]): * platform/PlatformScreen.h: * platform/cocoa/NetworkExtensionContentFilter.mm: (WebCore::NetworkExtensionContentFilter::initialize): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesLastModifiedTime const): (WebCore::MediaPlayerPrivateAVFoundationObjC::liveUpdateInterval const): * platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontDatabase::fontForPostScriptName): (WebCore::variationCapabilitiesForFontDescriptor): (WebCore::FontCache::lastResortFallbackFont): * platform/graphics/cocoa/FontPlatformDataCocoa.mm: (WebCore::cascadeToLastResortAndVariationsFontDescriptor): * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: (WebCore::setGPUByRegistryID): (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::screenDidChange): (WebCore::setGPUByDisplayMask): Deleted. * platform/graphics/cv/VideoTextureCopierCV.cpp: * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm: (WebCore::isAcceptableDevice): * platform/graphics/mac/FontCacheMac.mm: (WebCore::platformFontWithFamilySpecialCase): * platform/graphics/mac/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/mac/DragImageMac.mm: (WebCore::LinkImageLayout::LinkImageLayout): (WebCore::createDragImageForLink): * platform/mac/PlatformScreenMac.mm: (WebCore::collectScreenProperties): (WebCore::gpuIDForDisplayMask): * platform/mac/WebPlaybackControlsManager.h: * platform/mac/WebPlaybackControlsManager.mm: (toAVTouchBarMediaSelectionOptionType): (mediaSelectionOptions): (-[WebPlaybackControlsManager generateFunctionBarThumbnailsForTimes:size:completionHandler:]): Deleted. (-[WebPlaybackControlsManager generateFunctionBarAudioAmplitudeSamples:completionHandler:]): Deleted. (-[WebPlaybackControlsManager canBeginFunctionBarScrubbing]): Deleted. (-[WebPlaybackControlsManager beginFunctionBarScrubbing]): Deleted. (-[WebPlaybackControlsManager endFunctionBarScrubbing]): Deleted. * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::platformActiveTextSearchHighlightColor const): (WebCore::RenderThemeMac::systemColor const): Source/WebCore/PAL: * pal/spi/cf/CFNetworkSPI.h: * pal/spi/cocoa/AVKitSPI.h: * pal/spi/cocoa/CommonCryptoSPI.h: * pal/spi/cocoa/IOSurfaceSPI.h: * pal/spi/cocoa/NEFilterSourceSPI.h: * pal/spi/cocoa/NSAttributedStringSPI.h: * pal/spi/cocoa/NSKeyedArchiverSPI.h: * pal/spi/cocoa/NSTouchBarSPI.h: * pal/spi/cocoa/PassKitSPI.h: * pal/spi/mac/AVFoundationSPI.h: Source/WebKit: * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): * Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultCustomPasteboardDataEnabled): * Shared/WebPreferencesDefaultValues.h: * Shared/mac/AuxiliaryProcessMac.mm: * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (-[WKTextTouchBarItemController itemForIdentifier:]): (WebKit::WebViewImpl::mediaPlaybackControlsView const): (WebKit::WebViewImpl::updateMediaTouchBar): * UIProcess/mac/WebColorPickerMac.mm: * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h: * WebProcess/Plugins/PDF/PDFPlugin.h: * WebProcess/Plugins/PDF/PDFPlugin.mm: (-[WKPDFPluginAccessibilityObject setPdfLayerController:]): (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]): (-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): (-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]): (-[WKPDFPluginAccessibilityObject accessibilityAssociatedControlForAnnotation:]): (-[WKPDFPluginAccessibilityObject accessibilityHitTest:]): (WebKit::PDFPlugin::pdfDocumentDidLoad): (WebKit::PDFPlugin::handleMouseEvent): (WebKit::PDFPlugin::handleMouseEnterEvent): (WebKit::PDFPlugin::handleContextMenuEvent): (WebKit::PDFPlugin::pluginHandlesContentOffsetForAccessibilityHitTest const): (WebKit::PDFPlugin::accessibilityAssociatedPluginParentForElement const): (WebKit::PDFPlugin::updateCursor): Deleted. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Source/WebKitLegacy/mac: * WebCoreSupport/WebEditorClient.mm: * WebView/PDFViewSPI.h: * WebView/WebHTMLView.mm: (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:]): (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:]): (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]): Deleted. (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]): Deleted. * WebView/WebPreferences.mm: (+[WebPreferences initialize]): * WebView/WebView.mm: (-[WebView performDragOperation:]): (LayerFlushController::flushLayers): (-[WebView updateMediaTouchBar]): * WebView/WebViewData.h: Source/WTF: * wtf/FeatureDefines.h: * wtf/Platform.h: * wtf/mac/AppKitCompatibilityDeclarations.h: * wtf/spi/darwin/SandboxSPI.h: Tools: * MiniBrowser/AppKitCompatibilityDeclarations.h: * MiniBrowser/mac/SettingsController.m: (-[SettingsController init]): * TestWebKitAPI/Tests/WebCore/FontCache.cpp: (TestWebKitAPI::FontCacheTest::SetUp): Deleted. (TestWebKitAPI::createPlatformFont): Deleted. (TestWebKitAPI::compareFonts): Deleted. (TestWebKitAPI::TEST_F): Deleted. * TestWebKitAPI/Tests/WebCore/cocoa/AVFoundationSoftLinkTest.mm: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm: * TestWebKitAPI/Tests/WebKitCocoa/PictureInPictureDelegate.mm: * TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm: * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: (runWebsiteDataStoreCustomPaths): * TestWebKitAPI/mac/NSFontPanelTesting.mm: Canonical link: https://commits.webkit.org/214482@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248697 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-15 00:17:55 +00:00
2019-08-14 Keith Rollin <krollin@apple.com>
Remove support for macOS < 10.13
https://bugs.webkit.org/show_bug.cgi?id=200694
<rdar://problem/54278851>
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.
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. Canonical link: https://commits.webkit.org/214256@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-06 23:24:26 +00:00
2019-08-06 Michael Saboff <msaboff@apple.com>
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 <krollin@apple.com>
Remove rest of NavigatorContentUtils support
https://bugs.webkit.org/show_bug.cgi?id=200052
<rdar://problem/53467357>
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:
[BigInt] Add ValueBitLShift into DFG https://bugs.webkit.org/show_bug.cgi?id=192664 Reviewed by Saam Barati. JSTests: We are adding tests to cover ValueBitwise operations AI changes. * stress/big-int-left-shift-untyped.js: Added. * stress/bit-op-with-object-returning-int32.js: * stress/value-bit-and-ai-rule.js: Added. * stress/value-bit-lshift-ai-rule.js: Added. * stress/value-bit-or-ai-rule.js: Added. * stress/value-bit-xor-ai-rule.js: Added. PerformanceTests: * BigIntBench/big-int-simple-lshift.js: Added. Source/JavaScriptCore: This patch is splitting the `BitLShift` into `ArithBitLShift` and `ValueBitLShift` to handle BigInt speculation more efficiently during DFG and FTL layers. Following the same approach of other `ValueBitOps`, `ValueBitLShift` handles Untyped and BigInt speculations, while `ArithBitLShift` handles number and boolean operands and always results into Int32. * bytecode/BytecodeList.rb: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): * bytecode/Opcode.h: * dfg/DFGAbstractInterpreter.h: * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::handleConstantBinaryBitwiseOp): (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): We moved `BitLShift` constant fold rules to a new method `handleConstantBinaryBitwiseOp` to be reused by `ArithBitLShift` and `ValueBitLShift`. This also enables support of constant folding on other bitwise operations like `ValueBitAnd`, `ValueBitOr` and `ValueBitXor`, when their binary use kind is UntypedUse. Such cases can happen on those nodes because fixup phase is conservative. * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::isWithinPowerOfTwo): (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::handleIntrinsicGetter): (JSC::DFG::ByteCodeParser::parseBlock): We parse `op_lshift` as `ArithBitLShift` when its operands are numbers. Otherwise, we fallback to `ValueBitLShift` and rely on fixup phase to convert `ValueBitLShift` into `ArithBitLShift` when possible. * dfg/DFGClobberize.h: (JSC::DFG::clobberize): `ArithBitLShift` has the same clobberize rules as former `BitLShift`. `ValueBitLShift` only clobberize world when it is UntypedUse. * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): `ValueBitLShift` can GC when `BigIntUse` because it allocates new JSBigInts to perform this operation. It also can GC on UntypedUse because of observable user code. * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): `ValueBitLShift` and `ArithBitLShift` has the same fixup rules of other binary bitwise operations. In the case of `ValueBitLShift` We check if we should speculate on BigInt or Untyped and fallback to `ArithBitLShift` when both cheks fail. * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: We updated `operationValueBitLShift` to handle BigInt cases. Also, we added `operationBitLShiftBigInt` that is used when we compile `ValueBitLValueBitLShift(BigIntUse)`. * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: `ValueBitLShift`'s prediction propagation rules differs from other bitwise operations, because using only heap prediction for this node causes significant performance regression on Octane's zlib and mandreel. The reason is because of cases where a function is compiled but the instruction `op_lshift` was never executed before. If we use `getPrediction()` we will emit a `ForceOSRExit`, resulting in more OSR than desired. To solve such issue, we are then using `getPredictionWithoutOSR()` and falling back to `getHeapPrediction()` only on cases where we can't rely on node's input types. * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueLShiftOp): (JSC::DFG::SpeculativeJIT::compileShiftOp): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::shiftOp): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGStrengthReductionPhase.cpp: (JSC::DFG::StrengthReductionPhase::handleNode): * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileArithBitLShift): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift): (JSC::FTL::DFG::LowerDFGToB3::compileBitLShift): Deleted. * llint/LowLevelInterpreter32_64.asm: * llint/LowLevelInterpreter64.asm: * runtime/CommonSlowPaths.cpp: (JSC::SLOW_PATH_DECL): Canonical link: https://commits.webkit.org/213622@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247387 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-07-12 14:47:36 +00:00
2019-07-12 Caio Lima <ticaiolima@gmail.com>
[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.
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. .: * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsPlayStation.cmake: * Source/cmake/OptionsWin.cmake: * Source/cmake/WebKitFeatures.cmake: * Source/cmake/tools/vsprops/FeatureDefines.props: * Source/cmake/tools/vsprops/FeatureDefinesCairo.props: PerformanceTests: * StitchMarker/wtf/FeatureDefines.h: Source/JavaScriptCore: * Configurations/FeatureDefines.xcconfig: Source/WebCore: * Configurations/FeatureDefines.xcconfig: * Resources/urlIcon.png: Removed file which was only used in IconDatabase.cpp. Source/WebCore/PAL: * Configurations/FeatureDefines.xcconfig: Source/WebKit: * Configurations/FeatureDefines.xcconfig: * PlatformGTK.cmake: Remove reference to unused urlIcon.png file. Source/WebKitLegacy/mac: * Configurations/FeatureDefines.xcconfig: * WebView/WebView.mm: (-[WebView _cacheFrameLoadDelegateImplementations]): Use PLATFORM(MAC) guard instead of ENABLE_ICONDATABASE, because ENABLE_ICONDATABASE was enabled for macOS only. Source/WTF: * wtf/FeatureDefines.h: Tools: * Scripts/webkitperl/FeatureList.pm: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: * gtk/manifest.txt.in: Remove reference to unused urlIcon.png file. * wpe/manifest.txt.in: Remove reference to unused urlIcon.png file. Canonical link: https://commits.webkit.org/213258@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246925 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-06-28 16:00:17 +00:00
2019-06-28 Konstantin Tokarev <annulen@yandex.ru>
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:
Upstream use of MACCATALYST https://bugs.webkit.org/show_bug.cgi?id=199245 rdar://problem/51687723 Reviewed by Tim Horton. PerformanceTests: * MediaTime/Configurations/SDKVariant.xcconfig: Source/bmalloc: * Configurations/SDKVariant.xcconfig: Source/JavaScriptCore: * Configurations/Base.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/JavaScriptCore.xcconfig: * Configurations/SDKVariant.xcconfig: Source/ThirdParty/ANGLE: * Configurations/SDKVariant.xcconfig: Source/ThirdParty/libwebrtc: * Configurations/SDKVariant.xcconfig: Source/WebCore: * Configurations/Base.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/SDKVariant.xcconfig: * Configurations/WebCore.xcconfig: * Modules/geolocation/ios/GeolocationPositionIOS.mm: (WebCore::GeolocationPosition::GeolocationPosition): * editing/cocoa/DictionaryLookup.mm: (-[WebRevealHighlight drawHighlightContentForItem:context:]): (WebCore::showPopupOrCreateAnimationController): * editing/cocoa/WebContentReaderCocoa.mm: * page/Navigator.h: * page/SettingsBase.cpp: (WebCore::SettingsBase::defaultContentChangeObserverEnabled): * page/cocoa/MemoryReleaseCocoa.mm: (WebCore::platformReleaseMemory): * platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSession::setCategory): (WebCore::AudioSession::routingContextUID const): * platform/cocoa/ParentalControlsContentFilter.mm: (WebCore::canHandleResponse): * platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm: (WebCore::AVAssetMIMETypeCache::isAvailable const): * platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.mm: (WebCore::AVStreamDataParserMIMETypeCache::isAvailable const): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep): * platform/graphics/cv/ImageTransferSessionVT.h: * platform/graphics/cv/ImageTransferSessionVT.mm: (WebCore::cvPixelFormatOpenGLKey): (WebCore::ImageTransferSessionVT::ImageTransferSessionVT): * platform/ios/PasteboardIOS.mm: (WebCore::Pasteboard::readPasteboardWebContentDataForType): (WebCore::Pasteboard::supportedWebContentPasteboardTypes): * platform/ios/PlatformPasteboardIOS.mm: (WebCore::registerItemToPasteboard): (WebCore::PlatformPasteboard::write): * platform/ios/VideoFullscreenInterfaceAVKit.mm: (-[WebAVPlayerLayer setVideoGravity:]): * platform/ios/WebItemProviderPasteboard.mm: (-[WebItemProviderRegistrationInfoList itemProvider]): (-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]): (-[WebItemProviderPasteboard numberOfFiles]): * platform/network/cf/CertificateInfoCFNet.cpp: (WebCore::CertificateInfo::summaryInfo const): Source/WebCore/PAL: * Configurations/Base.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/SDKVariant.xcconfig: * pal/spi/mac/AVFoundationSPI.h: Source/WebInspectorUI: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Source/WebKit: * Configurations/Base.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/Network-iOSMac.entitlements: Removed. * Configurations/Network-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/Network-iOSMac.entitlements. * Configurations/NetworkService.xcconfig: * Configurations/SDKVariant.xcconfig: * Configurations/WebContent-iOSMac.entitlements: Removed. * Configurations/WebContent-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/WebContent-iOSMac.entitlements. * Configurations/WebContentService.xcconfig: * Configurations/WebKit.xcconfig: * NetworkProcess/ios/NetworkProcessIOS.mm: * NetworkProcess/mac/NetworkProcessMac.mm: (WebKit::NetworkProcess::initializeProcess): (WebKit::NetworkProcess::initializeProcessName): * Platform/mac/LayerHostingContext.mm: (WebKit::LayerHostingContext::createForExternalHostingProcess): * Platform/spi/ios/ManagedConfigurationSPI.h: * Platform/spi/ios/UIKitSPI.h: * Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultCustomPasteboardDataEnabled): * Shared/ios/AuxiliaryProcessIOS.mm: (WebKit::AuxiliaryProcess::initializeSandbox): * Shared/ios/InteractionInformationAtPosition.h: * Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode const): (WebKit::InteractionInformationAtPosition::decode): * Shared/mac/AuxiliaryProcessMac.mm: (WebKit::enableSandboxStyleFileQuarantine): * Shared/mac/CodeSigning.mm: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _webViewPrintFormatter]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::updateLayerTree): * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: (-[WKRemoteView initWithFrame:contextID:]): * UIProcess/_WKWebViewPrintFormatter.mm: * UIProcess/_WKWebViewPrintFormatterInternal.h: * UIProcess/ios/WKActionSheetAssistant.mm: (-[WKActionSheetAssistant _elementActionForDDAction:]): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView cleanupInteraction]): (-[WKContentView _removeDefaultGestureRecognizers]): (-[WKContentView _addDefaultGestureRecognizers]): (-[WKContentView _showTapHighlight]): (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]): (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): (-[WKContentView canPerformActionForWebView:withSender:]): (-[WKContentView _defineForWebView:]): (-[WKContentView setSelectedTextRange:]): (-[WKContentView closestPositionToPoint:]): (-[WKContentView _showShareSheet:inRect:completionHandler:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::desktopClassBrowsingSupported): (WebKit::desktopClassBrowsingRecommended): * UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel _showDocumentPickerMenu]): * WebKit.xcodeproj/project.pbxproj: * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: (WebKit::WebPage::dictionaryPopupInfoForRange): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::platformEditorState const): (WebKit::WebPage::selectWithGesture): (WebKit::selectionPositionInformation): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::initializeSandbox): * WebProcess/com.apple.WebProcess.sb.in: Source/WebKitLegacy/ios: * Misc/WebGeolocationCoreLocationProvider.mm: (-[WebGeolocationCoreLocationProvider requestGeolocationAuthorization]): Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/SDKVariant.xcconfig: Source/WTF: * Configurations/SDKVariant.xcconfig: * wtf/FeatureDefines.h: * wtf/Platform.h: Tools: * ContentExtensionTester/Configurations/SDKVariant.xcconfig: * DumpRenderTree/mac/Configurations/SDKVariant.xcconfig: * ImageDiff/cg/Configurations/SDKVariant.xcconfig: * MiniBrowser/Configurations/SDKVariant.xcconfig: * MobileMiniBrowser/Configurations/SDKVariant.xcconfig: * Scripts/webkitpy/generate_xcfilelists_lib/generators.py: (JavaScriptCoreGenerator): (WebCoreGenerator): (WebKitGenerator): * TestWebKitAPI/Configurations/Base.xcconfig: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: * TestWebKitAPI/Configurations/SDKVariant.xcconfig: * TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm: * WebEditingTester/Configurations/SDKVariant.xcconfig: * WebKitLauncher/Configurations/SDKVariant.xcconfig: * WebKitTestRunner/Configurations/SDKVariant.xcconfig: * lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig: Canonical link: https://commits.webkit.org/213231@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246892 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-06-27 18:17:35 +00:00
2019-06-27 Beth Dakin <bdakin@apple.com>
Upstream use of MACCATALYST
https://bugs.webkit.org/show_bug.cgi?id=199245
rdar://problem/51687723
Reviewed by Tim Horton.
* MediaTime/Configurations/SDKVariant.xcconfig:
[GTK] Remove support for GTK2 plugins https://bugs.webkit.org/show_bug.cgi?id=199065 Reviewed by Sergio Villar Senin. .: * Source/cmake/FindGDK2.cmake: Removed. * Source/cmake/FindGTK2.cmake: Removed. * Source/cmake/OptionsGTK.cmake: PerformanceTests: * StitchMarker/wtf/Platform.h: Source/WebCore: * PlatformGTK.cmake: * SourcesGTK.txt: * SourcesWPE.txt: * platform/FreeType.cmake: * platform/SourcesGLib.txt: * platform/graphics/Color.h: * platform/graphics/PlatformDisplay.cpp: (WebCore::PlatformDisplay::createPlatformDisplay): * platform/graphics/gtk/ColorGtk.cpp: (WebCore::Color::operator GdkRGBA const): * platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: (WebCore::onFrameClockUpdate): (WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback): * platform/graphics/gtk/DisplayRefreshMonitorGtk.h: (WebCore::DisplayRefreshMonitorGtk::create): * platform/graphics/gtk/GdkCairoUtilities.cpp: * platform/gtk/GRefPtrGtk.cpp: * platform/gtk/GRefPtrGtk.h: * platform/gtk/GtkVersioning.c: Removed. * platform/gtk/GtkVersioning.h: Removed. * platform/gtk/PasteboardHelper.cpp: (WebCore::PasteboardHelper::getClipboardContents): * platform/gtk/PlatformKeyboardEventGtk.cpp: (WebCore::modifiersForGdkKeyEvent): (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): * platform/gtk/PlatformMouseEventGtk.cpp: (WebCore::PlatformMouseEvent::PlatformMouseEvent): * platform/gtk/PlatformScreenGtk.cpp: (WebCore::screenIsTouchPrimaryInputDevice): * platform/gtk/PlatformWheelEventGtk.cpp: (WebCore::PlatformWheelEvent::PlatformWheelEvent): * platform/gtk/ScrollbarThemeGtk.cpp: * platform/gtk/ScrollbarThemeGtk.h: * platform/gtk/WidgetGtk.cpp: * rendering/RenderThemeGtk.cpp: * rendering/RenderThemeGtk.h: Source/WebKit: * PlatformGTK.cmake: * Shared/Plugins/Netscape/NetscapePluginModule.cpp: (WebKit::moduleMixesGtkSymbols): * Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp: (WebKit::NetscapePluginModule::getPluginInfo): * Shared/Plugins/PluginModuleInfo.h: * Shared/gtk/WebEventFactory.cpp: (WebKit::isGdkKeyCodeFromKeyPad): (WebKit::buttonForEvent): (WebKit::WebEventFactory::createWebMouseEvent): (WebKit::WebEventFactory::createWebWheelEvent): (WebKit::WebEventFactory::createWebKeyboardEvent): (WebKit::WebEventFactory::createWebTouchEvent): * SourcesGTK.txt: * UIProcess/API/gtk/WebKitWebViewBase.cpp: * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: (WebKit::ProcessLauncher::launchProcess): * UIProcess/Plugins/PluginProcessProxy.h: * UIProcess/Plugins/gtk/PluginInfoCache.cpp: (WebKit::PluginInfoCache::getPluginInfo): (WebKit::PluginInfoCache::updatePluginInfo): * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp: (WebKit::PluginInfoStore::getPluginInfo): * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): (WebKit::PluginProcessProxy::scanPlugin): * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: Source/WTF: * wtf/Platform.h: * wtf/glib/GTypedefs.h: Tools: * EWSTools/ubuntu-ews-packages: * TestWebKitAPI/PlatformGTK.cmake: * WebKitTestRunner/PlatformGTK.cmake: * flatpak/org.webkit.GTK.yaml: * gtk/install-dependencies: Canonical link: https://commits.webkit.org/213022@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246632 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-06-20 11:08:29 +00:00
2019-06-20 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remove support for GTK2 plugins
https://bugs.webkit.org/show_bug.cgi?id=199065
Reviewed by Sergio Villar Senin.
* StitchMarker/wtf/Platform.h:
[BigInt] Add ValueMod into DFG https://bugs.webkit.org/show_bug.cgi?id=186174 Reviewed by Saam Barati. JSTests: * microbenchmarks/mod-untyped.js: Added. * stress/big-int-mod-osr.js: Added. * stress/value-div-ai-rule.js: Added. * stress/value-mod-ai-rule.js: Added. PerformanceTests: * BigIntBench/big-int-simple-mod.js: Added. Source/JavaScriptCore: This patch is introducing a new DFG node called ValueMod, that is responsible to handle BigInt and Untyped specialization of op_mod. With the introduction of BigInt, we think that cases with ValueMod(Untyped, Untyped) can be more common and we introduced support for such kind of node. * dfg/DFGAbstractInterpreter.h: * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::handleConstantDivOp): We are abstracting the constant rules of division operations. It includes ArithDiv, ValueDiv, ArithMod and ValueMod, since they perform the same analysis. (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::makeSafe): (JSC::DFG::ByteCodeParser::parseBlock): Here we check if lhs and rhs have number result to emit ArithMod. Otherwise, we need to fallback to ValueMod and let fixup replace this operation when possible. * dfg/DFGClobberize.h: (JSC::DFG::clobberize): ValueMod(BigIntUse) doesn't clobberize world because it only calls `operationModBigInt`. * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): ValueMod(BigIntUse) can trigger GC since it allocates intermediate JSBigInt to perform calculation. ValueMod(UntypedUse) can trigger GC because it can execute arbritary code from user. * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupArithDivInt32): Function created to simplify readability of ArithDiv/AirthMod fixup operation. (JSC::DFG::FixupPhase::fixupArithDiv): (JSC::DFG::FixupPhase::fixupNode): Following the same fixup rules of ArithDiv. * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: (JSC::DFG::binaryOp): * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: ValueMod follows the same prediction propagation rules of ArithMod and the same rules for `doDoubleVoting`. * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueMod): * dfg/DFGSpeculativeJIT.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGValidate.cpp: * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileValueMod): Canonical link: https://commits.webkit.org/211842@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245063 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-08 19:38:17 +00:00
2019-05-08 Caio Lima <ticaiolima@gmail.com>
[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 <sbarati@apple.com>
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 <jonlee@apple.com>
[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):
[Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui https://bugs.webkit.org/show_bug.cgi?id=196846 <rdar://problem/49499971> Reviewed by Simon Fraser and Darin Adler. PerformanceTests: * Layout/system-ui-rebuild-emoji.html: Added. Source/WebCore: When adding the special codepath for system-ui to behave as an entire list of fonts rather than a single item, I never added a cache for the FontPlatformData objects that codepath creates. The non-system-ui codepath already has a cache in fontPlatformDataCache() in FontCache.cpp. This patch causes a 16.8x performance improvement on the attached benchmark. Test: PerformanceTests/Layout/system-ui-rebuild-emoji.html * page/cocoa/MemoryReleaseCocoa.mm: (WebCore::platformReleaseMemory): * platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::invalidateFontCache): * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: (WebCore::FontFamilySpecificationKey::FontFamilySpecificationKey): (WebCore::FontFamilySpecificationKey::operator== const): (WebCore::FontFamilySpecificationKey::operator!= const): (WebCore::FontFamilySpecificationKey::isHashTableDeletedValue const): (WebCore::FontFamilySpecificationKey::computeHash const): (WebCore::FontFamilySpecificationKeyHash::hash): (WebCore::FontFamilySpecificationKeyHash::equal): (WebCore::fontMap): (WebCore::clearFontFamilySpecificationCoreTextCache): (WebCore::FontFamilySpecificationCoreText::fontRanges const): * platform/graphics/cocoa/FontFamilySpecificationCoreText.h: * platform/graphics/mac/ComplexTextControllerCoreText.mm: (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): (WebCore::safeCFEqual): Deleted. Source/WTF: * wtf/RetainPtr.h: (WTF::safeCFEqual): (WTF::safeCFHash): Canonical link: https://commits.webkit.org/211214@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244315 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-04-16 00:51:04 +00:00
2019-04-15 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
https://bugs.webkit.org/show_bug.cgi?id=196846
<rdar://problem/49499971>
Reviewed by Simon Fraser and Darin Adler.
* Layout/system-ui-rebuild-emoji.html: Added.
-apple-trailing-word is needed for browser detection https://bugs.webkit.org/show_bug.cgi?id=196575 Unreviewed. PerformanceTests: * MotionMark/resources/debug-runner/motionmark.css: (#intro .start-benchmark p): Source/JavaScriptCore: * Configurations/FeatureDefines.xcconfig: Source/WebCore: This is an unreviewed partial revert of r243819. Turns out there are some websites which use this property to do browser detection. So, we need to continue to parse the property, but we don't need the property to do anything. Test: fast/text/trailing-word-detection.html * Configurations/FeatureDefines.xcconfig: * css/CSSComputedStyleDeclaration.cpp: (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator TrailingWord const): * css/CSSProperties.json: * css/CSSValueKeywords.in: * css/parser/CSSParserFastPaths.cpp: (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): (WebCore::CSSParserFastPaths::isKeywordPropertyID): * rendering/style/RenderStyle.h: (WebCore::RenderStyle::trailingWord const): (WebCore::RenderStyle::setTrailingWord): (WebCore::RenderStyle::initialTrailingWord): * rendering/style/RenderStyleConstants.h: Source/WebCore/PAL: * Configurations/FeatureDefines.xcconfig: Source/WebKit: * Configurations/FeatureDefines.xcconfig: Source/WebKitLegacy/mac: * Configurations/FeatureDefines.xcconfig: Tools: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: LayoutTests: * fast/text/trailing-word-detection-expected.txt: Added. * fast/text/trailing-word-detection.html: Added. * platform/gtk/TestExpectations: * platform/win/TestExpectations: Canonical link: https://commits.webkit.org/210837@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243841 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-04-04 00:16:24 +00:00
2019-04-03 Myles C. Maxfield <mmaxfield@apple.com>
-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 <ryanhaddad@apple.com>
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 <sbarati@apple.com>
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 <sbarati@apple.com>
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 <sbarati@apple.com>
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 <sbarati@apple.com>
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 <jond@apple.com>
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):
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. Canonical link: https://commits.webkit.org/210048@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242961 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-03-14 20:46:04 +00:00
2019-03-14 Jon Davis <jond@apple.com>
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.
[ESNext][BigInt] Implement "~" unary operation https://bugs.webkit.org/show_bug.cgi?id=182216 Reviewed by Keith Miller. JSTests: * stress/big-int-bit-not-general.js: Added. * stress/big-int-bitwise-not-jit.js: Added. * stress/big-int-bitwise-not-wrapped-value.js: Added. * stress/bit-op-with-object-returning-int32.js: * stress/bitwise-not-fixup-rules.js: Added. * stress/value-bit-not-ai-rule.js: Added. PerformanceTests: * BigIntBench/big-int-simple-bit-not.js: Added. Source/JavaScriptCore: This patch is adding support of BigInt into op_bitnot operations. In addition, we are changing ArithBitNot to handle only Number operands, while introducing a new node named ValueBitNot to handle Untyped and BigInt. This node follows the same approach we are doing into other arithimetic operations into DFG. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): It is possible that fixup and prediction propagation don't convert a ValueBitNot(ConstInt32) into ArithBitNot(ConstInt32) because these analysis are conservative. In such case, we are adding constant folding rules to ValueBitNot AI. * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::propagate): ValueBitNot has same rules as ArithBitNot on backwards propagation. * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): We can emit ArithBitNot if we know that operand of op_bitnot is a Number or any int. Otherwise we fallback to ValueBitNot and rely on fixup to convert the node to ArithBitNot when it is possible. ValueBitNot uses heap prediction on prediction propagation and we collect its type from op_bitnot's value profiler. * dfg/DFGClobberize.h: (JSC::DFG::clobberize): When we have the case with ValueBitNot(BigInt), we don't clobberize world. * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): ValueBitNot can GC on BigIntUse because, right now, all bitNot operation allocates temporary BigInts to perform calculations and it can potentially trigger GC. * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): ValueBitNot is responsible do handle BigIntUse and UntypedUse. To all other uses, we fallback to ArithBitNot. * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: (JSC::DFG::bitwiseBinaryOp): This template function is abstracting the new semantics of numeric values operations on bitwise operations. These operations usually folow these steps: 1. rhsNumeric = GetInt32OrBigInt(rhs) 2. lhsNumeric = GetInt32OrBigInt(lhs) 3. trhow error if TypeOf(rhsNumeric) != TypeOf(lhsNumeric) 4. return BigInt::bitwiseOp(bitOp, rhs, lhs) if TypeOf(lhsNumeric) == BigInt 5. return rhs <int32BitOp> lhs Since we have almost the same code for every bitwise op, we use such template to avoid code duplication. The template receives Int32 and BigInt operations as parameter. Error message is received as `const char*` instead of `String&` to avoid String allocation even when there is no error to throw. * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueBitNot): ValueBitNot generates speculative code for BigIntUse and this code is a call to `operationBitNotBigInt`. This operation is faster than `operationValueBitNot` because there is no need to check types of operands and execute properly operation. We still need to check exceptions after `operationBitNotBigInt` because it can throw OOM. (JSC::DFG::SpeculativeJIT::compileBitwiseNot): * dfg/DFGSpeculativeJIT.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot): (JSC::FTL::DFG::LowerDFGToB3::compileArithBitNot): * runtime/CommonSlowPaths.cpp: (JSC::SLOW_PATH_DECL): * runtime/JSBigInt.cpp: (JSC::JSBigInt::bitwiseNot): * runtime/JSBigInt.h: Canonical link: https://commits.webkit.org/209847@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242715 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-03-11 17:21:41 +00:00
2019-03-11 Caio Lima <ticaiolima@gmail.com>
[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 <sbarati@apple.com>
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 <sbarati@apple.com>
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 <sihui_liu@apple.com>
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
<rdar://problem/47623109>
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 <sbarati@apple.com>
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:
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. .: * Makefile.shared: PerformanceTests: * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/SDKVariant.xcconfig: Added. Source/bmalloc: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/JavaScriptCore: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/ThirdParty/ANGLE: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/ThirdParty/libwebrtc: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebCore: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. * Configurations/WebCore.xcconfig: Source/WebCore/PAL: * Configurations/Base.xcconfig: * Configurations/PAL.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebInspectorUI: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebKit: * Configurations/Base.xcconfig: * Configurations/BaseTarget.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. * Configurations/WebKitLegacy.xcconfig: Source/WTF: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Tools: Add a check-webkit-style check that ensures all SDKVariant.xcconfig files match. * ContentExtensionTester/Configurations/Base.xcconfig: * ContentExtensionTester/Configurations/SDKVariant.xcconfig: Added. * DumpRenderTree/mac/Configurations/Base.xcconfig: * DumpRenderTree/mac/Configurations/SDKVariant.xcconfig: Added. * ImageDiff/cg/Configurations/Base.xcconfig: * ImageDiff/cg/Configurations/SDKVariant.xcconfig: Added. * MiniBrowser/Configurations/Base.xcconfig: * MiniBrowser/Configurations/SDKVariant.xcconfig: Added. * MobileMiniBrowser/Configurations/Base.xcconfig: * MobileMiniBrowser/Configurations/SDKVariant.xcconfig: Added. * Scripts/webkitpy/style/checker.py: (_all_categories): (FileType): (CheckerDispatcher._file_type): (CheckerDispatcher._create_checker): * Scripts/webkitpy/style/checkers/sdkvariant.py: Added. (SDKVariantChecker): (SDKVariantChecker.__init__): (SDKVariantChecker.check): * TestWebKitAPI/Configurations/Base.xcconfig: * TestWebKitAPI/Configurations/SDKVariant.xcconfig: Added. * WebEditingTester/Configurations/Base.xcconfig: * WebEditingTester/Configurations/SDKVariant.xcconfig: Added. * WebKitLauncher/Configurations/SDKVariant.xcconfig: Added. * WebKitTestRunner/Configurations/Base.xcconfig: * WebKitTestRunner/Configurations/SDKVariant.xcconfig: Added. * lldb/lldbWebKitTester/Configurations/Base.xcconfig: * lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig: Added. Canonical link: https://commits.webkit.org/208098@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240176 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-18 22:53:49 +00:00
2019-01-18 Jer Noble <jer.noble@apple.com>
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 <tsavell@apple.com>
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
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. .: * Makefile.shared: PerformanceTests: * MediaTime/Configurations/Base.xcconfig: * MediaTime/Configurations/SDKVariant.xcconfig: Added. Source/bmalloc: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/JavaScriptCore: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/ThirdParty/ANGLE: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/ThirdParty/libwebrtc: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebCore: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. * Configurations/WebCore.xcconfig: Source/WebCore/PAL: * Configurations/Base.xcconfig: * Configurations/PAL.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebInspectorUI: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebKit: * Configurations/Base.xcconfig: * Configurations/BaseTarget.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Source/WebKitLegacy/mac: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. * Configurations/WebKitLegacy.xcconfig: Source/WTF: * Configurations/Base.xcconfig: * Configurations/SDKVariant.xcconfig: Added. Tools: Add a check-webkit-style check that ensures all SDKVariant.xcconfig files match. * ContentExtensionTester/Configurations/Base.xcconfig: * ContentExtensionTester/Configurations/SDKVariant.xcconfig: Added. * DumpRenderTree/mac/Configurations/Base.xcconfig: * DumpRenderTree/mac/Configurations/SDKVariant.xcconfig: Added. * ImageDiff/cg/Configurations/Base.xcconfig: * ImageDiff/cg/Configurations/SDKVariant.xcconfig: Added. * MiniBrowser/Configurations/Base.xcconfig: * MiniBrowser/Configurations/SDKVariant.xcconfig: Added. * MobileMiniBrowser/Configurations/Base.xcconfig: * MobileMiniBrowser/Configurations/SDKVariant.xcconfig: Added. * Scripts/webkitpy/style/checker.py: (_all_categories): (FileType): (CheckerDispatcher._file_type): (CheckerDispatcher._create_checker): * Scripts/webkitpy/style/checkers/sdkvariant.py: Added. (SDKVariantChecker): (SDKVariantChecker.__init__): (SDKVariantChecker.check): * TestWebKitAPI/Configurations/Base.xcconfig: * TestWebKitAPI/Configurations/SDKVariant.xcconfig: Added. * WebEditingTester/Configurations/Base.xcconfig: * WebEditingTester/Configurations/SDKVariant.xcconfig: Added. * WebKitLauncher/Configurations/SDKVariant.xcconfig: Added. * WebKitTestRunner/Configurations/Base.xcconfig: * WebKitTestRunner/Configurations/SDKVariant.xcconfig: Added. * lldb/lldbWebKitTester/Configurations/Base.xcconfig: * lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig: Added. Canonical link: https://commits.webkit.org/208052@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240124 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-17 20:46:05 +00:00
2019-01-17 Jer Noble <jer.noble@apple.com>
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 <ticaiolima@gmail.com>
[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 <commit-queue@webkit.org>
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 <ticaiolima@gmail.com>
[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 <skoppisetty@apple.com>
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 <skoppisetty@apple.com>
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:
[BigInt] Add ValueDiv into DFG https://bugs.webkit.org/show_bug.cgi?id=186178 Reviewed by Yusuke Suzuki. JSTests: * stress/big-int-div-jit-osr.js: Added. * stress/big-int-div-jit-untyped.js: Added. * stress/value-div-fixup-int32-big-int.js: Added. PerformanceTests: * BigIntBench/big-int-simple-div.js: Added. * BigIntBench/value-div-type-propagation.js: Added. Source/JavaScriptCore: This patch is introducing a new node type called ValueDiv. This node is responsible to handle Untyped and Bigint specialization of division operator, while the ArithDiv variant handles Number/Boolean cases. BigInt specialization generates following speedup into simple benchmark: noSpec changes big-int-simple-div 10.6013+-0.4682 ^ 8.4518+-0.0943 ^ definitely 1.2543x faster * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::makeDivSafe): (JSC::DFG::ByteCodeParser::parseBlock): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupArithDiv): (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::arithNodeFlags): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueDiv): (JSC::DFG::SpeculativeJIT::compileArithDiv): * dfg/DFGSpeculativeJIT.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGValidate.cpp: * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileValueDiv): (JSC::FTL::DFG::LowerDFGToB3::compileArithDiv): (JSC::FTL::DFG::LowerDFGToB3::compileArithBitNot): Canonical link: https://commits.webkit.org/207237@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239158 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-12-13 12:26:01 +00:00
2018-12-13 Caio Lima <ticaiolima@gmail.com>
[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.
[BigInt] Add ValueMul into DFG https://bugs.webkit.org/show_bug.cgi?id=186175 Reviewed by Yusuke Suzuki. JSTests: * stress/big-int-mul-jit-osr.js: Added. * stress/big-int-mul-jit-untyped.js: Added. * stress/value-mul-fixup-int32-big-int.js: Added. PerformanceTests: * BigIntBench/big-int-simple-mul.js: Added. * BigIntBench/value-mul-type-propagation.js: Added. Source/JavaScriptCore: This patch is adding a new DFG node called ValueMul. This node is responsible to handle multiplication operations that can result into non-number values. We emit such node during DFGByteCodeParser when the operands are not numbers. During FixupPhase, we change this operation to ArithMul if we can speculate Number/Boolean operands. The BigInt specialization shows a small progression: noSpec changes big-int-simple-mul 18.8090+-1.0435 ^ 17.4305+-0.2673 ^ definitely 1.0791x faster * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::makeSafe): (JSC::DFG::ByteCodeParser::parseBlock): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupMultiplication): (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::arithNodeFlags): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueMul): (JSC::DFG::SpeculativeJIT::compileArithMul): * dfg/DFGSpeculativeJIT.h: * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGValidate.cpp: * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileValueMul): (JSC::FTL::DFG::LowerDFGToB3::compileArithMul): Canonical link: https://commits.webkit.org/207140@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239045 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-12-10 21:11:43 +00:00
2018-12-10 Caio Lima <ticaiolima@gmail.com>
[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.
[BigInt] Add support to BigInt into ValueAdd https://bugs.webkit.org/show_bug.cgi?id=186177 Reviewed by Keith Miller. JSTests: * stress/big-int-negate-jit.js: * stress/value-add-big-int-and-string.js: Added. * stress/value-add-big-int-prediction-propagation.js: Added. * stress/value-add-big-int-untyped.js: Added. PerformanceTests: 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. Source/JavaScriptCore: We are adding a very primitive specialization case of BigInts into ValueAdd. When compiling a speculated version of this node to BigInt, we are currently calling 'operationAddBigInt', a function that expects only BigInts as parameter and effectly add numbers using JSBigInt::add. To properly speculate BigInt operands, we changed ArithProfile to observe when its result is a BigInt. With this new observation, we are able to identify when ValueAdd results into a String or BigInt. Here are some numbers for this specialization running microbenchmarks: big-int-simple-add 21.5411+-1.1096 ^ 15.3502+-0.7027 ^ definitely 1.4033x faster big-int-add-prediction-propagation 13.7762+-0.5578 ^ 10.8117+-0.5330 ^ definitely 1.2742x faster * bytecode/ArithProfile.cpp: (JSC::ArithProfile::emitObserveResult): (JSC::ArithProfile::shouldEmitSetNonNumeric const): (JSC::ArithProfile::shouldEmitSetBigInt const): (JSC::ArithProfile::emitSetNonNumeric const): (JSC::ArithProfile::emitSetBigInt const): (WTF::printInternal): (JSC::ArithProfile::shouldEmitSetNonNumber const): Deleted. (JSC::ArithProfile::emitSetNonNumber const): Deleted. * bytecode/ArithProfile.h: (JSC::ArithProfile::observedUnaryInt): (JSC::ArithProfile::observedUnaryNumber): (JSC::ArithProfile::observedBinaryIntInt): (JSC::ArithProfile::observedBinaryNumberInt): (JSC::ArithProfile::observedBinaryIntNumber): (JSC::ArithProfile::observedBinaryNumberNumber): (JSC::ArithProfile::didObserveNonInt32 const): (JSC::ArithProfile::didObserveNonNumeric const): (JSC::ArithProfile::didObserveBigInt const): (JSC::ArithProfile::setObservedNonNumeric): (JSC::ArithProfile::setObservedBigInt): (JSC::ArithProfile::observeResult): (JSC::ArithProfile::didObserveNonNumber const): Deleted. (JSC::ArithProfile::setObservedNonNumber): Deleted. * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::makeSafe): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::mayHaveNonNumericResult): (JSC::DFG::Node::mayHaveBigIntResult): (JSC::DFG::Node::mayHaveNonNumberResult): Deleted. * dfg/DFGNodeFlags.cpp: (JSC::DFG::dumpNodeFlags): * dfg/DFGNodeFlags.h: * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueAdd): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): * runtime/CommonSlowPaths.cpp: (JSC::updateArithProfileForUnaryArithOp): (JSC::updateArithProfileForBinaryArithOp): Tools: * Scripts/run-jsc-benchmarks: Canonical link: https://commits.webkit.org/206194@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-11-08 01:47:27 +00:00
2018-11-07 Caio Lima <ticaiolima@gmail.com>
[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.
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. JSTests: Most tests were failing due to timeouts, since they are too slow to run on CLoop. The exceptions are: proxy-get-set-correct-receiver.js: Had to reduce the recursion depth not to overflow on CLoop dont-crash-on-stack-overflow-when-parsing-builtin.js and dont-crash-on-stack-overflow-when-parsing-default-constructor.js: had to change the stack size since CLoop requires it to be page aligned. * microbenchmarks/array-push-1.js: * microbenchmarks/array-push-2.js: * microbenchmarks/elidable-new-object-dag.js: * microbenchmarks/elidable-new-object-roflcopter.js: * microbenchmarks/elidable-new-object-tree.js: * microbenchmarks/getter-richards.js: * microbenchmarks/sinkable-new-object-dag.js: * microbenchmarks/string-concat-long-convert.js: * microbenchmarks/typed-array-get-set-by-val-profiling.js: * slowMicrobenchmarks/array-push-3.js: * slowMicrobenchmarks/large-map-iteration-with-additions.js: * slowMicrobenchmarks/spread-small-array.js: * slowMicrobenchmarks/undefined-property-access.js: * stress/activation-sink-default-value-tdz-error.js: * stress/activation-sink-default-value.js: * stress/activation-sink-osrexit-default-value-tdz-error.js: * stress/activation-sink-osrexit-default-value.js: * stress/activation-sink-osrexit.js: * stress/activation-sink.js: * stress/allow-math-ic-b3-code-duplication.js: * stress/array-push-multiple-int32.js: * stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js: * stress/arrowfunction-lexical-this-activation-sink-osrexit.js: * stress/arrowfunction-lexical-this-activation-sink.js: * stress/dont-crash-on-stack-overflow-when-parsing-builtin.js: * stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js: * stress/elide-new-object-dag-then-exit.js: * stress/materialize-regexp-cyclic.js: * stress/new-regex-inline.js: * stress/op_add.js: * stress/op_bitand.js: * stress/op_bitor.js: * stress/op_bitxor.js: * stress/op_div-ConstVar.js: * stress/op_div-VarConst.js: * stress/op_div-VarVar.js: * stress/op_lshift-ConstVar.js: * stress/op_lshift-VarConst.js: * stress/op_lshift-VarVar.js: * stress/op_mod-ConstVar.js: * stress/op_mod-VarConst.js: * stress/op_mod-VarVar.js: * stress/op_mul-ConstVar.js: * stress/op_mul-VarConst.js: * stress/op_mul-VarVar.js: * stress/op_rshift-ConstVar.js: * stress/op_rshift-VarConst.js: * stress/op_rshift-VarVar.js: * stress/op_sub-ConstVar.js: * stress/op_sub-VarConst.js: * stress/op_sub-VarVar.js: * stress/op_urshift-ConstVar.js: * stress/op_urshift-VarConst.js: * stress/op_urshift-VarVar.js: * stress/proxy-get-set-correct-receiver.js: * stress/regress-179562.js: * stress/rest-parameter-many-arguments.js: * stress/sampling-profiler-richards.js: * stress/splay-flash-access-1ms.js: * stress/tailCallForwardArguments.js: * stress/typed-array-get-by-val-profiling.js: * typeProfiler/getter-richards.js: PerformanceTests: Skip test when the JIT is disabled, it takes too long to run on CLoop. * JetStream/cdjs/main.js: Source/JavaScriptCore: Fix API test on CLoop: we can only disable the LLInt when the JIT is enabled. * API/tests/PingPongStackOverflowTest.cpp: (testPingPongStackOverflow): LayoutTests: Skip test when the JIT is disabled since it's too slow to run on CLoop. * js/script-tests/regress-139548.js: Canonical link: https://commits.webkit.org/206158@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237919 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-11-07 09:05:15 +00:00
2018-11-07 Tadeu Zagallo <tzagallo@apple.com>
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:
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. PerformanceTests: Measures the performance of drawing a whole lot of underlines * Layout/underline.html: Added. Source/WebCore: I was hoping that caching the glyph paths was going to be a performance progression, but it turns out that the additional overhead of WebCore::Path compensated for it. In total, the performance is the same (my testing says that this patch is a 1% progression, but that's within the noise). Because the ink skipping logic is now shared among all ports, Windows now gets it for free. Test: PerformanceTests/Layout/underline.html * platform/graphics/Font.cpp: (WebCore::Font::pathForGlyph const): * platform/graphics/Font.h: * platform/graphics/FontCascade.cpp: (WebCore::computeUnderlineType): (WebCore::GlyphIterationState::GlyphIterationState): (WebCore::findIntersectionPoint): (WebCore::updateX): (WebCore::findPathIntersections): (WebCore::GlyphToPathTranslator::GlyphToPathTranslator): (WebCore::GlyphToPathTranslator::containsMorePaths): (WebCore::GlyphToPathTranslator::path): (WebCore::GlyphToPathTranslator::extents): (WebCore::GlyphToPathTranslator::underlineType): (WebCore::GlyphToPathTranslator::advance): (WebCore::FontCascade::dashesForIntersectionsWithRect const): * platform/graphics/FontCascade.h: * platform/graphics/GlyphMetricsMap.h: (WebCore::GlyphMetricsMap::existingMetricsForGlyph): (WebCore::GlyphMetricsMap::GlyphMetricsPage::existingMetricsForGlyph const): (WebCore::GlyphMetricsMap<std::optional<Path>>::unknownMetrics): * platform/graphics/TextRun.h: * platform/graphics/cairo/FontCairo.cpp: (WebCore::Font::platformPathForGlyph const): (WebCore::GlyphIterationState::GlyphIterationState): Deleted. (WebCore::findIntersectionPoint): Deleted. (WebCore::updateX): Deleted. (WebCore::findPathIntersections): Deleted. (): Deleted. (WebCore::CairoGlyphToPathTranslator::path): Deleted. (WebCore::CairoGlyphToPathTranslator::extents): Deleted. (WebCore::CairoGlyphToPathTranslator::underlineType): Deleted. (WebCore::CairoGlyphToPathTranslator::advance): Deleted. (WebCore::FontCascade::dashesForIntersectionsWithRect const): Deleted. * platform/graphics/cocoa/FontCascadeCocoa.mm: (WebCore::GlyphIterationState::GlyphIterationState): Deleted. (WebCore::findIntersectionPoint): Deleted. (WebCore::updateX): Deleted. (WebCore::findPathIntersections): Deleted. (): Deleted. (WebCore::MacGlyphToPathTranslator::path): Deleted. (WebCore::MacGlyphToPathTranslator::extents): Deleted. (WebCore::MacGlyphToPathTranslator::underlineType): Deleted. (WebCore::MacGlyphToPathTranslator::advance): Deleted. (WebCore::FontCascade::dashesForIntersectionsWithRect const): Deleted. * platform/graphics/cocoa/FontCocoa.mm: (WebCore::Font::platformPathForGlyph const): * rendering/TextDecorationPainter.cpp: (WebCore::drawSkipInkUnderline): (WebCore::TextDecorationPainter::paintTextDecoration): Source/WTF: Remove CSS3_TEXT_DECORATION_SKIP_INK. It's now interoperable and part of the Web Platform. * wtf/Platform.h: Canonical link: https://commits.webkit.org/206094@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-11-06 04:35:50 +00:00
2018-11-05 Myles C. Maxfield <mmaxfield@apple.com>
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.
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. Canonical link: https://commits.webkit.org/205777@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237442 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-10-26 00:44:44 +00:00
2018-10-25 Saam Barati <sbarati@apple.com>
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 <sbarati@apple.com>
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 <cdumez@apple.com>
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 <cdumez@apple.com>
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:
Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER https://bugs.webkit.org/show_bug.cgi?id=188931 Reviewed by Wenson Hsieh. .: * Source/cmake/OptionsMac.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. * Source/cmake/WebKitFeatures.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. PerformanceTests: * StitchMarker/wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Source/JavaScriptCore: * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Source/WebCore: * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Source/WebCore/PAL: * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Source/WebKit: A popover is the preferred interface for <input type=color> on macOS. The color panel is still accessible through a button on the popover, for fine-grained color selection. We can consolidate the two build flags, so that a popover is always displayed in the ENABLE(INPUT_TYPE_COLOR) build. * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::showColorPicker): (WebKit::WebPageProxy::closeOverlayedViews): * UIProcess/mac/WebColorPickerMac.mm: (WebKit::WebColorPickerMac::WebColorPickerMac): (WebKit::WebColorPickerMac::showColorPicker): Source/WebKitLegacy/mac: * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Source/WTF: * wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Tools: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER. Canonical link: https://commits.webkit.org/204057@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235403 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-08-27 21:48:13 +00:00
2018-08-27 Aditya Keerthi <akeerthi@apple.com>
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 <don.olmstead@sony.com>
[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 <don.olmstead@sony.com>
[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 <jonlee@apple.com>
Update MotionMark version number
https://bugs.webkit.org/show_bug.cgi?id=188535
<rdar://problem/43254078>
Reviewed by Said Abou-Hallawa.
* MotionMark/resources/strings.js: To 1.1.
2018-08-13 Jon Lee <jonlee@apple.com>
[MotionMark] Update Multiply test
https://bugs.webkit.org/show_bug.cgi?id=188532
<rdar://problem/43252151>
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 <jonlee@apple.com>
[MotionMark] Update Leaves test
https://bugs.webkit.org/show_bug.cgi?id=188530
<rdar://problem/43251862>
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:
Add ability to ignore process prewarming for launch time benchmark https://bugs.webkit.org/show_bug.cgi?id=188462 Patch by Ben Richards <benton_richards@apple.com> on 2018-08-10 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): Canonical link: https://commits.webkit.org/203571@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234764 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-08-10 18:23:50 +00:00
2018-08-10 Ben Richards <benton_richards@apple.com>
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 <tsavell@apple.com>
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
Add ability to ignore process prewarming for launch time benchmark https://bugs.webkit.org/show_bug.cgi?id=188462 Patch by Ben Richards <benton_richards@apple.com> on 2018-08-09 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): Canonical link: https://commits.webkit.org/203560@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234750 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-08-10 04:53:42 +00:00
2018-08-09 Ben Richards <benton_richards@apple.com>
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):
[INTL] Remove INTL sub-feature compile flags https://bugs.webkit.org/show_bug.cgi?id=188081 Patch by Andy VanWagoner <andy@vanwagoner.family> on 2018-07-26 Reviewed by Michael Catanzaro. .: * Source/cmake/OptionsJSCOnly.cmake: * Source/cmake/WebKitFeatures.cmake: PerformanceTests: Removed old and unused i18n flag. * StitchMarker/wtf/FeatureDefines.h: Source/JavaScriptCore: Removed ENABLE_INTL_NUMBER_FORMAT_TO_PARTS and ENABLE_INTL_PLURAL_RULES flags. The runtime flags are still present, and should be relied on instead. The defines for ICU features have also been updated to match HAVE() style. * Configurations/FeatureDefines.xcconfig: * runtime/IntlPluralRules.cpp: (JSC::IntlPluralRules::resolvedOptions): (JSC::IntlPluralRules::select): * runtime/IntlPluralRules.h: * runtime/Options.h: Source/WebCore: Compile time feature flags for INTL sub features were removed, and are covered by existing tests. * Configurations/FeatureDefines.xcconfig: Source/WebCore/PAL: * Configurations/FeatureDefines.xcconfig: Source/WebKit: * Configurations/FeatureDefines.xcconfig: Source/WebKitLegacy/mac: * Configurations/FeatureDefines.xcconfig: Source/WTF: Removed INTL sub-feature compile flags, and an old unused i18n flag. * wtf/FeatureDefines.h: Tools: * Scripts/webkitperl/FeatureList.pm: * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Canonical link: https://commits.webkit.org/203231@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234293 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-07-27 05:06:02 +00:00
2018-07-26 Andy VanWagoner <andy@vanwagoner.family>
[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 <david_fenton@apple.com>
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
Add benchmark for WebKit process launch times https://bugs.webkit.org/show_bug.cgi?id=186414 Patch by Ben Richards <benton_richards@apple.com> on 2018-07-19 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): Canonical link: https://commits.webkit.org/203012@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234006 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-07-19 21:54:48 +00:00
2018-07-19 Ben Richards <benton_richards@apple.com>
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):
[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. Canonical link: https://commits.webkit.org/202238@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233147 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-25 15:38:03 +00:00
2018-06-25 Jon Lee <jonlee@apple.com>
[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 <jonlee@apple.com>
[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 <jonlee@apple.com>
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 <jonlee@apple.com>
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.
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. Canonical link: https://commits.webkit.org/201737@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232561 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-06 23:46:43 +00:00
2018-06-06 Jon Lee <jonlee@apple.com>
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 <jonlee@apple.com>
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 <jonlee@apple.com>
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 <mmaxfield@apple.com>
Improve the performance of Font::canRenderCombiningCharacterSequence()
https://bugs.webkit.org/show_bug.cgi?id=185933
Reviewed by Ryosuke Niwa.
* Layout/ComplexLongUnique.html: Added.
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. PerformanceTests: 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. Source/JavaScriptCore: This patch adds the testmem CLI. It takes as input a file to run and the number of iterations to run it (by default it runs it 20 times). Each iteration runs in a new JSContext. Each JSContext belongs to a VM that is created once. When finished, the CLI dumps out the peak memory usage of the process, the memory usage at the end of running all the iterations of the process, and the total time it took to run all the iterations. * JavaScriptCore.xcodeproj/project.pbxproj: * testmem: Added. * testmem/testmem.mm: Added. (description): (Footprint::now): (main): Tools: This patch adds the run-testmem script. This runs the new testmem CLI against the contents in the testmem benchmark. The contents of testmem contain tests from ARES-6, Sunspider, Octane, and JetStream. One iteration of the benchmark comprises of running each testmem test for a certain number of iterations. We collect the peak memory usage, the memory usage after running all the iterations, and the time it takes to run all the iterations. We then run the entire benchmark 3 times over. For each test, we compute the arithmetic mean over each iteration for time, peak memory, and end memory. The benchmark then computes a time score and memory score. peak memory score = geomean({peak memory of each individual test}) end memory score = geomean({end memory of each individual test}) memory score = geomean({peak memory score, end memory score}) time score = geomean({time score of each individual test}) We want the memory score to weigh improvements to peak memory usage and memory usage at the end equally. We plan to tune this benchmark in JSC's mini mode by improving the memory score while ensuring the time score is not more than 10-15% regressed. * Scripts/run-testmem: Added. Canonical link: https://commits.webkit.org/201421@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232193 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-25 19:05:25 +00:00
2018-05-25 Saam Barati <sbarati@apple.com>
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 <ryanhaddad@apple.com>
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 <utatane.tea@gmail.com>
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 <mmaxfield@apple.com>
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 <antti@apple.com>
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.
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. * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsWPE.cmake: PerformanceTests: Rename OPENGL_ES_2 to OPENGL_ES. * StitchMarker/wtf/Platform.h: Source/WebCore: Adjust the places where we check for PLATFORM(MAC) or PLATFORM(IOS) related to WebGL, and instead rely on USE(OPENGL) USE(OPENGL_ES). * CMakeLists.txt: * PlatformGTK.cmake: * platform/graphics/GLContext.cpp: (WebCore::initializeOpenGLShimsIfNeeded): * platform/graphics/GraphicsContext3DPrivate.cpp: * platform/graphics/OpenGLESShims.h: * platform/graphics/cairo/ImageBufferCairo.cpp: * platform/graphics/egl/GLContextEGL.cpp: (WebCore::GLContextEGL::getEGLConfig): (WebCore::GLContextEGL::createContext): (WebCore::GLContextEGL::createSharingContext): * platform/graphics/egl/GLContextEGLWPE.cpp: (WebCore::GLContextEGL::createWPEContext): * platform/graphics/egl/GLContextEGLWayland.cpp: (WebCore::GLContextEGL::createWaylandContext): * platform/graphics/egl/GLContextEGLX11.cpp: (WebCore::GLContextEGL::createPixmapContext): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): * platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp: (WebCore::VideoTextureCopierGStreamer::VideoTextureCopierGStreamer): (WebCore::VideoTextureCopierGStreamer::~VideoTextureCopierGStreamer): (WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture): * platform/graphics/gstreamer/VideoTextureCopierGStreamer.h: * platform/graphics/opengl/Extensions3DOpenGLES.cpp: * platform/graphics/opengl/Extensions3DOpenGLES.h: * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: (WebCore::GraphicsContext3D::create): (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::isGLES2Compliant const): * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: (WebCore::GraphicsContext3D::create): (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::~GraphicsContext3D): (WebCore::GraphicsContext3D::isGLES2Compliant const): (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/texmap/TextureMapperContextAttributes.cpp: (WebCore::TextureMapperContextAttributes::initialize): * platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGLData::~TextureMapperGLData): (WebCore::TextureMapperGLData::getVAO): (WebCore::TextureMapperGL::beginPainting): (WebCore::TextureMapperGL::endPainting): * platform/graphics/texmap/TextureMapperGLHeaders.h: * platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::TextureMapperShaderProgram::create): Source/WebKit: Rename OPENGL_ES_2 to OPENGL_ES. * CMakeLists.txt: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: (WebKit::AcceleratedBackingStoreWayland::paint): * UIProcess/gtk/WaylandCompositor.cpp: (WebKit::WaylandCompositor::initializeEGL): Source/WebKitLegacy/win: Rename OPENGL_ES_2 to OPENGL_ES. * WebCoreSupport/AcceleratedCompositingContext.cpp: Source/WTF: If we're on a Cocoa platform, define USE_OPENGL/USE_OPENGL_ES depending on what we're actually going to use. In this case, they are exclusive, but it doesn't appear that other platforms use this approach. Ultimately the idea is to be more concerned with the type of OpenGL we're using, rather than the platform. * wtf/Platform.h: Define USE_OPENGL(_ES) for PLATFORM(COCOA). Canonical link: https://commits.webkit.org/198652@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228590 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-02-17 00:48:36 +00:00
2018-02-16 Dean Jackson <dino@apple.com>
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 <rniwa@webkit.org>
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 <ross.kirsling@sony.com>
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 <antti@apple.com>
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 <ggaren@apple.com>
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 <rniwa@webkit.org>
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 <rniwa@webkit.org>
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 <antti@apple.com>
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 <antti@apple.com>
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 <rniwa@webkit.org>
Temporarily skip StyleBench until webkit.org/b/182088 is fixed.
* Skipped:
2018-01-29 Ryosuke Niwa <rniwa@webkit.org>
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 <cnardi@chromium.org>
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 <antti@apple.com>
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 <rniwa@webkit.org>
Temporarily skip Speedometer until we fix the metrics.
* Skipped:
2018-01-16 Alex Christensen <achristensen@webkit.org>
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 <rniwa@webkit.org>
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 ==