Clojure-flavored WASM's text format
Clojure-flavored WASM's text format
Turns this
(module (defn add [^i32 a ^i32 b] (let [x 1] (if (= a x) (+ a x) (+ a b))))(defn main [] (add 9 8)))
into this
(module (type $return_add (func (param $a i32) (param $b i32) (result i32)))(func $add (param $a i32) (param $b i32) (result i32) (local $x i32) (block (result i32) (local.set $x (i32.const 1)) (if (result i32) (i32.eq (local.get $x) (local.get $a)) (then (i32.add (local.get $x) (local.get $a))) (else (i32.add (local.get $b) (local.get $a))))))
(export "add" (func $add))
(type $return_main (func (result i32)))
(func $main (result i32) (call $add (i32.const 9) (i32.const 8)))
(export "main" (func $main)))