[webkit-changes] [WebKit/WebKit] 3e28bd: [WASM-Function-References] Fix block signature par...

Asumu Takikawa noreply at github.com
Thu Jan 26 06:31:12 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3e28bdb07aa262a34c5c9becfee6f9d36d0a1cf9
      https://github.com/WebKit/WebKit/commit/3e28bdb07aa262a34c5c9becfee6f9d36d0a1cf9
  Author: Asumu Takikawa <asumu at igalia.com>
  Date:   2023-01-26 (Thu, 26 Jan 2023)

  Changed paths:
    A JSTests/wasm/function-references/block_signature.js
    M JSTests/wasm/gc-spec-tests/type-equivalence.wast.js
    M Source/JavaScriptCore/wasm/WasmFormat.h
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmParser.h

  Log Message:
  -----------
  [WASM-Function-References] Fix block signature parsing for reftypes
https://bugs.webkit.org/show_bug.cgi?id=247383

Reviewed by Justin Michaud.

With the typed function reference proposal, block signatures can also
have indexed reference types (and non-externref/funcref signatures in
general). This patch adds support for parsing these cases.

While for reftypes with non-index heap types it is possible to
pre-populate the block signatures in TypeInformation, for indexed types
the block signatures have to be created after the type section is read.

This patch also makes BlockSignature a RefPtr type so that the type
signature is kept live while the block signatures are in use in the
validator (even if the signature is not in the ModuleInformation's type
signature list).

* JSTests/wasm/function-references/block_signature.js: Added.
(module):
(async blockSignatureTest):
* JSTests/wasm/gc-spec-tests/type-equivalence.wast.js:
* Source/JavaScriptCore/wasm/WasmFormat.h:
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::unify):
* Source/JavaScriptCore/wasm/WasmParser.h:
(JSC::Wasm::Parser<SuccessType>::parseBlockSignature):

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




More information about the webkit-changes mailing list