1;;! component_model_async = true 2 3(component definition $A 4 (core func $inc (canon backpressure.inc)) 5 (core func $dec (canon backpressure.dec)) 6 (core module $m 7 (import "" "inc" (func $inc)) 8 (import "" "dec" (func $dec)) 9 (func (export "run") (param $inc i32) (param $dec i32) 10 loop $l 11 call $inc 12 (local.tee $inc (i32.sub (local.get $inc) (i32.const 1))) 13 if br $l end 14 end 15 16 loop $l 17 call $dec 18 (local.tee $dec (i32.sub (local.get $dec) (i32.const 1))) 19 if br $l end 20 end) 21 ) 22 (core instance $i (instantiate $m 23 (with "" (instance 24 (export "inc" (func $inc)) 25 (export "dec" (func $dec)) 26 )) 27 )) 28 (func (export "run") (param "incs" u32) (param "decs" u32) 29 (canon lift (core func $i "run"))) 30) 31 32(component instance $a1 $A) 33(assert_trap (invoke "run" (u32.const 0) (u32.const 1)) "backpressure counter overflow") 34 35(component instance $a2 $A) 36(assert_trap (invoke "run" (u32.const 1) (u32.const 2)) "backpressure counter overflow") 37 38(component instance $a3 $A) 39(assert_trap (invoke "run" (u32.const 65536) (u32.const 0)) "backpressure counter overflow") 40 41(component instance $a4 $A) 42(assert_return (invoke "run" (u32.const 65535) (u32.const 65535))) 43(assert_trap (invoke "run" (u32.const 0) (u32.const 1)) "backpressure counter overflow") 44