Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ea71f9290dfa4441fc1f5908e5bc41f189acfc35 https://github.com/WebKit/WebKit/commit/ea71f9290dfa4441fc1f5908e5bc41f189acfc35 Author: Asumu Takikawa <as...@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 _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes