[webkit-changes] [WebKit/WebKit] b0efdb: [JSC] Use Data Call IC in Handler IC

Yusuke Suzuki noreply at github.com
Mon May 20 16:34:56 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b0efdb19a6d7a062df7f27a6e43109d9c1e4f9a6
      https://github.com/WebKit/WebKit/commit/b0efdb19a6d7a062df7f27a6e43109d9c1e4f9a6
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2024-05-20 (Mon, 20 May 2024)

  Changed paths:
    M Source/JavaScriptCore/bytecode/BytecodeList.rb
    M Source/JavaScriptCore/bytecode/CallLinkInfo.cpp
    M Source/JavaScriptCore/bytecode/CallLinkInfo.h
    M Source/JavaScriptCore/bytecode/CallLinkStatus.cpp
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
    M Source/JavaScriptCore/bytecode/InlineCacheCompiler.h
    M Source/JavaScriptCore/jit/GPRInfo.h
    M Source/JavaScriptCore/tools/JSDollarVM.cpp

  Log Message:
  -----------
  [JSC] Use Data Call IC in Handler IC
https://bugs.webkit.org/show_bug.cgi?id=274398
rdar://128405738

Reviewed by Keith Miller.

This patch integrates Data Call IC into Handler IC. Previously, CallLinkInfo used for Getter / Setter etc.
is managed by the code and the pointer to that was embedded. After this patch, InlineCacheHandler manages
DataOnlyCallLinkInfo vector, and the code will load it from GPRInfo::handlerGPR. This removes dependency
between CallLinkInfo and the code and now allowing Getter / Setter etc. to be cached and shared by Handler IC's
mechanism. As a result, now Handler IC can cache all the types of AccessCase.

After this change, we will leverage handlerGPR further and make more and more Handler IC code handlerGPR dependent
so that we can remove more code compilations.

* Source/JavaScriptCore/bytecode/BytecodeList.rb:
* Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::doneLocationIfExists):
(JSC::DataOnlyCallLinkInfo::initialize):
(JSC::CallLinkInfo::revertCall):
(JSC::BaselineCallLinkInfo::initialize): Deleted.
* Source/JavaScriptCore/bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::codeOrigin const):
* Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::getICStatusMap):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::InlineCacheCompiler::makeDefaultScratchAllocator):
(JSC::InlineCacheHandler::InlineCacheHandler):
(JSC::InlineCacheHandler::create):
(JSC::InlineCacheHandler::createNonHandlerSlowPath):
(JSC::InlineCacheHandler::createSlowPath):
(JSC::InlineCacheCompiler::generateImpl):
(JSC::InlineCacheCompiler::emitProxyObjectAccess):
(JSC::InlineCacheCompiler::regenerate):
(JSC::PolymorphicAccess::visitWeak):
(JSC::InlineCacheHandler::callLinkInfoAt):
(JSC::InlineCacheHandler::visitWeak):
(JSC::PolymorphicAccess::visitWeak const): Deleted.
(JSC::InlineCacheHandler::visitWeak const): Deleted.
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.h:
* Source/JavaScriptCore/jit/GPRInfo.h:
* Source/JavaScriptCore/tools/JSDollarVM.cpp:

Canonical link: https://commits.webkit.org/279021@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