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

Reply via email to