[webkit-changes] [WebKit/WebKit] bb9624: [JSC] Simplify wasm to import function call

Yusuke Suzuki noreply at github.com
Tue Jan 24 18:50:03 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bb96241cb10a9cff4dccb36c3c7f8a7a2299dc23
      https://github.com/WebKit/WebKit/commit/bb96241cb10a9cff4dccb36c3c7f8a7a2299dc23
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-01-24 (Tue, 24 Jan 2023)

  Changed paths:
    M Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmInstance.h
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp
    M Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h
    M Source/JavaScriptCore/wasm/js/WebAssemblyWrapperFunction.cpp

  Log Message:
  -----------
  [JSC] Simplify wasm to import function call
https://bugs.webkit.org/show_bug.cgi?id=251068
rdar://104588822

Reviewed by Justin Michaud.

We are unnecessarily complicating code generation for wasm to import function calls: we are having two cases, one for Wasm->JS and one for Wasm->Wasm.
We can just make Wasm->Wasm trampoline the same signature to Wasm->JS so that we can just call a thunk in one callsite, and which can handle both Wasm->JS
and Wasm->Wasm. This patch removes Wasm->Wasm special handling. We rename WasmToEmbedderStub to ImportFunctionStub and we set either Wasm->JS or Wasm->Wasm
trampoline to this slot.

* Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h:
(JSC::Wasm::ExpressionType>::addCall):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addCall):
* Source/JavaScriptCore/wasm/WasmInstance.h:
(JSC::Wasm::Instance::offsetOfImportFunctionStub):
(JSC::Wasm::Instance::offsetOfWasmToEmbedderStub): Deleted.
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::doWasmCall):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::finalizeCreation):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h:
* Source/JavaScriptCore/wasm/js/WebAssemblyWrapperFunction.cpp:
(JSC::WebAssemblyWrapperFunction::create):

Canonical link: https://commits.webkit.org/259329@main




More information about the webkit-changes mailing list