Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7fa8139936ced01652670507cf68153def53ca3b https://github.com/WebKit/WebKit/commit/7fa8139936ced01652670507cf68153def53ca3b Author: Yusuke Suzuki <ysuz...@apple.com> 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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes