• Manos Koukoutos's avatar
    [wasm-gc] Implement iso-recursive types · fe531e1f
    Manos Koukoutos authored
    This CL replaces the equirecursive type system for wasm-gc with the
    isorecursive hybrid type system presented here:
    https://github.com/WebAssembly/gc/issues/257.
    
    In broad strokes, this includes the following changes:
    - In the module decoder, remove equirecursive types. Implement recursive
      type groups, subtype definitions, and function/struct/array
      definitions. Treat nominal modules as syntactic sugar of an
      isorecursive module, where all types belong in the same recursive
      group.
    - Remove rtt.sub and all related infrastructure.
    - Change subtyping to work with explicit supertypes only.
    - Add ValidSubtypeDefinition in subtyping, to check that subtype
      declarations are valid during decoding.
    - Remove the subtyping cache.
    - Add support for functions to have specific signature index in
      WasmModuleBuilder and in test-gc.cc.
    - Adapt tests.
    
    Current restrictions:
    - Recursive groups are not stored beyond decoding.
    - Type canonicalization is not implemented. No tests relying on types
      being considered identical post-canonicalization.
    - No cross-module subtyping is possible. Tests relying on cross-module
      subtyping have been commented out.
    
    Bug: v8:7748
    Change-Id: I69fd04ecc5611f6230c95d5c89d1c520163fffae
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3416239Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78816}
    fe531e1f
Name
Last commit
Last update
..
inspector Loading commit data...
json Loading commit data...
multi_return Loading commit data...
parser Loading commit data...
regexp Loading commit data...
regexp_builtins Loading commit data...
wasm Loading commit data...
wasm_async Loading commit data...
wasm_code Loading commit data...
wasm_compile Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
README.md Loading commit data...
fuzzer-support.cc Loading commit data...
fuzzer-support.h Loading commit data...
fuzzer.cc Loading commit data...
fuzzer.status Loading commit data...
inspector-fuzzer.cc Loading commit data...
json.cc Loading commit data...
multi-return.cc Loading commit data...
parser.cc Loading commit data...
regexp-builtins.cc Loading commit data...
regexp.cc Loading commit data...
testcfg.py Loading commit data...
wasm-async.cc Loading commit data...
wasm-code.cc Loading commit data...
wasm-compile.cc Loading commit data...
wasm-fuzzer-common.cc Loading commit data...
wasm-fuzzer-common.h Loading commit data...
wasm.cc Loading commit data...
wasm_corpus.tar.gz.sha1 Loading commit data...