| (module |
| (type $ii (func (param i32 i32))) |
| (type $FUNCSIG$vi (func (param i32))) |
| (type $2 (func)) |
| (type $3 (func (result i32))) |
| (type $4 (func (param i32) (result i32))) |
| (type $5 (func (param f64))) |
| (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) |
| (import "env" "segfault" (func $segfault (param i32))) |
| (global $stack_ptr (mut i32) (get_global $STACKTOP$asm2wasm$import)) |
| (table 1 1 anyfunc) |
| (memory $0 10) |
| (func $nothing (; 1 ;) (type $2) |
| (nop) |
| ) |
| (func $not-alive (; 2 ;) (type $2) |
| (local $x i32) |
| (set_local $x |
| (i32.const 1) |
| ) |
| (call $nothing) |
| ) |
| (func $spill (; 3 ;) (type $2) |
| (local $x i32) |
| (local $1 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| ) |
| (func $ignore-non-pointers (; 4 ;) (type $2) |
| (local $x i32) |
| (local $y i64) |
| (local $z f32) |
| (local $w f64) |
| (local $4 i32) |
| (set_local $4 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $4) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (set_local $x |
| (i32.const 1) |
| ) |
| (set_local $y |
| (i64.const 1) |
| ) |
| (set_local $z |
| (f32.const 1) |
| ) |
| (set_local $w |
| (f64.const 1) |
| ) |
| (block |
| (i32.store |
| (get_local $4) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (drop |
| (get_local $y) |
| ) |
| (drop |
| (get_local $z) |
| ) |
| (drop |
| (get_local $w) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $4) |
| ) |
| ) |
| (func $spill4 (; 5 ;) (type $2) |
| (local $x i32) |
| (local $y i32) |
| (local $z i32) |
| (local $w i32) |
| (local $4 i32) |
| (set_local $4 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $4) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (set_local $x |
| (i32.const 1) |
| ) |
| (set_local $y |
| (i32.const 1) |
| ) |
| (set_local $z |
| (i32.const 1) |
| ) |
| (set_local $w |
| (i32.const 1) |
| ) |
| (block |
| (i32.store |
| (get_local $4) |
| (get_local $x) |
| ) |
| (i32.store offset=4 |
| (get_local $4) |
| (get_local $y) |
| ) |
| (i32.store offset=8 |
| (get_local $4) |
| (get_local $z) |
| ) |
| (i32.store offset=12 |
| (get_local $4) |
| (get_local $w) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (drop |
| (get_local $y) |
| ) |
| (drop |
| (get_local $z) |
| ) |
| (drop |
| (get_local $w) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $4) |
| ) |
| ) |
| (func $spill5 (; 6 ;) (type $2) |
| (local $x i32) |
| (local $y i32) |
| (local $z i32) |
| (local $w i32) |
| (local $a i32) |
| (local $5 i32) |
| (set_local $5 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $5) |
| (i32.const 32) |
| ) |
| ) |
| (block |
| (set_local $x |
| (i32.const 1) |
| ) |
| (set_local $y |
| (i32.const 1) |
| ) |
| (set_local $z |
| (i32.const 1) |
| ) |
| (set_local $w |
| (i32.const 1) |
| ) |
| (set_local $a |
| (i32.const 1) |
| ) |
| (block |
| (i32.store |
| (get_local $5) |
| (get_local $x) |
| ) |
| (i32.store offset=4 |
| (get_local $5) |
| (get_local $y) |
| ) |
| (i32.store offset=8 |
| (get_local $5) |
| (get_local $z) |
| ) |
| (i32.store offset=12 |
| (get_local $5) |
| (get_local $w) |
| ) |
| (i32.store offset=16 |
| (get_local $5) |
| (get_local $a) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (drop |
| (get_local $y) |
| ) |
| (drop |
| (get_local $z) |
| ) |
| (drop |
| (get_local $w) |
| ) |
| (drop |
| (get_local $a) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $5) |
| ) |
| ) |
| (func $some-alive (; 7 ;) (type $2) |
| (local $x i32) |
| (local $y i32) |
| (local $2 i32) |
| (set_local $2 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $2) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (i32.store |
| (get_local $2) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $2) |
| ) |
| ) |
| (func $spill-args (; 8 ;) (type $ii) (param $p i32) (param $q i32) |
| (local $x i32) |
| (local $3 i32) |
| (local $4 i32) |
| (local $5 i32) |
| (set_local $3 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $3) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (set_local $4 |
| (i32.const 1) |
| ) |
| (set_local $5 |
| (i32.const 2) |
| ) |
| (i32.store offset=8 |
| (get_local $3) |
| (get_local $x) |
| ) |
| (call $spill-args |
| (get_local $4) |
| (get_local $5) |
| ) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $3) |
| ) |
| ) |
| (func $spill-ret (; 9 ;) (type $3) (result i32) |
| (local $x i32) |
| (local $1 i32) |
| (local $2 i32) |
| (local $3 i32) |
| (local $4 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (set_local $4 |
| (block (result i32) |
| (block |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (if |
| (i32.const 1) |
| (block |
| (set_local $2 |
| (i32.const 2) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (return |
| (get_local $2) |
| ) |
| ) |
| (block |
| (set_local $3 |
| (i32.const 3) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (return |
| (get_local $3) |
| ) |
| ) |
| ) |
| (i32.const 4) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (get_local $4) |
| ) |
| (func $spill-unreachable (; 10 ;) (type $3) (result i32) |
| (local $x i32) |
| (local $1 i32) |
| (local $2 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (set_local $2 |
| (block (result i32) |
| (block |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (unreachable) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (get_local $2) |
| ) |
| (func $spill-call-call0 (; 11 ;) (type $4) (param $p i32) (result i32) |
| (unreachable) |
| ) |
| (func $spill-call-call1 (; 12 ;) (type $4) (param $p i32) (result i32) |
| (local $x i32) |
| (local $2 i32) |
| (local $3 i32) |
| (local $4 i32) |
| (local $5 i32) |
| (set_local $2 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $2) |
| (i32.const 16) |
| ) |
| ) |
| (set_local $5 |
| (block (result i32) |
| (drop |
| (block (result i32) |
| (set_local $3 |
| (block (result i32) |
| (set_local $4 |
| (i32.const 1) |
| ) |
| (i32.store offset=4 |
| (get_local $2) |
| (get_local $x) |
| ) |
| (call $spill-call-call1 |
| (get_local $4) |
| ) |
| ) |
| ) |
| (i32.store offset=4 |
| (get_local $2) |
| (get_local $x) |
| ) |
| (call $spill-call-call0 |
| (get_local $3) |
| ) |
| ) |
| ) |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $2) |
| ) |
| (get_local $5) |
| ) |
| (func $spill-call-ret (; 13 ;) (type $4) (param $p i32) (result i32) |
| (local $x i32) |
| (drop |
| (call $spill-call-call0 |
| (return |
| (i32.const 1) |
| ) |
| ) |
| ) |
| (i32.const 0) |
| ) |
| (func $spill-ret-call (; 14 ;) (type $4) (param $p i32) (result i32) |
| (local $x i32) |
| (drop |
| (return |
| (call $spill-call-call0 |
| (i32.const 1) |
| ) |
| ) |
| ) |
| (i32.const 0) |
| ) |
| (func $spill-ret-ret (; 15 ;) (type $3) (result i32) |
| (local $x i32) |
| (local $1 i32) |
| (local $2 i32) |
| (local $3 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (set_local $3 |
| (block (result i32) |
| (block |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call $nothing) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| (drop |
| (block |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (return |
| (block |
| (set_local $2 |
| (i32.const 1) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (return |
| (get_local $2) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (i32.const 0) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| (get_local $3) |
| ) |
| (func $spill-call-othertype (; 16 ;) (type $5) (param $y f64) |
| (local $x i32) |
| (local $2 i32) |
| (local $3 f64) |
| (set_local $2 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $2) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (set_local $3 |
| (f64.const 1) |
| ) |
| (i32.store |
| (get_local $2) |
| (get_local $x) |
| ) |
| (call $spill-call-othertype |
| (get_local $3) |
| ) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $2) |
| ) |
| ) |
| (func $spill-call_indirect (; 17 ;) (type $2) |
| (local $x i32) |
| (local $1 i32) |
| (local $2 i32) |
| (local $3 i32) |
| (local $4 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (set_local $2 |
| (i32.const 123) |
| ) |
| (set_local $3 |
| (i32.const 456) |
| ) |
| (set_local $4 |
| (i32.const 789) |
| ) |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call_indirect (type $ii) |
| (get_local $2) |
| (get_local $3) |
| (get_local $4) |
| ) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| ) |
| (func $spill-call_import (; 18 ;) (type $2) |
| (local $x i32) |
| (local $1 i32) |
| (local $2 i32) |
| (set_local $1 |
| (get_global $stack_ptr) |
| ) |
| (set_global $stack_ptr |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (block |
| (block |
| (set_local $2 |
| (i32.const 200) |
| ) |
| (i32.store |
| (get_local $1) |
| (get_local $x) |
| ) |
| (call $segfault |
| (get_local $2) |
| ) |
| ) |
| (drop |
| (get_local $x) |
| ) |
| ) |
| (set_global $stack_ptr |
| (get_local $1) |
| ) |
| ) |
| ) |