Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3e8cc7706222b0efa402b2bf003729c3913101e7
      
https://github.com/WebKit/WebKit/commit/3e8cc7706222b0efa402b2bf003729c3913101e7
  Author: Yijia Huang <[email protected]>
  Date:   2023-09-08 (Fri, 08 Sep 2023)

  Changed paths:
    A JSTests/microbenchmarks/object-assign-array-storage-source.js
    A JSTests/microbenchmarks/object-assign-contiguous-source.js
    A JSTests/microbenchmarks/object-assign-double-source.js
    A JSTests/microbenchmarks/object-assign-empty-target-sp3-charts-chartjs.js
    A JSTests/microbenchmarks/object-assign-int32-source.js
    A JSTests/microbenchmarks/object-assign-multiple-sources.js
    A JSTests/stress/object-assign-multiple-non-array-sources.js
    A JSTests/stress/object-assign-non-array-with-array-storage-source.js
    A JSTests/stress/object-assign-non-array-with-contiguous-source.js
    A JSTests/stress/object-assign-slow-put-array-storage-source.js
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSObjectInlines.h
    M Source/JavaScriptCore/runtime/ObjectConstructor.cpp
    M Source/JavaScriptCore/runtime/ObjectConstructorInlines.h
    M Source/JavaScriptCore/runtime/Structure.h
    M Source/JavaScriptCore/runtime/StructureInlines.h

  Log Message:
  -----------
  [JSC] Add fast path for Object.assign(target, NamedProperties + 
IndexedProperties)
https://bugs.webkit.org/show_bug.cgi?id=261219
rdar://115070621

Reviewed by Yusuke Suzuki.

Previously, we have fast path only for Object.assign(target, NamedProperties).
This patch extends the Object.assign fast path for source consists of
NamedProperties and IndexedProperties.

                                                   without                     
with

object-assign-slow-put-array-storage-source     9.3211+-0.0820     ^      
4.7620+-0.0325        ^ definitely 1.9574x faster
object-assign-contiguous-source                 6.5756+-0.2071     ^      
2.4984+-0.0273        ^ definitely 2.6320x faster
object-assign-int32-source                      6.4450+-0.0493     ^      
2.6511+-0.0796        ^ definitely 2.4310x faster
object-assign-multiple-sources                 22.1794+-0.1457     ^     
10.5955+-0.2918        ^ definitely 2.0933x faster
object-assign-array-storage-source              9.2886+-0.0758     ^      
4.7451+-0.2034        ^ definitely 1.9575x faster
object-assign-double-source                     6.5618+-0.1262     ^      
2.8638+-0.0560        ^ definitely 2.2913x faster
object-assign-empty-target-sp3-charts-chartjs   2.8745+-0.0313     ^      
1.8253+-0.0134        ^ definitely 1.5748x faster

* JSTests/microbenchmarks/object-assign-empty-target-array-storage-source.js: 
Added.
* JSTests/microbenchmarks/object-assign-empty-target-contiguous-source.js: 
Added.
* JSTests/microbenchmarks/object-assign-empty-target-double-source.js: Added.
* JSTests/microbenchmarks/object-assign-empty-target-int32-source.js: Added.
* 
JSTests/microbenchmarks/object-assign-empty-target-slow-put-array-storage-source.js:
 Added.
* JSTests/microbenchmarks/object-assign-empty-target-sp3-charts.js: Added.
* JSTests/stress/object-assign-empty-indexed-property-source.js: Added.
(shouldBe):
(test):
* Source/JavaScriptCore/dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/runtime/JSObject.cpp:
(JSC::JSObject::copyArrayStorage):
(JSC::JSObject::putOwnDataPropertyBatching):
* Source/JavaScriptCore/runtime/JSObject.h:
(JSC::isEmptyJSFinalObject):
* Source/JavaScriptCore/runtime/JSObjectInlines.h:
(JSC::JSObject::fastForEachPropertyWithSideEffectFreeFunctor):
* Source/JavaScriptCore/runtime/ObjectConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/ObjectConstructorInlines.h:
(JSC::objectAssignFast):
* Source/JavaScriptCore/runtime/Structure.h:
* Source/JavaScriptCore/runtime/StructureInlines.h:
(JSC::Structure::canPerformFastPropertyEnumeration const):

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to