summaryrefslogtreecommitdiff
path: root/test/reference-types.wast.fromBinary
diff options
context:
space:
mode:
Diffstat (limited to 'test/reference-types.wast.fromBinary')
-rw-r--r--test/reference-types.wast.fromBinary492
1 files changed, 492 insertions, 0 deletions
diff --git a/test/reference-types.wast.fromBinary b/test/reference-types.wast.fromBinary
new file mode 100644
index 000000000..b1229db8b
--- /dev/null
+++ b/test/reference-types.wast.fromBinary
@@ -0,0 +1,492 @@
+(module
+ (type $anyref_=>_none (func (param anyref)))
+ (type $none_=>_anyref (func (result anyref)))
+ (type $funcref_=>_none (func (param funcref)))
+ (type $nullref_=>_none (func (param nullref)))
+ (type $exnref_=>_none (func (param exnref)))
+ (type $none_=>_funcref (func (result funcref)))
+ (type $none_=>_exnref (func (result exnref)))
+ (type $none_=>_none (func))
+ (type $none_=>_nullref (func (result nullref)))
+ (type $anyref_=>_funcref (func (param anyref) (result funcref)))
+ (import "env" "import_global" (global $gimport$1 anyref))
+ (import "env" "import_func" (func $import_func (param anyref) (result funcref)))
+ (table $0 4 4 funcref)
+ (elem (i32.const 0) $take_anyref $take_funcref $take_exnref $take_nullref)
+ (global $global$0 (mut anyref) (ref.null))
+ (global $global$1 (mut funcref) (ref.null))
+ (global $global$2 (mut exnref) (ref.null))
+ (global $global$3 (mut nullref) (ref.null))
+ (global $global$4 (mut anyref) (ref.func $foo))
+ (global $global$5 (mut funcref) (ref.func $foo))
+ (export "export_func" (func $import_func))
+ (export "export_global" (global $gimport$1))
+ (func $take_anyref (; 1 ;) (param $0 anyref)
+ (nop)
+ )
+ (func $take_funcref (; 2 ;) (param $0 funcref)
+ (nop)
+ )
+ (func $take_exnref (; 3 ;) (param $0 exnref)
+ (nop)
+ )
+ (func $take_nullref (; 4 ;) (param $0 nullref)
+ (nop)
+ )
+ (func $foo (; 5 ;)
+ (nop)
+ )
+ (func $test (; 6 ;)
+ (local $0 funcref)
+ (local $1 anyref)
+ (local $2 nullref)
+ (local $3 exnref)
+ (local.set $1
+ (local.get $1)
+ )
+ (local.set $1
+ (local.get $0)
+ )
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $1
+ (ref.null)
+ )
+ (local.set $1
+ (ref.func $foo)
+ )
+ (local.set $0
+ (local.get $0)
+ )
+ (local.set $0
+ (ref.null)
+ )
+ (local.set $0
+ (ref.func $foo)
+ )
+ (local.set $3
+ (local.get $3)
+ )
+ (local.set $3
+ (ref.null)
+ )
+ (local.set $2
+ (local.get $2)
+ )
+ (local.set $2
+ (ref.null)
+ )
+ (global.set $global$0
+ (global.get $global$0)
+ )
+ (global.set $global$0
+ (global.get $global$1)
+ )
+ (global.set $global$0
+ (global.get $global$2)
+ )
+ (global.set $global$0
+ (global.get $global$3)
+ )
+ (global.set $global$0
+ (ref.null)
+ )
+ (global.set $global$0
+ (ref.func $foo)
+ )
+ (global.set $global$1
+ (global.get $global$1)
+ )
+ (global.set $global$1
+ (ref.null)
+ )
+ (global.set $global$1
+ (ref.func $foo)
+ )
+ (global.set $global$2
+ (global.get $global$2)
+ )
+ (global.set $global$2
+ (ref.null)
+ )
+ (global.set $global$3
+ (global.get $global$3)
+ )
+ (global.set $global$3
+ (ref.null)
+ )
+ (call $take_anyref
+ (local.get $1)
+ )
+ (call $take_anyref
+ (local.get $0)
+ )
+ (call $take_anyref
+ (local.get $3)
+ )
+ (call $take_anyref
+ (ref.null)
+ )
+ (call_indirect (type $anyref_=>_none)
+ (local.get $1)
+ (i32.const 0)
+ )
+ (call_indirect (type $anyref_=>_none)
+ (local.get $0)
+ (i32.const 0)
+ )
+ (call_indirect (type $anyref_=>_none)
+ (local.get $3)
+ (i32.const 0)
+ )
+ (call_indirect (type $anyref_=>_none)
+ (ref.null)
+ (i32.const 0)
+ )
+ (call_indirect (type $funcref_=>_none)
+ (local.get $0)
+ (i32.const 1)
+ )
+ (call_indirect (type $funcref_=>_none)
+ (ref.null)
+ (i32.const 1)
+ )
+ (call_indirect (type $exnref_=>_none)
+ (local.get $3)
+ (i32.const 2)
+ )
+ (call_indirect (type $exnref_=>_none)
+ (ref.null)
+ (i32.const 2)
+ )
+ (call_indirect (type $nullref_=>_none)
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call_indirect (type $nullref_=>_none)
+ (ref.null)
+ (i32.const 3)
+ )
+ (drop
+ (block $label$1 (result anyref)
+ (br_if $label$1
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$2 (result anyref)
+ (br_if $label$2
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$3 (result anyref)
+ (br_if $label$3
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$4 (result anyref)
+ (br_if $label$4
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$5 (result funcref)
+ (br_if $label$5
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$6 (result exnref)
+ (br_if $label$6
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $label$7 (result nullref)
+ (br_if $label$7
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (loop $label$8 (result anyref)
+ (local.get $1)
+ )
+ )
+ (drop
+ (loop $label$9 (result anyref)
+ (local.get $0)
+ )
+ )
+ (drop
+ (loop $label$10 (result anyref)
+ (local.get $3)
+ )
+ )
+ (drop
+ (loop $label$11 (result anyref)
+ (ref.null)
+ )
+ )
+ (drop
+ (loop $label$12 (result funcref)
+ (local.get $0)
+ )
+ )
+ (drop
+ (loop $label$13 (result funcref)
+ (ref.null)
+ )
+ )
+ (drop
+ (loop $label$14 (result exnref)
+ (local.get $3)
+ )
+ )
+ (drop
+ (loop $label$15 (result exnref)
+ (ref.null)
+ )
+ )
+ (drop
+ (loop $label$16 (result nullref)
+ (ref.null)
+ )
+ )
+ (drop
+ (if (result anyref)
+ (i32.const 1)
+ (local.get $1)
+ (local.get $3)
+ )
+ )
+ (drop
+ (if (result anyref)
+ (i32.const 1)
+ (ref.func $foo)
+ (ref.null)
+ )
+ )
+ (drop
+ (if (result funcref)
+ (i32.const 1)
+ (ref.func $foo)
+ (ref.null)
+ )
+ )
+ (drop
+ (if (result exnref)
+ (i32.const 1)
+ (local.get $3)
+ (ref.null)
+ )
+ )
+ (drop
+ (if (result nullref)
+ (i32.const 1)
+ (local.get $2)
+ (ref.null)
+ )
+ )
+ (drop
+ (try (result anyref)
+ (local.get $1)
+ (catch
+ (exnref.pop)
+ )
+ )
+ )
+ (drop
+ (try (result anyref)
+ (ref.func $foo)
+ (catch
+ (drop
+ (exnref.pop)
+ )
+ (ref.null)
+ )
+ )
+ )
+ (drop
+ (try (result funcref)
+ (ref.func $foo)
+ (catch
+ (drop
+ (exnref.pop)
+ )
+ (ref.null)
+ )
+ )
+ )
+ (drop
+ (try (result exnref)
+ (ref.null)
+ (catch
+ (exnref.pop)
+ )
+ )
+ )
+ (drop
+ (try (result nullref)
+ (ref.null)
+ (catch
+ (drop
+ (exnref.pop)
+ )
+ (ref.null)
+ )
+ )
+ )
+ (drop
+ (select (result anyref)
+ (local.get $1)
+ (ref.func $foo)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result anyref)
+ (local.get $3)
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result anyref)
+ (local.get $1)
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result anyref)
+ (ref.null)
+ (ref.func $foo)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result funcref)
+ (ref.func $foo)
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result exnref)
+ (ref.null)
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select (result nullref)
+ (ref.null)
+ (ref.null)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 2)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (ref.is_null
+ (local.get $1)
+ )
+ )
+ (drop
+ (ref.is_null
+ (local.get $3)
+ )
+ )
+ (drop
+ (ref.is_null
+ (ref.func $foo)
+ )
+ )
+ (drop
+ (ref.is_null
+ (ref.null)
+ )
+ )
+ )
+ (func $return_anyref (; 7 ;) (result anyref)
+ (local $0 anyref)
+ (local.get $0)
+ )
+ (func $return_anyref2 (; 8 ;) (result anyref)
+ (ref.func $foo)
+ )
+ (func $return_anyref3 (; 9 ;) (result anyref)
+ (local $0 exnref)
+ (local.get $0)
+ )
+ (func $return_anyref4 (; 10 ;) (result anyref)
+ (ref.null)
+ )
+ (func $return_funcref (; 11 ;) (result funcref)
+ (ref.func $foo)
+ )
+ (func $return_funcref2 (; 12 ;) (result funcref)
+ (ref.null)
+ )
+ (func $return_exnref (; 13 ;) (result exnref)
+ (local $0 exnref)
+ (local.get $0)
+ )
+ (func $return_exnref2 (; 14 ;) (result exnref)
+ (ref.null)
+ )
+ (func $return_nullref (; 15 ;) (result nullref)
+ (local $0 nullref)
+ (local.get $0)
+ )
+ (func $return_anyref_returns (; 16 ;) (result anyref)
+ (local $0 anyref)
+ (local $1 exnref)
+ (return
+ (local.get $0)
+ )
+ )
+ (func $return_funcref_returns (; 17 ;) (result funcref)
+ (return
+ (ref.func $foo)
+ )
+ )
+ (func $return_exnref_returns (; 18 ;) (result exnref)
+ (local $0 exnref)
+ (return
+ (local.get $0)
+ )
+ )
+ (func $return_nullref_returns (; 19 ;) (result nullref)
+ (local $0 nullref)
+ (return
+ (local.get $0)
+ )
+ )
+)
+