Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 46c40d49e8caf1419e909ba6bcebc2c8c68b0738
https://github.com/WebKit/WebKit/commit/46c40d49e8caf1419e909ba6bcebc2c8c68b0738
Author: Yusuke Suzuki <[email protected]>
Date: 2024-05-24 (Fri, 24 May 2024)
Changed paths:
M Source/JavaScriptCore/heap/Heap.cpp
M Source/JavaScriptCore/jit/JITInlines.h
M Source/JavaScriptCore/wasm/WasmCallee.cpp
M Source/JavaScriptCore/wasm/WasmCallee.h
M Source/JavaScriptCore/wasm/WasmEntryPlan.cpp
M Source/JavaScriptCore/wasm/WasmEntryPlan.h
M Source/JavaScriptCore/wasm/WasmInstance.cpp
M Source/JavaScriptCore/wasm/WasmInstance.h
M Source/JavaScriptCore/wasm/WasmModule.cpp
M Source/JavaScriptCore/wasm/WasmModule.h
M Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h
M Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h
M Source/JavaScriptCore/wasm/js/WasmToJS.cpp
M Source/JavaScriptCore/wasm/js/WasmToJS.h
Log Message:
-----------
[JSC] Use DataOnlyCallLinkInfo in WasmToJS thunk
https://bugs.webkit.org/show_bug.cgi?id=274636
rdar://128663255
Reviewed by Justin Michaud.
This is preparation for offloading thunk generation from the main thread to the
wasm compiler threads.
Now, we introduced DataOnlyCallLinkInfo. So we can use it in WasmToJS thunk.
Previously, we were using
CallLinkInfo here, and since this is tied to each executing thread, we needed
to generate code with CallLinkInfo
for each WasmModule instance in each thread (if there are multiple workers,
they need to generate these thunks
with linked CallLinkInfo to each worker VM). But now, DataOnlyCallLinkInfo can
decopule the code from the IC,
so now the patch makes the code independent from VM and IC. We generate thunk
in WasmEntryPlan, and we instantiate
DataOnlyCallLinkInfo instances on Wasm::Instance. This design allows us to
generate these thunks in wasm compiler thread
in the future, which can accelerate wasm startup time.
* Source/JavaScriptCore/heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::deleteAllCodeBlocks):
* Source/JavaScriptCore/jit/JITInlines.h:
(JSC::JIT::appendCallWithExceptionCheck):
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::WasmToJSCallee::singleton):
* Source/JavaScriptCore/wasm/WasmCallee.h:
* Source/JavaScriptCore/wasm/WasmEntryPlan.cpp:
(JSC::Wasm::EntryPlan::prepare):
(JSC::Wasm::EntryPlan::generateWasmToWasmStubs):
(JSC::Wasm::EntryPlan::generateWasmToJSStubs):
* Source/JavaScriptCore/wasm/WasmEntryPlan.h:
(JSC::Wasm::EntryPlan::takeWasmToJSExitStubs):
* Source/JavaScriptCore/wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::~Instance):
* Source/JavaScriptCore/wasm/WasmInstance.h:
(JSC::Wasm::Instance::ImportFunctionInfo::offsetOfCallLinkInfo):
(JSC::Wasm::Instance::offsetOfCallLinkInfo):
* Source/JavaScriptCore/wasm/WasmModule.cpp:
(JSC::Wasm::Module::Module):
* Source/JavaScriptCore/wasm/WasmModule.h:
(JSC::Wasm::Module::importFunctionStub):
(JSC::Wasm::Module::wasmToJSCallee): Deleted.
* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::~JSWebAssemblyInstance):
(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::clearJSCallICs):
(JSC::JSWebAssemblyInstance::finalizeUnconditionally):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h:
* Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::createStub):
(JSC::JSWebAssemblyModule::clearJSCallICs): Deleted.
(JSC::JSWebAssemblyModule::finalizeUnconditionally): Deleted.
(JSC::JSWebAssemblyModule::generateWasmToJSStubs): Deleted.
* Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h:
* Source/JavaScriptCore/wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
(JSC::Wasm::emitThrowWasmToJSException):
* Source/JavaScriptCore/wasm/js/WasmToJS.h:
Canonical link: https://commits.webkit.org/279275@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes