Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7fa8139936ced01652670507cf68153def53ca3b
https://github.com/WebKit/WebKit/commit/7fa8139936ced01652670507cf68153def53ca3b
Author: Yusuke Suzuki <[email protected]>
Date: 2023-06-22 (Thu, 22 Jun 2023)
Changed paths:
M JSTests/stress/delete-property-check-structure-transition.js
M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
M Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h
M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
M Source/JavaScriptCore/heap/Heap.cpp
M Source/JavaScriptCore/runtime/NumberPrototype.cpp
M Source/JavaScriptCore/runtime/NumericStrings.h
M Source/JavaScriptCore/runtime/VM.cpp
M Source/JavaScriptCore/tools/JSDollarVM.cpp
M Source/WTF/wtf/MathExtras.h
Log Message:
-----------
[JSC] Enhance NumericStrings cache and reduce strength of StrCat for Int32
https://bugs.webkit.org/show_bug.cgi?id=258387
rdar://problem/111140791
Reviewed by Mark Lam.
We found that ToString(Int32) happens very frequently. This patch does two
things.
1. We convert StrCat(Int32, ...) to MakeRope(ToString(Int32), ...). MakeRope is
much faster than StrCat.
And Int32 stringifying does not have side effect. Doing this in FixupPhase
based on speculations.
2. Enhance NumericStrings size to 256 (smallest size in V8). We also make
smallIntCache accessible from
DFG and FTL so small int strings are loaded without C++ function calls. We
also mark cached strings
during eden collections, and clear them in full collection time.
* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
* Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
* Source/JavaScriptCore/heap/Heap.cpp:
(JSC::Heap::finalize):
* Source/JavaScriptCore/runtime/NumberPrototype.cpp:
(JSC::NumericStrings::initializeSmallIntCache):
(JSC::int32ToStringInternal):
* Source/JavaScriptCore/runtime/NumericStrings.h:
(JSC::NumericStrings::StringWithJSString::offsetOfJSString):
(JSC::NumericStrings::clearOnGarbageCollection):
(JSC::NumericStrings::visitAggregateImpl):
(JSC::NumericStrings::smallIntCache):
(JSC::NumericStrings::lookup):
(JSC::NumericStrings::lookupSmallString):
* Source/JavaScriptCore/runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::visitAggregateImpl):
Canonical link: https://commits.webkit.org/265397@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes