Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7e71e7282468d89fdab477163369d6df25e9101b https://github.com/WebKit/WebKit/commit/7e71e7282468d89fdab477163369d6df25e9101b Author: Asumu Takikawa <as...@igalia.com> Date: 2023-12-12 (Tue, 12 Dec 2023)
Changed paths: A JSTests/wasm/function-references-spec-tests/br_table.wast.js A JSTests/wasm/function-references-spec-tests/ref.wast.js A JSTests/wasm/function-references-spec-tests/ref_is_null.wast.js A JSTests/wasm/function-references-spec-tests/table-sub.wast.js A JSTests/wasm/function-references-spec-tests/unreached-valid.wast.js M JSTests/wasm/gc-spec-tests/array.wast.js A JSTests/wasm/gc-spec-tests/binary-gc.wast.js A JSTests/wasm/gc-spec-tests/ref_eq.wast.js A JSTests/wasm/gc-spec-tests/ref_test.wast.js M JSTests/wasm/gc/array_new_elem.js M JSTests/wasm/gc/const-exprs.js M JSTests/wasm/gc/wast-wrapper.js M JSTests/wasm/references/element_active_mod.js M JSTests/wasm/v8/regress/regress-1046472.js M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp M Source/JavaScriptCore/wasm/WasmConstExprGenerator.h M Source/JavaScriptCore/wasm/WasmEntryPlan.cpp M Source/JavaScriptCore/wasm/WasmFormat.h M Source/JavaScriptCore/wasm/WasmFunctionParser.h M Source/JavaScriptCore/wasm/WasmInstance.cpp M Source/JavaScriptCore/wasm/WasmInstance.h M Source/JavaScriptCore/wasm/WasmSectionParser.cpp M Source/JavaScriptCore/wasm/WasmSectionParser.h M Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp Log Message: ----------- [Wasm-GC] Update element segments to account for typed funcrefs and GC types https://bugs.webkit.org/show_bug.cgi?id=251874 Reviewed by Justin Michaud. Fix element segment parsing to allow more kinds of ref types (this is actually a requirement of the reference types proposal, predating both typed funcref and GC). Also add support for general const expr initialization for elements. For now, initialization steps for element segments are done each time on table init or array.new_elem. This could be done earlier in module init instead (to avoid duplciated work for shared elements), but that requires a larger change to create a runtime representation of elements that can strongly hold references. Add missing spec tests and re-enable tests that now succeed as well. A small validation fix was needed for the br_table test. * JSTests/wasm/function-references-spec-tests/br_table.wast.js: Added. * JSTests/wasm/function-references-spec-tests/ref.wast.js: Added. * JSTests/wasm/function-references-spec-tests/ref_is_null.wast.js: Added. * JSTests/wasm/function-references-spec-tests/table-sub.wast.js: Added. * JSTests/wasm/function-references-spec-tests/unreached-valid.wast.js: Added. * JSTests/wasm/gc-spec-tests/array.wast.js: * JSTests/wasm/gc-spec-tests/binary-gc.wast.js: Added. * JSTests/wasm/gc-spec-tests/ref_eq.wast.js: Added. * JSTests/wasm/gc-spec-tests/ref_test.wast.js: Added. * JSTests/wasm/gc/array_new_elem.js: (testTypeMismatch): (testAllElementSegmentKinds): (testNullFunctionIndex): * JSTests/wasm/gc/const-exprs.js: (async testElementConstExprs): * JSTests/wasm/gc/wast-wrapper.js: * JSTests/wasm/references/element_active_mod.js: (refNullExternInElemsSection): * JSTests/wasm/v8/regress/regress-1046472.js: * Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp: (JSC::Wasm::evaluateExtendedConstExpr): * Source/JavaScriptCore/wasm/WasmConstExprGenerator.h: * Source/JavaScriptCore/wasm/WasmEntryPlan.cpp: (JSC::Wasm::EntryPlan::prepare): * Source/JavaScriptCore/wasm/WasmFormat.h: (JSC::Wasm::Element::Element): (JSC::Wasm::Element::length const): (JSC::Wasm::Element::isNullFuncIndex): Deleted. * Source/JavaScriptCore/wasm/WasmFunctionParser.h: (JSC::Wasm::FunctionParser<Context>::addReferencedFunctions): (JSC::Wasm::FunctionParser<Context>::parseExpression): * Source/JavaScriptCore/wasm/WasmInstance.cpp: (JSC::Wasm::Instance::initElementSegment): (JSC::Wasm::Instance::copyElementSegment): (JSC::Wasm::Instance::evaluateConstantExpression): * Source/JavaScriptCore/wasm/WasmInstance.h: * Source/JavaScriptCore/wasm/WasmSectionParser.cpp: (JSC::Wasm::SectionParser::parseTableHelper): (JSC::Wasm::SectionParser::parseElement): (JSC::Wasm::SectionParser::validateElementTableIdx): (JSC::Wasm::SectionParser::parseElementSegmentVectorOfExpressions): (JSC::Wasm::SectionParser::parseElementSegmentVectorOfIndexes): * Source/JavaScriptCore/wasm/WasmSectionParser.h: * Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp: (JSC::WebAssemblyModuleRecord::evaluateConstantExpression): (JSC::WebAssemblyModuleRecord::evaluate): Canonical link: https://commits.webkit.org/271952@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes