Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b7beed0850ad4df011e94193572175a2e69d90f9
      
https://github.com/WebKit/WebKit/commit/b7beed0850ad4df011e94193572175a2e69d90f9
  Author: Yusuke Suzuki <[email protected]>
  Date:   2025-05-01 (Thu, 01 May 2025)

  Changed paths:
    A JSTests/stress/multi-put-by-val-does-not-use-cow.js
    A JSTests/stress/multi-put-by-val.js
    M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
    M Source/JavaScriptCore/dfg/DFGClobberize.h
    M Source/JavaScriptCore/dfg/DFGDoesGC.cpp
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
    M Source/JavaScriptCore/dfg/DFGGraph.h
    M Source/JavaScriptCore/dfg/DFGNode.h
    M Source/JavaScriptCore/dfg/DFGNodeType.h
    M Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
    M Source/JavaScriptCore/dfg/DFGSafeToExecute.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.cpp
    M Source/JavaScriptCore/ftl/FTLCapabilities.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  [JSC] Add MultiPutByVal
https://bugs.webkit.org/show_bug.cgi?id=292213
rdar://150219398

Reviewed by Yijia Huang and Keith Miller.

This patch adds MultiPutByVal. The support right now is very limited,
which is,

    MultiPutByVal(some-arrays, Int32, Int32)

form is only supported. Also, we do not support CoW JSArrays.
This can be extended later, but right now, we are not supporting them.
Since CoW matters in PutByVal, we are using indexingMode instead of
indexingType compared to MultiGetByVal.

* JSTests/stress/multi-put-by-val-does-not-use-cow.js: Added.
(shouldBe):
(shouldBeArray):
(test):
* JSTests/stress/multi-put-by-val.js: Added.
(shouldBe):
(shouldBeArray):
(test):
* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* Source/JavaScriptCore/dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* Source/JavaScriptCore/dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::refineArrayModesForMultiGetByVal):
(JSC::DFG::FixupPhase::refineArrayModesForMultiPutByVal):
(JSC::DFG::FixupPhase::refineArrayModesForMultiByVal): Deleted.
* Source/JavaScriptCore/dfg/DFGGraph.h:
* Source/JavaScriptCore/dfg/DFGNode.h:
(JSC::DFG::Node::convertToMultiPutByVal):
(JSC::DFG::Node::hasMultiPutByValData):
(JSC::DFG::Node::multiPutByValData):
(JSC::DFG::Node::hasArrayModes):
(JSC::DFG::Node::arrayModes):
(JSC::DFG::Node::hasArrayMode):
(JSC::DFG::Node::arrayMode):
(JSC::DFG::Node::setArrayMode):
(JSC::DFG::Node::hasECMAMode):
(JSC::DFG::Node::ecmaMode):
* Source/JavaScriptCore/dfg/DFGNodeType.h:
* Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:
* Source/JavaScriptCore/dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* Source/JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
* Source/JavaScriptCore/ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

Canonical link: https://commits.webkit.org/294380@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to