Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 46c40d49e8caf1419e909ba6bcebc2c8c68b0738
      
https://github.com/WebKit/WebKit/commit/46c40d49e8caf1419e909ba6bcebc2c8c68b0738
  Author: Yusuke Suzuki <ysuz...@apple.com>
  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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to