[webkit-changes] [WebKit/WebKit] 58fbd8: [JSC] Get rid of CodeBlock dependency from DataIC
Yusuke Suzuki
noreply at github.com
Tue Sep 12 13:29:03 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 58fbd8418cf40ae43400f9b19fc5edbe772a8c03
https://github.com/WebKit/WebKit/commit/58fbd8418cf40ae43400f9b19fc5edbe772a8c03
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2023-09-12 (Tue, 12 Sep 2023)
Changed paths:
M Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
M Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h
M Source/JavaScriptCore/bytecode/AccessCaseSnippetParams.cpp
M Source/JavaScriptCore/bytecode/CodeBlock.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.h
M Source/JavaScriptCore/bytecode/StructureStubInfo.h
M Source/JavaScriptCore/dfg/DFGJITCode.cpp
M Source/JavaScriptCore/dfg/DFGJITCode.h
M Source/JavaScriptCore/dfg/DFGJITCompiler.cpp
M Source/JavaScriptCore/dfg/DFGJITCompiler.h
M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
M Source/JavaScriptCore/dfg/DFGThunks.cpp
M Source/JavaScriptCore/ftl/FTLJITCode.cpp
M Source/JavaScriptCore/ftl/FTLJITCode.h
M Source/JavaScriptCore/jit/BaselineJITCode.cpp
M Source/JavaScriptCore/jit/BaselineJITCode.h
M Source/JavaScriptCore/jit/GPRInfo.h
M Source/JavaScriptCore/jit/JITCode.cpp
M Source/JavaScriptCore/jit/JITCode.h
M Source/JavaScriptCore/jit/RegisterSet.cpp
M Source/JavaScriptCore/llint/LLIntData.h
M Source/JavaScriptCore/runtime/Options.cpp
Log Message:
-----------
[JSC] Get rid of CodeBlock dependency from DataIC
https://bugs.webkit.org/show_bug.cgi?id=261440
rdar://115317826
Reviewed by Keith Miller.
Towards handler IC, we would like to make IC code independent from attached CodeBlock since the code
will be shared by multiple CodeBlocks' IC sites. Right now, we have two places. This patch gets rid
of these dependencies.
1. Before calling a function, we need to store CallSiteIndex to the stack. And this is tied the CodeBlock.
In this patch, we get this from StructureStubInfo data structure, materialized per IC site. And it is
already storing this information. So, code itself gets independent from CallSiteIndex.
2. After calling JS function, we need to adjust stack pointer since it gets changed due to tail calls etc.
Previously we got stack height from the CodeBlock and adjusted it with callFrameRegister. However this
is tied to CodeBlock. In this patch, we made JITData always having this stack height information so that
we can load this from JITData. JITData is always stored in a particular callee-save register and it exists
in Baseline and DFG. So we can easily get this per-CodeBlock information from JITData. We disable DataIC
in FTL (this is only for testing. No production is using DataIC in FTL) for now since FTL does not have
JITData right now. We should make it enabled after we fully convert our IC to the new form.
* Source/JavaScriptCore/bytecode/AccessCaseSnippetParams.cpp:
* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::InlineCacheCompiler::generateImpl):
(JSC::InlineCacheCompiler::emitDOMJITGetter):
(JSC::InlineCacheCompiler::emitProxyObjectAccess):
(JSC::InlineCacheCompiler::regenerate):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.h:
* Source/JavaScriptCore/bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::offsetOfCallSiteIndex):
* Source/JavaScriptCore/dfg/DFGJITCode.cpp:
(JSC::DFG::JITData::tryInitialize):
(JSC::DFG::JITCode::dfgCommon const):
* Source/JavaScriptCore/dfg/DFGJITCode.h:
* Source/JavaScriptCore/ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::dfgCommon const):
* Source/JavaScriptCore/ftl/FTLJITCode.h:
* Source/JavaScriptCore/jit/BaselineJITCode.cpp:
(JSC::BaselineJITData::BaselineJITData):
* Source/JavaScriptCore/jit/BaselineJITCode.h:
* Source/JavaScriptCore/jit/JITCode.cpp:
(JSC::JITCode::dfgCommon const):
* Source/JavaScriptCore/jit/JITCode.h:
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
Canonical link: https://commits.webkit.org/267915@main
More information about the webkit-changes
mailing list