[webkit-changes] [WebKit/WebKit] 6bf8f0: [JSC] Add WebAssembly.JSTag

Yusuke Suzuki noreply at github.com
Fri Jan 17 17:39:35 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6bf8f0f20ef1ee92e5ba53c865c339a1253a080f
      https://github.com/WebKit/WebKit/commit/6bf8f0f20ef1ee92e5ba53c865c339a1253a080f
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2025-01-17 (Fri, 17 Jan 2025)

  Changed paths:
    M JSTests/wasm/assert.js
    A JSTests/wasm/stress/jstag.js
    M Source/JavaScriptCore/SaferCPPExpectations/NoUncountedMemberCheckerExpectations
    M Source/JavaScriptCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/runtime/Exception.cpp
    M Source/JavaScriptCore/runtime/Exception.h
    M Source/JavaScriptCore/wasm/WasmIPIntSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmTag.cpp
    M Source/JavaScriptCore/wasm/WasmTag.h
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.h
    M Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp
    M Source/JavaScriptCore/wasm/js/JSWebAssemblyException.cpp
    M Source/JavaScriptCore/wasm/js/JSWebAssemblyException.h
    M Source/JavaScriptCore/wasm/js/WebAssemblyExceptionConstructor.cpp
    M Source/JavaScriptCore/wasm/js/WebAssemblyTagConstructor.cpp

  Log Message:
  -----------
  [JSC] Add WebAssembly.JSTag
https://bugs.webkit.org/show_bug.cgi?id=286103
rdar://136036182

Reviewed by Keith Miller.

This patch adds WebAssembly.JSTag for modern wasm exception handling.
This is a special tag which can catch random JS-thrown values in wasm
catch clauses. When catching non JSWebAssemblyException via JSTag,
we wrap the value with JSWebAssemblyException and pass it to wasm catch
clause. Also when rethrowing an exception, we unwrap JSWebAssemblyException
for JSTag.

* JSTests/wasm/assert.js:
* JSTests/wasm/stress/jstag.js: Added.
(import.as.assert.from.string_appeared_here.throw_ref):
* Source/JavaScriptCore/interpreter/Interpreter.cpp:
(JSC::UnwindFunctor::UnwindFunctor):
(JSC::UnwindFunctor::operator() const):
(JSC::UnwindFunctor::notifyDebuggerOfUnwinding):
(JSC::Interpreter::unwind):
* Source/JavaScriptCore/runtime/Exception.cpp:
(JSC::Exception::wrapValueForJSTag):
* Source/JavaScriptCore/runtime/Exception.h:
* Source/JavaScriptCore/wasm/WasmIPIntSlowPaths.cpp:
(JSC::IPInt::WASM_IPINT_EXTERN_CPP_DECL):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_NOEXCEPT_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* Source/JavaScriptCore/wasm/WasmTag.cpp:
(JSC::Wasm::Tag::jsExceptionTag):
* Source/JavaScriptCore/wasm/WasmTag.h:
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::TypeInformation::signatureForJSException):
(JSC::Wasm::TypeInformation::TypeInformation):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:
* Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp:
(JSC::JSWebAssembly::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/wasm/js/WebAssemblyExceptionConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list