1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
(module
(type $t0 (struct))
(type $t1 (struct (field i32)))
(type $t1' (struct (field i32)))
(type $t2 (struct (field i32) (field i32)))
(type $t2' (struct (field i32) (field i32)))
(type $t3 (struct (field i32) (field i32)))
(global $t0 (rtt $t0) (rtt.canon $t0))
(global $t0' (rtt $t0) (rtt.canon $t0))
(global $t1 (rtt $t1) (rtt.sub $t1 (global.get $t0)))
(global $t1' (rtt $t1') (rtt.sub $t1' (global.get $t0)))
(global $t2 (rtt $t2) (rtt.sub $t2 (global.get $t1)))
(global $t2' (rtt $t2') (rtt.sub $t2' (global.get $t1')))
(global $t3 (rtt $t3) (rtt.sub $t3 (global.get $t0)))
(global $t4 (rtt $t3) (rtt.sub $t3 (rtt.sub $t0 (global.get $t0))))
(global $tab.0 (mut (ref null data)) (ref.null data))
(global $tab.1 (mut (ref null data)) (ref.null data))
(global $tab.2 (mut (ref null data)) (ref.null data))
(global $tab.3 (mut (ref null data)) (ref.null data))
(global $tab.4 (mut (ref null data)) (ref.null data))
(global $tab.10 (mut (ref null data)) (ref.null data))
(global $tab.11 (mut (ref null data)) (ref.null data))
(global $tab.12 (mut (ref null data)) (ref.null data))
(func $init
(global.set $tab.0 (struct.new_default_with_rtt $t0 (global.get $t0)))
(global.set $tab.10 (struct.new_default_with_rtt $t0 (global.get $t0')))
(global.set $tab.1 (struct.new_default_with_rtt $t1 (global.get $t1)))
(global.set $tab.11 (struct.new_default_with_rtt $t1' (global.get $t1')))
(global.set $tab.2 (struct.new_default_with_rtt $t2 (global.get $t2)))
(global.set $tab.12 (struct.new_default_with_rtt $t2' (global.get $t2')))
(global.set $tab.3 (struct.new_default_with_rtt $t3 (global.get $t3)))
(global.set $tab.4 (struct.new_default_with_rtt $t3 (global.get $t4)))
)
(func (export "test-sub")
(call $init)
(drop (ref.cast (ref.null data) (global.get $t0)))
(drop (ref.cast (global.get $tab.0) (global.get $t0)))
(drop (ref.cast (global.get $tab.1) (global.get $t0)))
(drop (ref.cast (global.get $tab.2) (global.get $t0)))
(drop (ref.cast (global.get $tab.3) (global.get $t0)))
(drop (ref.cast (global.get $tab.4) (global.get $t0)))
(drop (ref.cast (ref.null data) (global.get $t0)))
(drop (ref.cast (global.get $tab.1) (global.get $t1)))
(drop (ref.cast (global.get $tab.2) (global.get $t1)))
(drop (ref.cast (ref.null data) (global.get $t0)))
(drop (ref.cast (global.get $tab.2) (global.get $t2)))
(drop (ref.cast (ref.null data) (global.get $t0)))
(drop (ref.cast (global.get $tab.3) (global.get $t3)))
(drop (ref.cast (ref.null data) (global.get $t0)))
(drop (ref.cast (global.get $tab.4) (global.get $t4)))
)
(func (export "test-canon")
(call $init)
(drop (ref.cast (global.get $tab.0) (global.get $t0')))
(drop (ref.cast (global.get $tab.1) (global.get $t0')))
(drop (ref.cast (global.get $tab.2) (global.get $t0')))
(drop (ref.cast (global.get $tab.3) (global.get $t0')))
(drop (ref.cast (global.get $tab.4) (global.get $t0')))
(drop (ref.cast (global.get $tab.10) (global.get $t0)))
(drop (ref.cast (global.get $tab.11) (global.get $t0)))
(drop (ref.cast (global.get $tab.12) (global.get $t0)))
(drop (ref.cast (global.get $tab.1) (global.get $t1')))
(drop (ref.cast (global.get $tab.2) (global.get $t1')))
(drop (ref.cast (global.get $tab.11) (global.get $t1)))
(drop (ref.cast (global.get $tab.12) (global.get $t1)))
(drop (ref.cast (global.get $tab.2) (global.get $t2')))
(drop (ref.cast (global.get $tab.12) (global.get $t2)))
)
)
(invoke "test-sub")
(invoke "test-canon")
|