[webkit-changes] [WebKit/WebKit] 8591dc: [Wasm-GC] Implement initial minimal JS API for Was...
Asumu Takikawa
noreply at github.com
Sat Mar 11 17:39:18 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8591dc430ab945fcfe29a044871e9ec7bca53195
https://github.com/WebKit/WebKit/commit/8591dc430ab945fcfe29a044871e9ec7bca53195
Author: Asumu Takikawa <asumu at igalia.com>
Date: 2023-03-11 (Sat, 11 Mar 2023)
Changed paths:
M JSTests/wasm/gc/arrays.js
A JSTests/wasm/gc/js-api.js
M JSTests/wasm/gc/structs.js
M Source/JavaScriptCore/wasm/WasmCallingConvention.h
M Source/JavaScriptCore/wasm/js/JSToWasm.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.cpp
M Source/JavaScriptCore/wasm/js/WasmToJS.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyGCObjectBase.cpp
M Source/JavaScriptCore/wasm/js/WebAssemblyGCObjectBase.h
Log Message:
-----------
[Wasm-GC] Implement initial minimal JS API for Wasm GC
https://bugs.webkit.org/show_bug.cgi?id=246769
Reviewed by Yusuke Suzuki.
Implements the Wasm GC draft JS API described in:
https://docs.google.com/document/d/17hCQXOyeSgogpJ0I0wir4LRmdvu4l7Oca6e1NkbVN8M/
https://github.com/WebAssembly/gc/pull/352
This specifies that GC structs and arrays are opaque objects with
internal methods (on WebAssemblyGCObjectBase) that either lead to
throwing exceptions or returning some kind of null result.
This patch doesn't yet implement the ToWebAssemblyValue changes needed
to roundtrip these values back to Wasm or to access globals and tables
with these values from JS.
The patch also eliminates some of the restrictions on passing GC values
that were added before the JS API was specified.
* JSTests/wasm/gc/arrays.js:
* JSTests/wasm/gc/js-api.js: Added.
(runWasmGCObjectTests):
(testStruct):
* JSTests/wasm/gc/structs.js:
* Source/JavaScriptCore/wasm/WasmCallingConvention.h:
(JSC::Wasm::WasmCallingConvention::callInformationFor const):
* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:
(JSC::Wasm::marshallJSResult):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.cpp:
(JSC::JSWebAssemblyArray::finishCreation):
* Source/JavaScriptCore/wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
* Source/JavaScriptCore/wasm/js/WebAssemblyGCObjectBase.cpp:
(JSC::WebAssemblyGCObjectBase::getOwnPropertySlot):
(JSC::WebAssemblyGCObjectBase::getOwnPropertySlotByIndex):
(JSC::WebAssemblyGCObjectBase::put):
(JSC::WebAssemblyGCObjectBase::putByIndex):
(JSC::WebAssemblyGCObjectBase::deleteProperty):
(JSC::WebAssemblyGCObjectBase::deletePropertyByIndex):
(JSC::WebAssemblyGCObjectBase::getOwnPropertyNames):
(JSC::WebAssemblyGCObjectBase::defineOwnProperty):
(JSC::WebAssemblyGCObjectBase::getPrototype):
(JSC::WebAssemblyGCObjectBase::setPrototype):
(JSC::WebAssemblyGCObjectBase::isExtensible):
(JSC::WebAssemblyGCObjectBase::preventExtensions):
* Source/JavaScriptCore/wasm/js/WebAssemblyGCObjectBase.h:
Canonical link: https://commits.webkit.org/261544@main
More information about the webkit-changes
mailing list