[webkit-changes] [WebKit/WebKit] 47d91b: [JSC] Always use Wasm::Callee for wasm function ca...

Yusuke Suzuki noreply at github.com
Mon Jan 23 12:34:11 PST 2023


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

  Changed paths:
    M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
    M Source/JavaScriptCore/llint/WebAssembly.asm
    M Source/JavaScriptCore/runtime/VM.h
    M Source/JavaScriptCore/wasm/WasmIRGeneratorHelpers.h
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmOperationsInlines.h
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp

  Log Message:
  -----------
  [JSC] Always use Wasm::Callee for wasm function callee
https://bugs.webkit.org/show_bug.cgi?id=251026
rdar://104563575

Reviewed by Tadeu Zagallo.

This patch removes hack for wasm catch. Previously we are setting JSCell on callee when throwing an error from wasm because
LLInt catch code etc. strongly assumes JSCell on callee slot and retrieving VM from that. And to allow this rewrite, we had
a side table VM::calleeForWasmCatch which holds true Wasm::Callee and then we needed to replace it later.
But we can now get VM easily even in wasm frame because we strongly guarantee that CodeBlock slot now holds Wasm::Instance*
if a frame is wasm frame. This patch fixes the code so that VM retrieval becomes as follows.

    if (callee is wasm)
        get VM from wasmInstance in codeBlock slot
    else
        get VM from callee cell

This removes the hack for wasm exception, and we can remove VM::calleeForWasmCatch.

* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
* Source/JavaScriptCore/llint/WebAssembly.asm:
* Source/JavaScriptCore/runtime/VM.h:
(JSC::VM::calleeForWasmCatchOffset): Deleted.
* Source/JavaScriptCore/wasm/WasmIRGeneratorHelpers.h:
(JSC::Wasm::emitCatchPrologueShared):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmOperationsInlines.h:
(JSC::Wasm::throwWasmToJSException):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):

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




More information about the webkit-changes mailing list