• 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
..
DIR_METADATA Loading commit data...
OWNERS Loading commit data...
control-transfer-unittest.cc Loading commit data...
decoder-unittest.cc Loading commit data...
function-body-decoder-unittest.cc Loading commit data...
leb-helper-unittest.cc Loading commit data...
liftoff-register-unittests.cc Loading commit data...
loop-assignment-analysis-unittest.cc Loading commit data...
memory-protection-unittest.cc Loading commit data...
module-decoder-memory64-unittest.cc Loading commit data...
module-decoder-unittest.cc Loading commit data...
simd-shuffle-unittest.cc Loading commit data...
streaming-decoder-unittest.cc Loading commit data...
subtyping-unittest.cc Loading commit data...
trap-handler-posix-unittest.cc Loading commit data...
trap-handler-simulator-unittest.cc Loading commit data...
trap-handler-win-unittest.cc Loading commit data...
trap-handler-x64-unittest.cc Loading commit data...
wasm-code-manager-unittest.cc Loading commit data...
wasm-compiler-unittest.cc Loading commit data...
wasm-gdbserver-unittest.cc Loading commit data...
wasm-macro-gen-unittest.cc Loading commit data...
wasm-module-builder-unittest.cc Loading commit data...
wasm-module-sourcemap-unittest.cc Loading commit data...