[webkit-changes] [WebKit/WebKit] 0a493a: [JSC] Polymorphic Call DataIC
Yusuke Suzuki
noreply at github.com
Tue Jan 2 13:46:30 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0a493a01571d4a9d925f193e919c15811f8e0c4b
https://github.com/WebKit/WebKit/commit/0a493a01571d4a9d925f193e919c15811f8e0c4b
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2024-01-02 (Tue, 02 Jan 2024)
Changed paths:
M JSTests/stress/v8-deltablue-strict.js
M PerformanceTests/SunSpider/shadow-chicken.yaml
M Source/JavaScriptCore/bytecode/CallLinkInfo.cpp
M Source/JavaScriptCore/bytecode/CallLinkInfo.h
M Source/JavaScriptCore/bytecode/CallLinkInfoBase.h
M Source/JavaScriptCore/bytecode/CodeBlock.cpp
M Source/JavaScriptCore/bytecode/CodeBlock.h
M Source/JavaScriptCore/bytecode/Repatch.cpp
M Source/JavaScriptCore/bytecode/Repatch.h
M Source/JavaScriptCore/bytecode/RepatchInlines.h
M Source/JavaScriptCore/heap/JITStubRoutineSet.cpp
M Source/JavaScriptCore/interpreter/FrameTracers.h
M Source/JavaScriptCore/interpreter/Interpreter.cpp
M Source/JavaScriptCore/jit/BaselineJITRegisters.h
M Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp
M Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h
M Source/JavaScriptCore/jit/JITCall.cpp
M Source/JavaScriptCore/jit/JITOperations.cpp
M Source/JavaScriptCore/jit/JITOperations.h
M Source/JavaScriptCore/jit/JITThunks.h
M Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp
M Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.h
M Source/JavaScriptCore/jit/ThunkGenerators.cpp
M Source/JavaScriptCore/jit/ThunkGenerators.h
M Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
M Source/JavaScriptCore/llint/LLIntThunks.cpp
M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
M Source/JavaScriptCore/runtime/Options.cpp
M Source/WTF/wtf/ButterflyArray.h
Log Message:
-----------
[JSC] Polymorphic Call DataIC
https://bugs.webkit.org/show_bug.cgi?id=266808
rdar://problem/120037773
Reviewed by Justin Michaud.
This patch implements Polymorphic Call DataIC. Previously, polymorphic
IC was generating JIT thunks and calling it even in Baseline JIT.
This introduces new thunk based Polymorphic Call DataIC, which does
not generate JIT code for Polymorphic in Baseline JIT in Call IC.
New thunk integrates CallSlot into PolymorphicCallStubRoutine. And thunk
iterates these slots and dispatch the function calls.
* JSTests/stress/v8-deltablue-strict.js:
* Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::setStub):
* Source/JavaScriptCore/bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::offsetOfStub):
* Source/JavaScriptCore/bytecode/CallLinkInfoBase.h:
(JSC::CallSlot::offsetOfCalleeOrExecutable):
(JSC::CallSlot::offsetOfCount):
(JSC::CallSlot::offsetOfTarget):
(JSC::CallSlot::offsetOfCodeBlock):
* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::linkIncomingCall):
(JSC::CodeBlock::noticeIncomingCall):
* Source/JavaScriptCore/bytecode/CodeBlock.h:
* Source/JavaScriptCore/bytecode/Repatch.cpp:
(JSC::linkMonomorphicCall):
(JSC::linkDirectCall):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):
* Source/JavaScriptCore/bytecode/Repatch.h:
* Source/JavaScriptCore/bytecode/RepatchInlines.h:
(JSC::virtualForWithFunction):
* Source/JavaScriptCore/interpreter/FrameTracers.h:
(JSC::NativeCallFrameTracerForTailCall::NativeCallFrameTracerForTailCall):
* Source/JavaScriptCore/interpreter/Interpreter.cpp:
(JSC::Interpreter::prepareForCachedCall):
* Source/JavaScriptCore/jit/BaselineJITRegisters.h:
* Source/JavaScriptCore/jit/JITCall.cpp:
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
* Source/JavaScriptCore/jit/JITOperations.cpp:
(JSC::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/jit/JITOperations.h:
* Source/JavaScriptCore/jit/JITThunks.h:
* Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:
(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
(JSC::PolymorphicCallStubRoutine::hasEdges const):
(JSC::PolymorphicCallStubRoutine::edges const):
* Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.h:
* Source/JavaScriptCore/jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::polymorphicThunkFor):
(JSC::polymorphicThunkForRegularCall):
(JSC::polymorphicThunkForTailCall):
(JSC::polymorphicThunkForRegularCallForClosure):
(JSC::polymorphicThunkForTailCallForClosure):
* Source/JavaScriptCore/jit/ThunkGenerators.h:
* Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:
(JSC::LLInt::llint_virtual_call):
* Source/JavaScriptCore/llint/LLIntThunks.cpp:
(JSC::LLInt::createTailCallGate):
* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
* Source/WTF/wtf/ButterflyArray.h:
(WTF::ButterflyArray::operator delete):
(WTF::ButterflyArray::trailingData const):
Canonical link: https://commits.webkit.org/272580@main
More information about the webkit-changes
mailing list