[webkit-changes] [WebKit/WebKit] 06b27b: [JSC] Fold super call with explicitly specified `O...

Yusuke Suzuki noreply at github.com
Wed Aug 7 22:49:20 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 06b27b91cf2cb5e6e4fc78f5410c065d75de1633
      https://github.com/WebKit/WebKit/commit/06b27b91cf2cb5e6e4fc78f5410c065d75de1633
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2024-08-07 (Wed, 07 Aug 2024)

  Changed paths:
    A JSTests/microbenchmarks/construct-object.js
    M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
    M Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp
    M Source/JavaScriptCore/dfg/DFGNode.h

  Log Message:
  -----------
  [JSC] Fold super call with explicitly specified `Object` constructor
https://bugs.webkit.org/show_bug.cgi?id=277787
rdar://133426751

Reviewed by Keith Miller.

We do slow path when we explicitly specifying `Object` for the super class. We found these patterns in some cases, so we would like to optimize it.
In DFG AI, we attempt to figure out that

1. super class is `Object`
2. new.target is something constant JSFunction

Then we do folding into NewObject by using internalFunctionAllocationProfile.

                                 ToT                     Patched

    construct-object       10.3615+-0.0283     ^      2.9730+-0.0200        ^ definitely 3.4852x faster

* JSTests/microbenchmarks/construct-object.js: Added.
(A):
(B):
(test):
* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* Source/JavaScriptCore/dfg/DFGNode.h:
(JSC::DFG::Node::convertToNewObject):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list