[webkit-changes] [WebKit/WebKit] 57c000: [JSC] Make StringConstructor call faster

Yusuke Suzuki noreply at github.com
Fri Feb 10 22:41:52 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57c000d9eaf5aa7fbc274c4a4f8518ada8875bd3
      https://github.com/WebKit/WebKit/commit/57c000d9eaf5aa7fbc274c4a4f8518ada8875bd3
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
    A JSTests/microbenchmarks/string-on-string.js
    M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
    M Source/JavaScriptCore/jit/ThunkGenerators.cpp
    M Source/JavaScriptCore/jit/ThunkGenerators.h
    M Source/JavaScriptCore/runtime/Intrinsic.h
    M Source/JavaScriptCore/runtime/StringConstructor.cpp
    M Source/JavaScriptCore/runtime/StringConstructor.h
    M Source/JavaScriptCore/runtime/VM.cpp

  Log Message:
  -----------
  [JSC] Make StringConstructor call faster
https://bugs.webkit.org/show_bug.cgi?id=252099
rdar://105306684

Reviewed by Justin Michaud.

String constructor is used in a form of call (not construct) to apply ToString-like effect onto the input.
This patch makes String constructor JSFunction so that we can make this call faster than InternalFunction calls.
This is the same optimization done for Number constructor.

                                     ToT                     Patched

        string-on-string        8.6568+-0.0778     ^      7.2580+-0.0923        ^ definitely 1.1927x faster

* JSTests/microbenchmarks/string-on-string.js: Added.
(shouldBe):
(test):
* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* Source/JavaScriptCore/jit/ThunkGenerators.cpp:
(JSC::stringConstructorCallThunkGenerator):
* Source/JavaScriptCore/jit/ThunkGenerators.h:
* Source/JavaScriptCore/runtime/Intrinsic.h:
* Source/JavaScriptCore/runtime/StringConstructor.cpp:
(JSC::StringConstructor::StringConstructor):
(JSC::StringConstructor::finishCreation):
(JSC::StringConstructor::create):
* Source/JavaScriptCore/runtime/StringConstructor.h:
* Source/JavaScriptCore/runtime/VM.cpp:
(JSC::thunkGeneratorForIntrinsic):

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




More information about the webkit-changes mailing list