[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