[webkit-changes] [WebKit/WebKit] ea71f9: [Wasm-GC] Support bulk array instructions
Asumu Takikawa
noreply at github.com
Thu Jan 4 23:57:49 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ea71f9290dfa4441fc1f5908e5bc41f189acfc35
https://github.com/WebKit/WebKit/commit/ea71f9290dfa4441fc1f5908e5bc41f189acfc35
Author: Asumu Takikawa <asumu at igalia.com>
Date: 2024-01-04 (Thu, 04 Jan 2024)
Changed paths:
A JSTests/wasm/gc-spec-tests/array_copy.wast.js
A JSTests/wasm/gc-spec-tests/array_fill.wast.js
A JSTests/wasm/gc-spec-tests/array_init_data.wast.js
A JSTests/wasm/gc-spec-tests/array_init_elem.wast.js
M JSTests/wasm/gc/array_new_elem.js
M JSTests/wasm/gc/arrays.js
A JSTests/wasm/gc/bulk-array.js
M JSTests/wasm/wasm.json
M Source/JavaScriptCore/bytecode/BytecodeList.rb
M Source/JavaScriptCore/llint/WebAssembly.asm
M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp
M Source/JavaScriptCore/wasm/WasmConstExprGenerator.h
M Source/JavaScriptCore/wasm/WasmExceptionType.h
M Source/JavaScriptCore/wasm/WasmFunctionParser.h
M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
M Source/JavaScriptCore/wasm/WasmInstance.cpp
M Source/JavaScriptCore/wasm/WasmInstance.h
M Source/JavaScriptCore/wasm/WasmLLIntBuiltin.h
M Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp
M Source/JavaScriptCore/wasm/WasmOperations.cpp
M Source/JavaScriptCore/wasm/WasmOperations.h
M Source/JavaScriptCore/wasm/WasmOperationsInlines.h
M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
M Source/JavaScriptCore/wasm/WasmSlowPaths.h
M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
M Source/JavaScriptCore/wasm/WasmTypeDefinition.h
M Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.h
M Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp
M Source/JavaScriptCore/wasm/wasm.json
Log Message:
-----------
[Wasm-GC] Support bulk array instructions
https://bugs.webkit.org/show_bug.cgi?id=264057
Reviewed by Justin Michaud.
Add support for bulk array operations from the Wasm GC proposal. These
allow bulk operations into GC arrays.
Adds spec tests from commit ff856bef3b717609e9b6854a1c78da80068322e9
of the GC proposal repo.
Also fixes a number of other related issues:
* Fix incorrect element segment copying ranges for array.new_elem.
* Fix handling of dropped segments in array.new_elem.
* Minor fix to exception cases in B3 backend.
* Fix registration of declared functions in the constant expression
parser.
* Adjust error messages
* Fixed global import for i31refs.
* JSTests/wasm/gc-spec-tests/array_copy.wast.js: Added.
* JSTests/wasm/gc-spec-tests/array_fill.wast.js: Added.
* JSTests/wasm/gc-spec-tests/array_init_data.wast.js: Added.
* JSTests/wasm/gc-spec-tests/array_init_elem.wast.js: Added.
* JSTests/wasm/gc/array_new_elem.js:
(testAllElementSegmentKinds):
* JSTests/wasm/gc/arrays.js:
* JSTests/wasm/gc/bulk-array.js: Added.
(testArrayFill.doTest):
(testArrayFill):
(testArrayCopy.doTest):
(testArrayCopy):
(testArrayInitElem):
(testArrayInitData):
* JSTests/wasm/wasm.json:
* Source/JavaScriptCore/bytecode/BytecodeList.rb:
* Source/JavaScriptCore/llint/WebAssembly.asm:
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addArrayNewFixed):
(JSC::Wasm::B3IRGenerator::emitArrayNullCheck):
(JSC::Wasm::B3IRGenerator::addArraySet):
(JSC::Wasm::B3IRGenerator::addArrayFill):
(JSC::Wasm::B3IRGenerator::addArrayCopy):
(JSC::Wasm::B3IRGenerator::addArrayInitElem):
(JSC::Wasm::B3IRGenerator::addArrayInitData):
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::addArrayFill):
(JSC::Wasm::BBQJIT::addArrayCopy):
(JSC::Wasm::BBQJIT::addArrayInitElem):
(JSC::Wasm::BBQJIT::addArrayInitData):
* Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp:
(JSC::Wasm::ConstExprGenerator::declaredFunctions const):
(JSC::Wasm::ConstExprGenerator::addRefFunc):
(JSC::Wasm::parseExtendedConstExpr):
* Source/JavaScriptCore/wasm/WasmConstExprGenerator.h:
* Source/JavaScriptCore/wasm/WasmExceptionType.h:
(JSC::Wasm::isTypeErrorExceptionType):
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addArrayFill):
(JSC::Wasm::IPIntGenerator::addArrayCopy):
(JSC::Wasm::IPIntGenerator::addArrayInitElem):
(JSC::Wasm::IPIntGenerator::addArrayInitData):
* Source/JavaScriptCore/wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::copyDataSegment):
(JSC::Wasm::Instance::copyElementSegment):
* Source/JavaScriptCore/wasm/WasmInstance.h:
* Source/JavaScriptCore/wasm/WasmLLIntBuiltin.h:
* Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::addArrayFill):
(JSC::Wasm::LLIntGenerator::addArrayCopy):
(JSC::Wasm::LLIntGenerator::addArrayInitElem):
(JSC::Wasm::LLIntGenerator::addArrayInitData):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmOperations.h:
* Source/JavaScriptCore/wasm/WasmOperationsInlines.h:
(JSC::Wasm::fillArray):
(JSC::Wasm::createArrayFromDataSegment):
(JSC::Wasm::createArrayFromElementSegment):
(JSC::Wasm::arrayNewElem):
(JSC::Wasm::arrayFill):
(JSC::Wasm::arrayCopy):
(JSC::Wasm::arrayInitElem):
(JSC::Wasm::arrayInitData):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* Source/JavaScriptCore/wasm/WasmSlowPaths.h:
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::TypeInformation::signatureForLLIntBuiltin):
(JSC::Wasm::TypeInformation::TypeInformation):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:
* Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.cpp:
(JSC::JSWebAssemblyArray::fill):
(JSC::JSWebAssemblyArray::copy):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyArray.h:
* Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::initializeImports):
* Source/JavaScriptCore/wasm/wasm.json:
Canonical link: https://commits.webkit.org/272677@main
More information about the webkit-changes
mailing list