[webkit-changes] [WebKit/WebKit] 70ed41: [JSC] Optimize C++ -> JS calls more by removing un...

Yusuke Suzuki noreply at github.com
Tue Nov 21 14:38:11 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 70ed411a86beb021b7cfd8a152196da979efeef4
      https://github.com/WebKit/WebKit/commit/70ed411a86beb021b7cfd8a152196da979efeef4
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-11-21 (Tue, 21 Nov 2023)

  Changed paths:
    M Source/JavaScriptCore/interpreter/CallFrame.cpp
    M Source/JavaScriptCore/interpreter/VMEntryRecord.h
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

  Log Message:
  -----------
  [JSC] Optimize C++ -> JS calls more by removing unnecessary callee storing to VMEntryRecord
https://bugs.webkit.org/show_bug.cgi?id=265178
rdar://118672952

Reviewed by Ross Kirsling.

This remoes unnecessary callee storing in VMEntryRecord. We are using it only in one place, and it is just getting JSGlobalObject
when there is no JS CallFrame (then, instead, it is querying to VMEntryRecord). In this case, we can just use VMEntryScope's
JSGlobalObject, which is also created before VMEntryRecord is instantiated. This removes some more unnecessary code in LowLevelInterpreter's
doVMEntry.

    cpp-to-js-cached-call       12.8405+-0.0760     ^     12.5615+-0.0582        ^ definitely 1.0222x faster

* Source/JavaScriptCore/interpreter/CallFrame.cpp:
(JSC::CallFrame::convertToStackOverflowFrame):
* Source/JavaScriptCore/interpreter/VMEntryRecord.h:
(JSC::VMEntryRecord::callee const): Deleted.
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:

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




More information about the webkit-changes mailing list