v8/test
Manos Koukoutos 52f6529634 [wasm-gc] Change ValueType representation to account for new types
Motivation:
Changes to the typed function references and gc proposals solidified
the notion of heap type, clarified nullable vs. non-nullable reference
types, and introduced rtts, which contain an integer depth field in
addition to a heap type. This required us to overhaul our ValueType
representation, which results in extensive changes.

To keep this CL "small", we do not try to implement the binary encoding
as described in the proposals, but rather devise a simpler one of our
own (see below). Also, we do not try to implement additional
functionality for the new types.

Changes:
- Introduce HeapType. Move heap types from ValueType to HeapType.
- Introduce Nullability for reference types.
- Rework ValueType helper methods.
- Introduce rtts in ValueType with an integer depth field. Include depth
  in the ValueType encoding.
- Make the constructor of ValueType private, instead expose static
  functions which explicitly state what they create.
- Change every switch statement on ValueType::Kind. Sometimes, we need
  nested switches.
- Introduce temporary constants in ValueTypeCode for nullable types,
  use them for decoding.
- In WasmGlobalObject, split 'flags' into 'raw_type' and 'is_mutable'.
- Change IsSubtypeOfRef to IsSubtypeOfHeap and implement changes in
  subtyping.
- kWasmFuncRef initializers are now non-nullable. Initializers are
  only required to be subtypes of the declared global type.
- Change tests and fuzzers as needed.

Bug: v8:7748
Change-Id: If41f783bd4128443b07e94188cea7dd53ab0bfa5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2247657
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68408}
2020-06-18 12:04:08 +00:00
..
benchmarks [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
cctest [wasm-gc] Change ValueType representation to account for new types 2020-06-18 12:04:08 +00:00
common [wasm-gc] Change ValueType representation to account for new types 2020-06-18 12:04:08 +00:00
debugger [nci] Implement missing generic lowering bits 2020-06-17 07:04:05 +00:00
debugging [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
fuzzer [wasm-gc] Change ValueType representation to account for new types 2020-06-18 12:04:08 +00:00
fuzzilli Integrate fuzzilli into v8 2020-06-03 09:53:24 +00:00
inspector Fix external_debug_info section name 2020-06-17 13:51:28 +00:00
intl Sync DateTimeFormat with latest changes 2020-06-12 19:44:42 +00:00
js-perf-test [js-perf-test] Benchmark for sloppy equality 2020-05-04 08:29:00 +00:00
memory
message [wasm] Fix register uses in wasm tracing 2020-06-15 11:13:18 +00:00
mjsunit [fuzzing] Use --fuzzing flag for allowed runtime functions 2020-06-18 08:09:48 +00:00
mkgrokdump Reland "[heap] Make ReadOnlySpace use bump pointer allocation" 2020-06-18 11:48:38 +00:00
mozilla [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
test262 Roll test262 2020-06-18 09:39:51 +00:00
torque [torque] Generate better code when using & operator on bitfields 2020-05-22 21:59:06 +00:00
unittests [wasm-gc] Change ValueType representation to account for new types 2020-06-18 12:04:08 +00:00
wasm-api-tests [wasm-api-tests] initialize the loop variable 2020-06-10 15:39:58 +00:00
wasm-js [wasm] Update wasm spec tests 2020-06-16 22:00:04 +00:00
wasm-spec-tests [wasm] Update wasm spec tests 2020-06-16 22:00:04 +00:00
webkit [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
BUILD.gn Integrate fuzzilli into v8 2020-06-03 09:53:24 +00:00
OWNERS