blob: d6f0ca7d0598d54401dccb28167f4d7a82d6546d [file] [log] [blame]
(module
(type $none_=>_anyref (func (result anyref)))
(type $sig_anyref (func (param anyref)))
(type $sig_funcref (func (param funcref)))
(type $none_=>_funcref (func (result funcref)))
(type $sig_externref (func (param externref)))
(type $none_=>_none (func))
(type $none_=>_externref (func (result externref)))
(type $i32_=>_none (func (param i32)))
(type $externref_=>_funcref (func (param externref) (result funcref)))
(import "env" "import_global" (global $import_global externref))
(import "env" "import_func" (func $import_func (param externref) (result funcref)))
(global $global_externref (mut externref) (ref.null extern))
(global $global_funcref (mut funcref) (ref.null func))
(global $global_funcref_func (mut funcref) (ref.func $foo))
(global $global_anyref (mut anyref) (ref.null any))
(global $global_anyref2 (mut anyref) (ref.null extern))
(global $global_anyref3 (mut anyref) (ref.null func))
(global $global_anyref4 (mut anyref) (ref.func $foo))
(table $0 3 3 funcref)
(elem (i32.const 0) $take_externref $take_funcref $take_anyref)
(elem declare func $foo $ref-taken-but-not-in-table)
(tag $e-i32 (param i32))
(export "export_func" (func $import_func))
(export "export_global" (global $import_global))
(func $take_externref (param $0 externref)
(nop)
)
(func $take_funcref (param $0 funcref)
(nop)
)
(func $take_anyref (param $0 anyref)
(nop)
)
(func $foo
(nop)
)
(func $test
(local $local_externref externref)
(local $local_funcref funcref)
(local $local_anyref anyref)
(local.set $local_externref
(local.get $local_externref)
)
(local.set $local_externref
(global.get $global_externref)
)
(local.set $local_externref
(ref.null extern)
)
(local.set $local_funcref
(local.get $local_funcref)
)
(local.set $local_funcref
(global.get $global_funcref)
)
(local.set $local_funcref
(ref.null func)
)
(local.set $local_funcref
(ref.func $foo)
)
(local.set $local_anyref
(local.get $local_anyref)
)
(local.set $local_anyref
(global.get $global_anyref)
)
(local.set $local_anyref
(ref.null any)
)
(local.set $local_anyref
(local.get $local_externref)
)
(local.set $local_anyref
(global.get $global_externref)
)
(local.set $local_anyref
(ref.null extern)
)
(local.set $local_anyref
(local.get $local_funcref)
)
(local.set $local_anyref
(global.get $global_funcref)
)
(local.set $local_anyref
(ref.null func)
)
(local.set $local_anyref
(ref.func $foo)
)
(global.set $global_externref
(global.get $global_externref)
)
(global.set $global_externref
(local.get $local_externref)
)
(global.set $global_externref
(ref.null extern)
)
(global.set $global_funcref
(global.get $global_funcref)
)
(global.set $global_funcref
(local.get $local_funcref)
)
(global.set $global_funcref
(ref.null func)
)
(global.set $global_funcref
(ref.func $foo)
)
(global.set $global_anyref
(global.get $global_anyref)
)
(global.set $global_anyref
(local.get $local_anyref)
)
(global.set $global_anyref
(ref.null any)
)
(global.set $global_anyref
(global.get $global_externref)
)
(global.set $global_anyref
(local.get $local_externref)
)
(global.set $global_anyref
(ref.null extern)
)
(global.set $global_anyref
(global.get $global_funcref)
)
(global.set $global_anyref
(local.get $local_funcref)
)
(global.set $global_anyref
(ref.null func)
)
(global.set $global_anyref
(ref.func $foo)
)
(call $take_externref
(local.get $local_externref)
)
(call $take_externref
(global.get $global_externref)
)
(call $take_externref
(ref.null extern)
)
(call $take_funcref
(local.get $local_funcref)
)
(call $take_funcref
(global.get $global_funcref)
)
(call $take_funcref
(ref.null func)
)
(call $take_funcref
(ref.func $foo)
)
(call $take_anyref
(local.get $local_anyref)
)
(call $take_anyref
(global.get $global_anyref)
)
(call $take_anyref
(ref.null any)
)
(call $take_anyref
(local.get $local_externref)
)
(call $take_anyref
(global.get $global_externref)
)
(call $take_anyref
(ref.null extern)
)
(call $take_anyref
(local.get $local_funcref)
)
(call $take_anyref
(global.get $global_funcref)
)
(call $take_anyref
(ref.null func)
)
(call $take_anyref
(ref.func $foo)
)
(call_indirect $0 (type $sig_externref)
(local.get $local_externref)
(i32.const 0)
)
(call_indirect $0 (type $sig_externref)
(global.get $global_externref)
(i32.const 0)
)
(call_indirect $0 (type $sig_externref)
(ref.null extern)
(i32.const 0)
)
(call_indirect $0 (type $sig_funcref)
(local.get $local_funcref)
(i32.const 1)
)
(call_indirect $0 (type $sig_funcref)
(global.get $global_funcref)
(i32.const 1)
)
(call_indirect $0 (type $sig_funcref)
(ref.null func)
(i32.const 1)
)
(call_indirect $0 (type $sig_funcref)
(ref.func $foo)
(i32.const 1)
)
(call_indirect $0 (type $sig_anyref)
(local.get $local_anyref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(global.get $global_anyref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(ref.null any)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(local.get $local_externref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(global.get $global_externref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(ref.null extern)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(local.get $local_funcref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(global.get $global_funcref)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(ref.null func)
(i32.const 3)
)
(call_indirect $0 (type $sig_anyref)
(ref.func $foo)
(i32.const 3)
)
(drop
(block $block (result externref)
(br_if $block
(local.get $local_externref)
(i32.const 1)
)
)
)
(drop
(block $block0 (result externref)
(br_if $block0
(global.get $global_externref)
(i32.const 1)
)
)
)
(drop
(block $block1 (result externref)
(br_if $block1
(ref.null extern)
(i32.const 1)
)
)
)
(drop
(block $block2 (result funcref)
(br_if $block2
(local.get $local_funcref)
(i32.const 1)
)
)
)
(drop
(block $block3 (result funcref)
(br_if $block3
(global.get $global_funcref)
(i32.const 1)
)
)
)
(drop
(block $block4 (result funcref)
(br_if $block4
(ref.null func)
(i32.const 1)
)
)
)
(drop
(block $block5 (result funcref)
(br_if $block5
(ref.func $foo)
(i32.const 1)
)
)
)
(drop
(block $block6 (result anyref)
(br_if $block6
(local.get $local_anyref)
(i32.const 1)
)
)
)
(drop
(block $block7 (result anyref)
(br_if $block7
(global.get $global_anyref)
(i32.const 1)
)
)
)
(drop
(block $block8 (result anyref)
(br_if $block8
(ref.null any)
(i32.const 1)
)
)
)
(drop
(block $block9 (result anyref)
(br_if $block9
(local.get $local_externref)
(i32.const 1)
)
)
)
(drop
(block $block10 (result anyref)
(br_if $block10
(local.get $local_funcref)
(i32.const 1)
)
)
)
(drop
(block $block11 (result anyref)
(br_if $block11
(ref.null extern)
(i32.const 1)
)
)
)
(drop
(block $block12 (result anyref)
(br_if $block12
(ref.null func)
(i32.const 1)
)
)
)
(drop
(block $block13 (result anyref)
(br_if $block13
(ref.func $foo)
(i32.const 1)
)
)
)
(drop
(loop $loop-in (result externref)
(local.get $local_externref)
)
)
(drop
(loop $loop-in14 (result externref)
(global.get $global_externref)
)
)
(drop
(loop $loop-in15 (result externref)
(ref.null extern)
)
)
(drop
(loop $loop-in16 (result funcref)
(local.get $local_funcref)
)
)
(drop
(loop $loop-in17 (result funcref)
(global.get $global_funcref)
)
)
(drop
(loop $loop-in18 (result funcref)
(ref.null func)
)
)
(drop
(loop $loop-in19 (result funcref)
(ref.func $foo)
)
)
(drop
(loop $loop-in20 (result anyref)
(local.get $local_anyref)
)
)
(drop
(loop $loop-in21 (result anyref)
(global.get $global_anyref)
)
)
(drop
(loop $loop-in22 (result anyref)
(ref.null any)
)
)
(drop
(loop $loop-in23 (result anyref)
(local.get $local_externref)
)
)
(drop
(loop $loop-in24 (result anyref)
(global.get $global_externref)
)
)
(drop
(loop $loop-in25 (result anyref)
(ref.null extern)
)
)
(drop
(loop $loop-in26 (result anyref)
(local.get $local_funcref)
)
)
(drop
(loop $loop-in27 (result anyref)
(global.get $global_funcref)
)
)
(drop
(loop $loop-in28 (result anyref)
(ref.null func)
)
)
(drop
(loop $loop-in29 (result anyref)
(ref.func $foo)
)
)
(drop
(if (result externref)
(i32.const 1)
(local.get $local_externref)
(ref.null extern)
)
)
(drop
(if (result funcref)
(i32.const 1)
(local.get $local_funcref)
(ref.null func)
)
)
(drop
(if (result anyref)
(i32.const 1)
(local.get $local_anyref)
(ref.null any)
)
)
(drop
(if (result anyref)
(i32.const 1)
(local.get $local_externref)
(local.get $local_funcref)
)
)
(drop
(if (result anyref)
(i32.const 1)
(ref.null extern)
(ref.null func)
)
)
(drop
(if (result anyref)
(i32.const 1)
(ref.func $foo)
(ref.null extern)
)
)
(drop
(try $try (result externref)
(do
(local.get $local_externref)
)
(catch $e-i32
(drop
(pop i32)
)
(ref.null extern)
)
)
)
(drop
(try $try35 (result funcref)
(do
(ref.func $foo)
)
(catch $e-i32
(drop
(pop i32)
)
(ref.null func)
)
)
)
(drop
(try $try36 (result anyref)
(do
(local.get $local_externref)
)
(catch $e-i32
(drop
(pop i32)
)
(ref.func $foo)
)
)
)
(drop
(try $try37 (result anyref)
(do
(ref.func $foo)
)
(catch $e-i32
(drop
(pop i32)
)
(local.get $local_externref)
)
)
)
(drop
(select (result externref)
(local.get $local_externref)
(ref.null extern)
(i32.const 1)
)
)
(drop
(select (result funcref)
(local.get $local_funcref)
(ref.null func)
(i32.const 1)
)
)
(drop
(select
(i32.const 0)
(i32.const 2)
(i32.const 1)
)
)
(drop
(select (result anyref)
(local.get $local_externref)
(local.get $local_funcref)
(i32.const 1)
)
)
(drop
(select (result anyref)
(local.get $local_funcref)
(local.get $local_externref)
(i32.const 1)
)
)
(drop
(ref.is_null
(local.get $local_externref)
)
)
(drop
(ref.is_null
(global.get $global_externref)
)
)
(drop
(ref.is_null
(ref.null extern)
)
)
(drop
(ref.is_null
(local.get $local_funcref)
)
)
(drop
(ref.is_null
(global.get $global_funcref)
)
)
(drop
(ref.is_null
(ref.null func)
)
)
(drop
(ref.is_null
(ref.func $foo)
)
)
(drop
(ref.is_null
(local.get $local_anyref)
)
)
(drop
(ref.is_null
(global.get $global_anyref)
)
)
(drop
(ref.is_null
(ref.null any)
)
)
)
(func $return_externref_local (result externref)
(local $local_externref externref)
(local.get $local_externref)
)
(func $return_externref_global (result externref)
(global.get $global_externref)
)
(func $return_externref_null (result externref)
(ref.null extern)
)
(func $return_funcref_local (result funcref)
(local $local_funcref funcref)
(local.get $local_funcref)
)
(func $return_funcref_global (result funcref)
(global.get $global_funcref)
)
(func $return_funcref_null (result funcref)
(ref.null func)
)
(func $return_funcref_func (result funcref)
(ref.func $foo)
)
(func $return_anyref_local (result anyref)
(local $local_anyref anyref)
(local.get $local_anyref)
)
(func $return_anyref_global (result anyref)
(global.get $global_anyref)
)
(func $return_anyref_null (result anyref)
(ref.null any)
)
(func $return_anyref2 (result anyref)
(local $local_externref externref)
(local.get $local_externref)
)
(func $return_anyref3 (result anyref)
(global.get $global_externref)
)
(func $return_anyref4 (result anyref)
(ref.null extern)
)
(func $return_anyref5 (result anyref)
(local $local_funcref funcref)
(local.get $local_funcref)
)
(func $return_anyref6 (result anyref)
(global.get $global_funcref)
)
(func $return_anyref7 (result anyref)
(ref.null func)
)
(func $return_anyref8 (result anyref)
(ref.func $foo)
)
(func $returns_externref (result externref)
(local $local_externref externref)
(return
(local.get $local_externref)
)
(return
(global.get $global_externref)
)
(return
(ref.null extern)
)
)
(func $returns_funcref (result funcref)
(local $local_funcref funcref)
(return
(local.get $local_funcref)
)
(return
(global.get $global_funcref)
)
(return
(ref.func $foo)
)
(return
(ref.null func)
)
)
(func $returns_anyref (result anyref)
(local $local_anyref anyref)
(return
(local.get $local_anyref)
)
(return
(global.get $global_anyref)
)
(return
(ref.null any)
)
)
(func $returns_anyref2 (result anyref)
(local $local_externref externref)
(local $local_funcref funcref)
(return
(local.get $local_externref)
)
(return
(global.get $global_externref)
)
(return
(ref.null extern)
)
(return
(local.get $local_funcref)
)
(return
(global.get $global_funcref)
)
(return
(ref.func $foo)
)
(return
(ref.null func)
)
)
(func $ref-user
(drop
(ref.func $ref-taken-but-not-in-table)
)
)
(func $ref-taken-but-not-in-table
(nop)
)
)