• 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...
test-backing-store.cc Loading commit data...
test-c-wasm-entry.cc Loading commit data...
test-compilation-cache.cc Loading commit data...
test-gc.cc Loading commit data...
test-grow-memory.cc Loading commit data...
test-jump-table-assembler.cc Loading commit data...
test-liftoff-for-fuzzing.cc Loading commit data...
test-liftoff-inspection.cc Loading commit data...
test-run-wasm-64.cc Loading commit data...
test-run-wasm-asmjs.cc Loading commit data...
test-run-wasm-atomics.cc Loading commit data...
test-run-wasm-atomics64.cc Loading commit data...
test-run-wasm-bulk-memory.cc Loading commit data...
test-run-wasm-exceptions.cc Loading commit data...
test-run-wasm-interpreter.cc Loading commit data...
test-run-wasm-js.cc Loading commit data...
test-run-wasm-memory64.cc Loading commit data...
test-run-wasm-module.cc Loading commit data...
test-run-wasm-relaxed-simd.cc Loading commit data...
test-run-wasm-sign-extension.cc Loading commit data...
test-run-wasm-simd-liftoff.cc Loading commit data...
test-run-wasm-simd.cc Loading commit data...
test-run-wasm-wrappers.cc Loading commit data...
test-run-wasm.cc Loading commit data...
test-streaming-compilation.cc Loading commit data...
test-wasm-breakpoints.cc Loading commit data...
test-wasm-codegen.cc Loading commit data...
test-wasm-import-wrapper-cache.cc Loading commit data...
test-wasm-metrics.cc Loading commit data...
test-wasm-serialization.cc Loading commit data...
test-wasm-shared-engine.cc Loading commit data...
test-wasm-stack.cc Loading commit data...
test-wasm-trap-position.cc Loading commit data...
wasm-atomics-utils.h Loading commit data...
wasm-run-utils.cc Loading commit data...
wasm-run-utils.h Loading commit data...
wasm-simd-utils.cc Loading commit data...
wasm-simd-utils.h Loading commit data...