[webkit-changes] [WebKit/WebKit] 92626c: [JSC] Integrate constant folding for StringSlice
Yusuke Suzuki
noreply at github.com
Fri Oct 14 14:11:36 PDT 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 92626c6d115a104a3ad50e0eb1d9f2278a638fa2
https://github.com/WebKit/WebKit/commit/92626c6d115a104a3ad50e0eb1d9f2278a638fa2
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2022-10-14 (Fri, 14 Oct 2022)
Changed paths:
A JSTests/microbenchmarks/string-slice-constants-binary.js
A JSTests/microbenchmarks/string-slice-constants-identity.js
A JSTests/microbenchmarks/string-slice-constants.js
A JSTests/microbenchmarks/string-slice-empty-constant-folding.js
A JSTests/microbenchmarks/string-slice-length-constant.js
A JSTests/microbenchmarks/string-slice2.js
A JSTests/microbenchmarks/string-starts-with-mod-prototype-slice.js
M Source/JavaScriptCore/dfg/DFGOperations.cpp
M Source/JavaScriptCore/dfg/DFGOperations.h
M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
M Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp
M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
M Source/JavaScriptCore/runtime/StringPrototype.cpp
M Source/JavaScriptCore/runtime/StringPrototypeInlines.h
Log Message:
-----------
[JSC] Integrate constant folding for StringSlice
https://bugs.webkit.org/show_bug.cgi?id=246433
rdar://problem/101107093
Reviewed by Alexey Shvayka.
This patch applies StringSubstring optimization to StringSlice. We add strength reduction for
StringSlice so that we can compute constant strings. We also enhance existing optimization to
capture more cases: generating empty string if from and to are the same.
ToT Patched
string-slice-constants-binary 16.9754+-0.2657 ^ 10.8552+-0.2213 ^ definitely 1.5638x faster
string-slice-empty 4.3653+-0.1431 4.2705+-0.0257 might be 1.0222x faster
string-slice-constants 17.1748+-0.2821 ^ 6.8719+-0.0946 ^ definitely 2.4993x faster
string-slice-one-char 4.7544+-0.0539 4.7483+-0.0480
string-slice2 18.0453+-0.0894 17.9867+-0.0282
string-slice-constants-identity 6.4399+-0.0305 ^ 2.9076+-0.0162 ^ definitely 2.2149x faster
string-slice-empty-constant-folding 3.7372+-0.0237 ^ 3.6572+-0.0245 ^ definitely 1.0219x faster
string-slice-length-constant 17.0568+-0.0695 ^ 6.8520+-0.0438 ^ definitely 2.4893x faster
string-slice 13.6193+-0.0590 ? 13.6565+-0.1618 ?
* JSTests/microbenchmarks/string-slice-constants-binary.js: Added.
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-slice-constants-identity.js: Added.
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-slice-constants.js: Added.
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-slice-length-constant.js: Added.
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-slice2.js: Added.
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-starts-with-mod-prototype-slice.js: Added.
(shouldBe):
(String.prototype._startsWith):
(test1):
(test2):
* Source/JavaScriptCore/dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/dfg/DFGOperations.h:
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileStringSlice):
* Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
* Source/JavaScriptCore/runtime/StringPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/StringPrototypeInlines.h:
(JSC::extractSliceOffsets):
(JSC::stringSlice):
(JSC::stringSubstring):
Canonical link: https://commits.webkit.org/255552@main
More information about the webkit-changes
mailing list