summaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc')
-rw-r--r--deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc107
1 files changed, 107 insertions, 0 deletions
diff --git a/deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc b/deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc
new file mode 100644
index 0000000000..1189fffa14
--- /dev/null
+++ b/deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc
@@ -0,0 +1,107 @@
+;; expected = R"---(;; This is a polyglot C++/WAT file.
+;; Comment lines are ignored and not expected in the disassembler output.
+(module
+ ;; Structs.
+ (type $type0 (struct))
+ (type $type1 (struct (field $field0 i32)))
+ (type $type2 (struct (field $field0 (mut i32)) (field $field1 (mut i64))))
+ (type $type3 (struct (field $field0 i8) (field $field1 (mut i16))))
+ ;; Arrays.
+ (type $type4 (array (field i64)))
+ (type $type5 (array (field (mut i64))))
+ (type $type6 (array (field i8)))
+ ;; References to other types, mutual recursion.
+ (type $type7 (struct (field $field0 (ref $type0))))
+ ;; TODO: rec-groups are supported in the binary format, but they are not
+ ;; printed yet. Once that is implemented in the disassembler, uncomment:
+ ;; (rec
+ (type $type8 (struct (field $field0 (ref $type9))))
+ (type $type9 (struct (field $field0 (ref $type8))))
+ ;; )
+ ;; Subtyping constraints.
+ ;; TODO: Change to `sub` keyword, once that is standardized.
+ (type $type10 (struct_subtype (field $field0 i32) $type0))
+ ;; Globals using reference types.
+ (global $env.imported_global (;0;) (import "env" "imported_global") (ref $type7))
+ (global $env.another_global (;1;) (import "env" "another_global") (ref $type8))
+ (global $global2 anyref (ref.null none))
+ (global $global3 (mut eqref) (ref.null none))
+ ;; Function with GC instructions and taking GC types as parameters.
+ (func $func0 (param $var0 (ref $type1)) (param $var1 eqref)
+ ;; Structs.
+ struct.new_default $type1
+ struct.get $type1 $field0
+ drop
+ struct.new_default $type2
+ i32.const 0
+ struct.set $type2 $field0
+ struct.new_default $type3
+ struct.get_s $type3 $field0
+ drop
+ struct.new_default $type3
+ struct.get_u $type3 $field1
+ drop
+ ;; Arrays.
+ array.new_fixed $type4 0
+ drop
+ i32.const 0
+ array.new_default $type4
+ array.len
+ drop
+ i64.const 0
+ i32.const 0
+ array.new $type4
+ i32.const 0
+ array.get $type4
+ drop
+ i32.const 0
+ array.new_default $type5
+ i32.const 0
+ i64.const 0
+ array.set $type5
+ i32.const 0
+ array.new_default $type6
+ i32.const 0
+ array.get_s $type6
+ drop
+ i32.const 0
+ array.new_default $type6
+ i32.const 0
+ array.get_u $type6
+ drop
+ ;; References.
+ local.get $var1
+ local.get $var1
+ ref.eq
+ drop
+ local.get $var1
+ ref.test $type0
+ drop
+ local.get $var0
+ ref.cast $type0
+ drop
+ local.get $var0
+ ref.test null $type0
+ drop
+ local.get $var0
+ ref.cast null $type0
+ drop
+ ;; Branches.
+ block $label0 (result (ref $type1))
+ local.get $var0
+ br_on_non_null $label0
+ local.get $var0
+ br_on_cast $label0 $type1
+ drop
+ local.get $var0
+ br_on_cast_fail $label0 $type1
+ drop
+ ;; TODO: Once `br_on_cast null` is implemented, uncomment:
+ ;; local.get $var0
+ ;; br_on_cast $label0 null $type1
+ local.get $var0
+ end $label0
+ drop
+ )
+)
+;;)---";