Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2b9318e65c51add3e3d798360a05960524b9fa92
      
https://github.com/WebKit/WebKit/commit/2b9318e65c51add3e3d798360a05960524b9fa92
  Author: Asumu Takikawa <as...@igalia.com>
  Date:   2023-10-18 (Wed, 18 Oct 2023)

  Changed paths:
    M JSTests/wasm/gc-spec-harness.js
    M JSTests/wasm/gc-spec-harness/async_index.js
    M JSTests/wasm/gc-spec-harness/sync_index.js
    A JSTests/wasm/gc-spec-harness/wasm-constants.js
    A JSTests/wasm/gc-spec-tests/array.wast.js
    A JSTests/wasm/gc-spec-tests/i31.wast.js
    A JSTests/wasm/gc/const-exprs-flag-off.js
    A JSTests/wasm/gc/const-exprs.js
    M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmConstExprGenerator.h
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmSectionParser.cpp
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  [Wasm-GC] Add support for new constant expressions
https://bugs.webkit.org/show_bug.cgi?id=254696

Reviewed by Justin Michaud.

Enables new constant expressions used in the GC proposal: array.new (normal,
default, and fixed), struct.new (normal, default),
extern.internalize/externalize, and i31.new. Both GC and extended constant expr
flags need to be turned on to use these.

The representation of ExpressionType used in the constant expression generator
is changed to potentially hold a Strong<JSObject> reference in order to keep
allocated objects live.

This enables most GC array spec tests to run, so this patch also adds
those tests to the suite. The remaining test failure is blocked on
parsing element vector items.

Running these spec tests also required updating part of the GC spec test
harness to match the upstream JS test helpers.

This patch also fixes a minor bug in parsing `array.new_data` that's exposed by
these tests.

* JSTests/wasm/gc-spec-harness.js:
* JSTests/wasm/gc-spec-harness/async_index.js:
(hostref):
(eq_ref):
(reinitializeRegistry.get promise_test):
(reinitializeRegistry):
(externref): Deleted.
(is_externref): Deleted.
(is_funcref): Deleted.
(eq_externref): Deleted.
(eq_funcref): Deleted.
* JSTests/wasm/gc-spec-harness/sync_index.js:
(hostref):
(eq_ref):
(externref): Deleted.
(is_externref): Deleted.
(is_funcref): Deleted.
(eq_externref): Deleted.
(eq_funcref): Deleted.
* JSTests/wasm/gc-spec-harness/wasm-constants.js: Added.
(bytes):
(bytesWithHeader):
(makeSig):
(makeSig_v_x):
(makeSig_v_xx):
(makeSig_r_v):
(makeSig_r_x):
(makeSig_r_xx):
(assertTraps):
(assertWasmThrows):
* JSTests/wasm/gc-spec-tests/array.wast.js: Added.
* JSTests/wasm/gc-spec-tests/i31.wast.js: Added.
* JSTests/wasm/gc/const-exprs-flag-off.js: Added.
(async testInvalidGCConstExprs):
* JSTests/wasm/gc/const-exprs.js: Added.
(async testGCConstExprs):
(async testInvalidConstExprs):
* Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp:
(JSC::Wasm::ConstExprGenerator::ConstExprValue::ConstExprValue):
(JSC::Wasm::ConstExprGenerator::ConstExprValue::getValue):
(JSC::Wasm::ConstExprGenerator::ConstExprValue::type):
(JSC::Wasm::ConstExprGenerator::ConstExprValue::operator+):
(JSC::Wasm::ConstExprGenerator::ConstExprValue::operator-):
(JSC::Wasm::ConstExprGenerator::ConstExprValue::operator*):
(JSC::Wasm::ConstExprGenerator::result const):
(JSC::Wasm::ConstExprGenerator::addConstant):
(JSC::Wasm::ConstExprGenerator::getGlobal):
(JSC::Wasm::ConstExprGenerator::addRefI31):
(JSC::Wasm::ConstExprGenerator::createNewArray):
(JSC::Wasm::ConstExprGenerator::addArrayNew):
(JSC::Wasm::ConstExprGenerator::addArrayNewDefault):
(JSC::Wasm::ConstExprGenerator::addArrayNewFixed):
(JSC::Wasm::ConstExprGenerator::createNewStruct):
(JSC::Wasm::ConstExprGenerator::addStructNewDefault):
(JSC::Wasm::ConstExprGenerator::addStructNew):
(JSC::Wasm::ConstExprGenerator::addAnyConvertExtern):
(JSC::Wasm::ConstExprGenerator::addExternConvertAny):
(JSC::Wasm::ConstExprGenerator::addRefFunc):
(JSC::Wasm::evaluateExtendedConstExpr):
* Source/JavaScriptCore/wasm/WasmConstExprGenerator.h:
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):
* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:
(JSC::Wasm::SectionParser::parseInitExpr):
* Tools/Scripts/run-jsc-stress-tests:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to