From e2f49d8227f2b71e4dede5cf4074bb9f65e3d77f Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Tue, 13 Aug 2019 00:29:26 +0900 Subject: Add basic exception handling support (#2282) This adds basic support for exception handling instructions, according to the spec: https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md This PR includes support for: - Binary reading/writing - Wast reading/writing - Stack IR - Validation - binaryen.js + C API - Few IR routines: branch-utils, type-updating, etc - Few passes: just enough to make `wasm-opt -O` pass - Tests This PR does not include support for many optimization passes, fuzzer, or interpreter. They will be follow-up PRs. Try-catch construct is modeled in Binaryen IR in a similar manner to that of if-else: each of try body and catch body will contain a block, which can be omitted if there is only a single instruction. This block will not be emitted in wast or binary, as in if-else. As in if-else, `class Try` contains two expressions each for try body and catch body, and `catch` is not modeled as an instruction. `exnref` value pushed by `catch` is get by `pop` instruction. `br_on_exn` is special: it returns different types of values when taken and not taken. We make `exnref`, the type `br_on_exn` pushes if not taken, as `br_on_exn`'s type. --- test/binaryen.js/exception-handling.js | 61 + test/binaryen.js/exception-handling.js.txt | 32 + test/binaryen.js/kitchen-sink.js | 33 +- test/binaryen.js/kitchen-sink.js.txt | 4082 ++++++++++++++++++++++++---- 4 files changed, 3614 insertions(+), 594 deletions(-) create mode 100644 test/binaryen.js/exception-handling.js create mode 100644 test/binaryen.js/exception-handling.js.txt (limited to 'test/binaryen.js') diff --git a/test/binaryen.js/exception-handling.js b/test/binaryen.js/exception-handling.js new file mode 100644 index 000000000..adf67d2fa --- /dev/null +++ b/test/binaryen.js/exception-handling.js @@ -0,0 +1,61 @@ +function assert(x) { + if (!x) throw 'error!'; +} + +function cleanInfo(info) { + var ret = {}; + for (var x in info) { + if (x == 'id' || x == 'type' || x == 'name' || x == 'event') { + ret[x] = info[x]; + } + } + return ret; +} + +function stringify(expr) { + return JSON.stringify(cleanInfo(Binaryen.getExpressionInfo(expr))); +} + +var module = new Binaryen.Module(); +module.setFeatures(Binaryen.Features.ExceptionHandling); + +var v = module.addFunctionType("v", Binaryen.none, []); +var vi = module.addFunctionType("vi", Binaryen.none, [Binaryen.i32]); +var event_ = module.addEvent("e", 0, vi); + +// (try +// (throw $e (i32.const 0)) +// (catch +// ;; We don't support multi-value yet. Use locals instead. +// (local.set 0 (exnref.pop)) +// (drop +// (block $l (result i32) +// (rethrow +// (br_on_exn $l $e (local.get 0)) +// ) +// ) +// ) +// ) +// ) +var throw_ = module.throw("e", [module.i32.const(0)]); +var br_on_exn = module.br_on_exn("l", "e", module.local.get(0, Binaryen.exnref)); +var rethrow = module.rethrow(br_on_exn); +var try_ = module.try( + throw_, + module.block(null, [ + module.local.set(0, module.exnref.pop()), + module.drop( + module.block("l", [rethrow], Binaryen.i32) + ) + ] + ) +); +var func = module.addFunction("test", v, [Binaryen.exnref], try_); + +console.log(module.emitText()); +assert(module.validate()); + +console.log("getExpressionInfo(throw) = " + stringify(throw_)); +console.log("getExpressionInfo(br_on_exn) = " + stringify(br_on_exn)); +console.log("getExpressionInfo(rethrow) = " + stringify(rethrow)); +console.log("getExpressionInfo(try) = " + stringify(try_)); diff --git a/test/binaryen.js/exception-handling.js.txt b/test/binaryen.js/exception-handling.js.txt new file mode 100644 index 000000000..902ac55e6 --- /dev/null +++ b/test/binaryen.js/exception-handling.js.txt @@ -0,0 +1,32 @@ +(module + (type $v (func)) + (type $vi (func (param i32))) + (event $e (attr 0) (param i32)) + (func $test (; 0 ;) (type $v) + (local $0 exnref) + (try + (throw $e + (i32.const 0) + ) + (catch + (local.set $0 + (exnref.pop) + ) + (drop + (block $l (result i32) + (rethrow + (br_on_exn $l $e + (local.get $0) + ) + ) + ) + ) + ) + ) + ) +) + +getExpressionInfo(throw) = {"id":39,"type":7,"event":"e"} +getExpressionInfo(br_on_exn) = {"id":41,"type":6,"name":"l","event":"e"} +getExpressionInfo(rethrow) = {"id":40,"type":7} +getExpressionInfo(try) = {"id":38,"type":0} diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index 1fde6222e..163fe8839 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -111,6 +111,10 @@ function test_ids() { console.log("DataDropId: " + Binaryen.DataDropId); console.log("MemoryCopyId: " + Binaryen.MemoryCopyId); console.log("MemoryFillId: " + Binaryen.MemoryFillId); + console.log("TryId: " + Binaryen.TryId); + console.log("ThrowId: " + Binaryen.ThrowId); + console.log("RethrowId: " + Binaryen.RethrowId); + console.log("BrOnExnId: " + Binaryen.BrOnExnId); console.log("PushId: " + Binaryen.PushId); console.log("PopId: " + Binaryen.PopId); } @@ -121,6 +125,10 @@ function test_core() { module = new Binaryen.Module(); + // Create an event + var vi = module.addFunctionType("vi", Binaryen.none, [Binaryen.i32]); + var event_ = module.addEvent("a-event", 0, vi); + // Literals and consts var constI32 = module.i32.const(1), @@ -401,6 +409,24 @@ function test_core() { // Tail Call module.returnCall("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], Binaryen.i32), module.returnCallIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], "iiIfF"), + + // Exception handling + module.try( + module.throw("a-event", [module.i32.const(0)]), + module.block(null, [ + module.local.set(5, module.exnref.pop()), + module.drop( + module.block("try-block", [ + module.rethrow( + module.br_on_exn("try-block", "a-event", + module.local.get(5, Binaryen.exnref)), + ) + ], Binaryen.i32) + ) + ] + ) + ), + // Push and pop module.push(module.i32.pop()), module.push(module.i64.pop()), @@ -429,16 +455,12 @@ function test_core() { var body = module.block("the-body", [ nothing, makeInt32(42) ]); // Create the function - var sinker = module.addFunction("kitchen()sinker", iiIfF, [ Binaryen.i32 ], body); + var sinker = module.addFunction("kitchen()sinker", iiIfF, [ Binaryen.i32, Binaryen.exnref ], body); // Create a global var initExpr = module.i32.const(1); var global = module.addGlobal("a-global", Binaryen.i32, false, initExpr) - // Create an event - var vi = module.addFunctionType("vi", Binaryen.none, [Binaryen.i32]); - var event_ = module.addEvent("a-event", 0, vi); - // Imports var fiF = module.addFunctionType("fiF", Binaryen.f32, [ Binaryen.i32, Binaryen.f64 ]); @@ -487,6 +509,7 @@ function test_core() { var features = Binaryen.Features.All; module.setFeatures(features); assert(module.getFeatures() == features); + console.log(module.emitText()); // Verify it validates assert(module.validate()); diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 2dd418806..a1baa5951 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -52,6 +52,10 @@ MemoryInitId: 32 DataDropId: 33 MemoryCopyId: 34 MemoryFillId: 35 +TryId: 38 +ThrowId: 39 +RethrowId: 40 +BrOnExnId: 41 PushId: 36 PopId: 37 getExpressionInfo={"id":15,"type":3,"op":6} @@ -64,8 +68,8 @@ getExpressionInfo(i64.const)={"id":14,"type":2,"value":{"low":6,"high":7}} getExpressionInfo(f32.const)={"id":14,"type":3,"value":8.5} getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} (module - (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) (type $vi (func (param i32))) + (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) (type $fiF (func (param i32 f64) (result f32))) (type $v (func)) (type $4 (func)) @@ -86,6 +90,7 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} (start $starter) (func "$kitchen()sinker" (; 1 ;) (type $iiIfF) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) + (local $5 exnref) (block $the-body (result i32) (block $the-nothing (drop @@ -1431,6 +1436,25 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} (f64.const 3.7) (i32.const 2449) ) + (try + (throw $a-event + (i32.const 0) + ) + (catch + (local.set $5 + (exnref.pop) + ) + (drop + (block $try-block (result i32) + (rethrow + (br_on_exn $try-block $a-event + (local.get $5) + ) + ) + ) + ) + ) + ) (push (i32.pop) ) @@ -1462,455 +1486,1874 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} ) ) -raw: (module - (type $v (func)) (type $vi (func (param i32))) - (type $i (func (result i32))) - (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) (type $v) - (local $0 i32) - (call $check - (i32.const 1337) - ) - ) - (func $two-blocks (; 2 ;) (type $v) - (local $0 i32) - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $two-blocks-plus-code (; 3 ;) (type $v) - (local $0 i32) - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 77) - ) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $loop (; 4 ;) (type $v) - (local $0 i32) - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (block - (br $shape$0$continue) - ) - ) - ) - (func $loop-plus-code (; 5 ;) (type $v) - (local $0 i32) - (loop $shape$0$continue - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 33) - ) - ) - (call $check - (i32.const 1) - ) - ) - (block - (drop - (i32.const -66) - ) - (br $shape$0$continue) - ) - ) - ) - (func $split (; 6 ;) (type $v) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - (func $split-plus-code (; 7 ;) (type $v) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const 10) - ) - (block - (call $check - (i32.const 1) - ) - ) - ) - (block + (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) + (type $fiF (func (param i32 f64) (result f32))) + (type $v (func)) + (type $4 (func)) + (import "module" "base" (global $a-global-imp i32)) + (import "module" "base" (func $an-imported (param i32 f64) (result f32))) + (import "module" "base" (event $a-event-imp (attr 0) (param i32))) + (memory $0 1 256) + (data (i32.const 10) "hello, world") + (data passive "I am passive") + (table $0 1 funcref) + (elem (i32.const 0) "$kitchen()sinker") + (global $a-global i32 (i32.const 1)) + (event $a-event (attr 0) (param i32)) + (export "kitchen_sinker" (func "$kitchen()sinker")) + (export "a-global-exp" (global $a-global)) + (export "a-event-exp" (event $a-event)) + (export "mem" (memory $0)) + (start $starter) + (func "$kitchen()sinker" (; 1 ;) (type $iiIfF) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (local $4 i32) + (local $5 exnref) + (block $the-body (result i32) + (block $the-nothing (drop - (i32.const 20) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - ) - (func $if (; 8 ;) (type $v) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$3$break) - ) - ) - (br $block$3$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-plus-code (; 9 ;) (type $v) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const -1) - ) - (block - (call $check - (i32.const 1) + (block $the-value (result i32) + (drop + (i32.clz + (i32.const -10) + ) ) - (block - (drop - (i32.const -3) + (drop + (i64.ctz + (i64.const -22) ) - (br $block$3$break) ) - ) - ) - (block - (drop - (i32.const -2) - ) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-else (; 10 ;) (type $v) - (local $0 i32) - (block $block$4$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$4$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - (block - (br $block$4$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 3) - ) - ) - ) - (func $loop-tail (; 11 ;) (type $v) - (local $0 i32) - (block $block$3$break - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (if - (i32.const 10) - (br $shape$0$continue) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) (type $v) - (local $0 i32) - (block $block$2$break - (call $check - (i32.const 0) - ) - (block - (drop - (i32.const 10) - ) - (br $block$2$break) - ) - ) - (block - (block $block$7$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (call $check - (i32.const 1) - ) - (if - (i32.const -2) - (br $block$3$break) - (block - (drop - (i32.const 20) - ) - (br $block$7$break) - ) + (drop + (i32.popcnt + (i32.const -10) ) ) - (block - (call $check - (i32.const 2) - ) - (if - (i32.const -6) - (br $block$4$break) - (block - (drop - (i32.const 30) - ) - (br $shape$1$continue) - ) + (drop + (f32.neg + (f32.const -33.61199951171875) ) ) - ) - ) - (block - (block $block$6$break - (call $check - (i32.const 3) + (drop + (f64.abs + (f64.const -9005.841) + ) ) - (if - (i32.const -10) - (block - (call $check - (i32.const 4) - ) - (block - (br $block$6$break) - ) + (drop + (f32.ceil + (f32.const -33.61199951171875) ) - (br $block$6$break) ) - ) - (block - (call $check - (i32.const 5) + (drop + (f64.floor + (f64.const -9005.841) + ) ) - (block - (drop - (i32.const 40) + (drop + (f32.trunc + (f32.const -33.61199951171875) ) - (br $block$7$break) ) - ) - ) - ) - (block - (call $check - (i32.const 6) - ) - ) - ) - ) - (func $switch (; 13 ;) (type $v) - (local $0 i32) - (call $check - (i32.const 0) - ) - (block $switch$1$leave - (block $switch$1$default - (block $switch$1$case$3 - (block $switch$1$case$2 - (br_table $switch$1$default $switch$1$default $switch$1$case$2 $switch$1$default $switch$1$case$3 $switch$1$case$2 $switch$1$default - (i32.const -99) + (drop + (f32.nearest + (f32.const -33.61199951171875) + ) ) - ) - (block - (block - (call $check - (i32.const 1) + (drop + (f64.sqrt + (f64.const -9005.841) ) ) - ) - (br $switch$1$leave) - ) - (block - (drop - (i32.const 55) - ) - (block - (call $check - (i32.const 2) + (drop + (i32.eqz + (i32.const -10) + ) ) - ) - ) - (br $switch$1$leave) - ) - (block - (block - (call $check - (i32.const 3) - ) - ) - ) - (br $switch$1$leave) - ) - ) - (func $duffs-device (; 14 ;) (type $v) - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (block - (block $block$3$break - (block $block$2$break - (call $check - (i32.const 0) - ) - (if - (i32.const 10) - (block - (local.set $3 - (i32.const 2) + (drop + (i64.extend_i32_s + (i32.const -10) ) - (br $block$2$break) ) - (block - (local.set $3 - (i32.const 3) + (drop + (i64.extend_i32_u + (i32.const -10) ) - (br $block$3$break) ) - ) - ) - ) - ) - (loop $shape$1$continue - (if - (i32.eq - (local.get $3) - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - (block - (local.set $3 - (i32.const 3) + (drop + (i32.wrap_i64 + (i64.const -22) + ) ) - (br $shape$1$continue) - ) - ) - (if - (i32.eq - (local.get $3) - (i32.const 3) - ) - (block - (local.set $3 - (i32.const 0) + (drop + (i32.trunc_f32_s + (f32.const -33.61199951171875) + ) ) - (call $check - (i32.const 2) + (drop + (i64.trunc_f32_s + (f32.const -33.61199951171875) + ) ) - (block - (local.set $3 - (i32.const 2) + (drop + (i32.trunc_f32_u + (f32.const -33.61199951171875) ) - (br $shape$1$continue) ) - ) + (drop + (i64.trunc_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_sat_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_sat_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_sat_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_sat_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_sat_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_sat_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_sat_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_sat_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i32.reinterpret_f32 + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.reinterpret_f64 + (f64.const -9005.841) + ) + ) + (drop + (f32.convert_i32_s + (i32.const -10) + ) + ) + (drop + (f64.convert_i32_s + (i32.const -10) + ) + ) + (drop + (f32.convert_i32_u + (i32.const -10) + ) + ) + (drop + (f64.convert_i32_u + (i32.const -10) + ) + ) + (drop + (f32.convert_i64_s + (i64.const -22) + ) + ) + (drop + (f64.convert_i64_s + (i64.const -22) + ) + ) + (drop + (f32.convert_i64_u + (i64.const -22) + ) + ) + (drop + (f64.convert_i64_u + (i64.const -22) + ) + ) + (drop + (f64.promote_f32 + (f32.const -33.61199951171875) + ) + ) + (drop + (f32.demote_f64 + (f64.const -9005.841) + ) + ) + (drop + (f32.reinterpret_i32 + (i32.const -10) + ) + ) + (drop + (f64.reinterpret_i64 + (i64.const -22) + ) + ) + (drop + (i8x16.splat + (i32.const 42) + ) + ) + (drop + (i16x8.splat + (i32.const 42) + ) + ) + (drop + (i32x4.splat + (i32.const 42) + ) + ) + (drop + (i64x2.splat + (i64.const 1958505087099) + ) + ) + (drop + (f32x4.splat + (f32.const 42) + ) + ) + (drop + (f64x2.splat + (f64.const 42) + ) + ) + (drop + (v128.not + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.sqrt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.sqrt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.trunc_sat_f32x4_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.trunc_sat_f32x4_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.trunc_sat_f64x2_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.trunc_sat_f64x2_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.convert_i32x4_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.convert_i32x4_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.convert_i64x2_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.convert_i64x2_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32.add + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (f64.sub + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (i32.div_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.div_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.rem_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.rem_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.and + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.or + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.xor + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.shl + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.shr_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.shr_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.rotl + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.rotr + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (f32.div + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.copysign + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f32.min + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.max + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (i32.eq + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (f32.ne + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (i32.lt_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.lt_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.le_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.le_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.gt_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.gt_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.ge_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.ge_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (f32.lt + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.le + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f64.gt + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f32.ge + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (i8x16.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.lt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.gt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.le + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.lt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.gt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.le + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (drop + (i8x16.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.add_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.add_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.div + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.min + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.max + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.div + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.min + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.max + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.extract_lane_s 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.extract_lane_u 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.extract_lane_s 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.extract_lane_u 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i8x16.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i32x4.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i64x2.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i64.const 184683593770) + ) + ) + (drop + (f32x4.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (f32.const 42) + ) + ) + (drop + (f64x2.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (f64.const 42) + ) + ) + (drop + (i8x16.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i8x16.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i8x16.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (v128.bitselect + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (memory.init 0 + (i32.const 1024) + (i32.const 0) + (i32.const 12) + ) + (data.drop 0) + (memory.copy + (i32.const 2048) + (i32.const 1024) + (i32.const 12) + ) + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + (block + ) + (if + (i32.const 1) + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + (if + (i32.const 4) + (drop + (i32.const 5) + ) + ) + (drop + (loop $in (result i32) + (i32.const 0) + ) + ) + (drop + (loop (result i32) + (i32.const 0) + ) + ) + (drop + (br_if $the-value + (i32.const 1) + (i32.const 0) + ) + ) + (br_if $the-nothing + (i32.const 2) + ) + (br $the-value + (i32.const 3) + ) + (br $the-nothing) + (br_table $the-value $the-value + (i32.const 1) + (i32.const 0) + ) + (br_table $the-nothing $the-nothing + (i32.const 2) + ) + (drop + (i32.eqz + (call "$kitchen()sinker" + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + ) + (drop + (i32.eqz + (i32.trunc_f32_s + (call $an-imported + (i32.const 13) + (f64.const 3.7) + ) + ) + ) + ) + (drop + (i32.eqz + (call_indirect (type $iiIfF) + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + (i32.const 2449) + ) + ) + ) + (drop + (local.get $0) + ) + (local.set $0 + (i32.const 101) + ) + (drop + (local.tee $0 + (i32.const 102) + ) + ) + (drop + (i32.load + (i32.const 1) + ) + ) + (drop + (i64.load16_s offset=2 align=1 + (i32.const 8) + ) + ) + (drop + (f32.load + (i32.const 2) + ) + ) + (drop + (f64.load offset=2 + (i32.const 9) + ) + ) + (i32.store + (i32.const 10) + (i32.const 11) + ) + (i64.store offset=2 align=4 + (i32.const 110) + (i64.const 111) + ) + (drop + (select + (i32.const 3) + (i32.const 5) + (i32.const 1) + ) + ) + (return + (i32.const 1337) + ) + (return_call "$kitchen()sinker" + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + (return_call_indirect (type $iiIfF) + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + (i32.const 2449) + ) + (try + (throw $a-event + (i32.const 0) + ) + (catch + (local.set $5 + (exnref.pop) + ) + (drop + (block $try-block (result i32) + (rethrow + (br_on_exn $try-block $a-event + (local.get $5) + ) + ) + ) + ) + ) + ) + (push + (i32.pop) + ) + (push + (i64.pop) + ) + (push + (f32.pop) + ) + (push + (f64.pop) + ) + (push + (v128.pop) + ) + (push + (exnref.pop) + ) + (nop) + (unreachable) + ) + ) + ) + (i32.const 42) + ) + ) + (func $starter (; 2 ;) (type $v) + (nop) + ) +) + +raw: +(module + (type $v (func)) + (type $vi (func (param i32))) + (type $i (func (result i32))) + (import "module" "check" (func $check (param i32))) + (func $just-one-block (; 1 ;) (type $v) + (local $0 i32) + (call $check + (i32.const 1337) + ) + ) + (func $two-blocks (; 2 ;) (type $v) + (local $0 i32) + (block + (call $check + (i32.const 0) + ) + (call $check + (i32.const 1) + ) + ) + ) + (func $two-blocks-plus-code (; 3 ;) (type $v) + (local $0 i32) + (block + (block + (call $check + (i32.const 0) + ) + (drop + (i32.const 77) + ) + ) + (call $check + (i32.const 1) + ) + ) + ) + (func $loop (; 4 ;) (type $v) + (local $0 i32) + (loop $shape$0$continue + (block + (call $check + (i32.const 0) + ) + (call $check + (i32.const 1) + ) + ) + (block + (br $shape$0$continue) + ) + ) + ) + (func $loop-plus-code (; 5 ;) (type $v) + (local $0 i32) + (loop $shape$0$continue + (block + (block + (call $check + (i32.const 0) + ) + (drop + (i32.const 33) + ) + ) + (call $check + (i32.const 1) + ) + ) + (block + (drop + (i32.const -66) + ) + (br $shape$0$continue) + ) + ) + ) + (func $split (; 6 ;) (type $v) + (local $0 i32) + (call $check + (i32.const 0) + ) + (if + (i32.const 55) + (block + (call $check + (i32.const 1) + ) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + ) + (func $split-plus-code (; 7 ;) (type $v) + (local $0 i32) + (call $check + (i32.const 0) + ) + (if + (i32.const 55) + (block + (drop + (i32.const 10) + ) + (block + (call $check + (i32.const 1) + ) + ) + ) + (block + (drop + (i32.const 20) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + ) + ) + (func $if (; 8 ;) (type $v) + (local $0 i32) + (block $block$3$break + (call $check + (i32.const 0) + ) + (if + (i32.const 55) + (block + (call $check + (i32.const 1) + ) + (block + (br $block$3$break) + ) + ) + (br $block$3$break) + ) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + (func $if-plus-code (; 9 ;) (type $v) + (local $0 i32) + (block $block$3$break + (call $check + (i32.const 0) + ) + (if + (i32.const 55) + (block + (drop + (i32.const -1) + ) + (block + (call $check + (i32.const 1) + ) + (block + (drop + (i32.const -3) + ) + (br $block$3$break) + ) + ) + ) + (block + (drop + (i32.const -2) + ) + (br $block$3$break) + ) + ) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + (func $if-else (; 10 ;) (type $v) + (local $0 i32) + (block $block$4$break + (call $check + (i32.const 0) + ) + (if + (i32.const 55) + (block + (call $check + (i32.const 1) + ) + (block + (br $block$4$break) + ) + ) + (block + (call $check + (i32.const 2) + ) + (block + (br $block$4$break) + ) + ) + ) + ) + (block + (call $check + (i32.const 3) + ) + ) + ) + (func $loop-tail (; 11 ;) (type $v) + (local $0 i32) + (block $block$3$break + (loop $shape$0$continue + (block + (call $check + (i32.const 0) + ) + (call $check + (i32.const 1) + ) + ) + (if + (i32.const 10) + (br $shape$0$continue) + (br $block$3$break) + ) + ) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + (func $nontrivial-loop-plus-phi-to-head (; 12 ;) (type $v) + (local $0 i32) + (block $block$2$break + (call $check + (i32.const 0) + ) + (block + (drop + (i32.const 10) + ) + (br $block$2$break) + ) + ) + (block + (block $block$7$break + (block $block$4$break + (loop $shape$1$continue + (block $block$3$break + (call $check + (i32.const 1) + ) + (if + (i32.const -2) + (br $block$3$break) + (block + (drop + (i32.const 20) + ) + (br $block$7$break) + ) + ) + ) + (block + (call $check + (i32.const 2) + ) + (if + (i32.const -6) + (br $block$4$break) + (block + (drop + (i32.const 30) + ) + (br $shape$1$continue) + ) + ) + ) + ) + ) + (block + (block $block$6$break + (call $check + (i32.const 3) + ) + (if + (i32.const -10) + (block + (call $check + (i32.const 4) + ) + (block + (br $block$6$break) + ) + ) + (br $block$6$break) + ) + ) + (block + (call $check + (i32.const 5) + ) + (block + (drop + (i32.const 40) + ) + (br $block$7$break) + ) + ) + ) + ) + (block + (call $check + (i32.const 6) + ) + ) + ) + ) + (func $switch (; 13 ;) (type $v) + (local $0 i32) + (call $check + (i32.const 0) + ) + (block $switch$1$leave + (block $switch$1$default + (block $switch$1$case$3 + (block $switch$1$case$2 + (br_table $switch$1$default $switch$1$default $switch$1$case$2 $switch$1$default $switch$1$case$3 $switch$1$case$2 $switch$1$default + (i32.const -99) + ) + ) + (block + (block + (call $check + (i32.const 1) + ) + ) + ) + (br $switch$1$leave) + ) + (block + (drop + (i32.const 55) + ) + (block + (call $check + (i32.const 2) + ) + ) + ) + (br $switch$1$leave) + ) + (block + (block + (call $check + (i32.const 3) + ) + ) + ) + (br $switch$1$leave) + ) + ) + (func $duffs-device (; 14 ;) (type $v) + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 f32) + (local $5 f64) + (local $6 i32) + (block + (block $block$3$break + (block $block$2$break + (call $check + (i32.const 0) + ) + (if + (i32.const 10) + (block + (local.set $3 + (i32.const 2) + ) + (br $block$2$break) + ) + (block + (local.set $3 + (i32.const 3) + ) + (br $block$3$break) + ) + ) + ) + ) + ) + (loop $shape$1$continue + (if + (i32.eq + (local.get $3) + (i32.const 2) + ) + (block + (local.set $3 + (i32.const 0) + ) + (call $check + (i32.const 1) + ) + (block + (local.set $3 + (i32.const 3) + ) + (br $shape$1$continue) + ) + ) + (if + (i32.eq + (local.get $3) + (i32.const 3) + ) + (block + (local.set $3 + (i32.const 0) + ) + (call $check + (i32.const 2) + ) + (block + (local.set $3 + (i32.const 2) + ) + (br $shape$1$continue) + ) + ) ) ) ) @@ -1990,6 +3433,11 @@ int main() { RelooperRef the_relooper = NULL; the_module = BinaryenModuleCreate(); expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); + { + BinaryenType paramTypes[] = { 1 }; + functionTypes[0] = BinaryenAddFunctionType(the_module, "vi", 0, paramTypes, 1); + } + BinaryenAddEvent(the_module, "a-event", 0, functionTypes[0]); expressions[1] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); expressions[2] = BinaryenConst(the_module, BinaryenLiteralInt64(2)); expressions[3] = BinaryenConst(the_module, BinaryenLiteralFloat32(3.14)); @@ -1998,7 +3446,7 @@ int main() { expressions[6] = BinaryenConst(the_module, BinaryenLiteralFloat64(NAN)); { BinaryenType paramTypes[] = { 1, 2, 3, 4 }; - functionTypes[0] = BinaryenAddFunctionType(the_module, "iiIfF", 1, paramTypes, 4); + functionTypes[1] = BinaryenAddFunctionType(the_module, "iiIfF", 1, paramTypes, 4); } expressions[7] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); expressions[8] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); @@ -3303,180 +4751,1616 @@ int main() { expressions[653] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); expressions[654] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); { - BinaryenExpressionRef operands[] = { expressions[651], expressions[652], expressions[653], expressions[654] }; - expressions[655] = BinaryenReturnCallIndirect(the_module, expressions[650], operands, 4, "iiIfF"); + BinaryenExpressionRef operands[] = { expressions[651], expressions[652], expressions[653], expressions[654] }; + expressions[655] = BinaryenReturnCallIndirect(the_module, expressions[650], operands, 4, "iiIfF"); + } + expressions[656] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); + { + BinaryenExpressionRef operands[] = { expressions[656] }; + expressions[657] = BinaryenThrow(the_module, "a-event", operands, 1); + } + expressions[658] = BinaryenPop(the_module, 6); + expressions[659] = BinaryenLocalSet(the_module, 5, expressions[658]); + expressions[660] = BinaryenLocalGet(the_module, 5, 6); + expressions[661] = BinaryenBrOnExn(the_module, "try-block", "a-event", expressions[660]); + expressions[662] = BinaryenRethrow(the_module, expressions[661]); + { + BinaryenExpressionRef children[] = { expressions[662] }; + expressions[663] = BinaryenBlock(the_module, "try-block", children, 1, 1); + } + expressions[664] = BinaryenDrop(the_module, expressions[663]); + { + BinaryenExpressionRef children[] = { expressions[659], expressions[664] }; + expressions[665] = BinaryenBlock(the_module, NULL, children, 2, 0); + } + expressions[666] = BinaryenTry(the_module, expressions[657], expressions[665]); + expressions[667] = BinaryenPop(the_module, 1); + expressions[668] = BinaryenPush(the_module, expressions[667]); + expressions[669] = BinaryenPop(the_module, 2); + expressions[670] = BinaryenPush(the_module, expressions[669]); + expressions[671] = BinaryenPop(the_module, 3); + expressions[672] = BinaryenPush(the_module, expressions[671]); + expressions[673] = BinaryenPop(the_module, 4); + expressions[674] = BinaryenPush(the_module, expressions[673]); + expressions[675] = BinaryenPop(the_module, 5); + expressions[676] = BinaryenPush(the_module, expressions[675]); + expressions[677] = BinaryenPop(the_module, 6); + expressions[678] = BinaryenPush(the_module, expressions[677]); + expressions[679] = BinaryenNop(the_module); + expressions[680] = BinaryenUnreachable(the_module); + BinaryenExpressionGetId(expressions[30]); + BinaryenExpressionGetType(expressions[30]); + BinaryenUnaryGetOp(expressions[30]); + BinaryenUnaryGetValue(expressions[30]); +getExpressionInfo={"id":15,"type":3,"op":6} + BinaryenExpressionPrint(expressions[30]); +(f32.neg + (f32.const -33.61199951171875) +) + + expressions[681] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); + BinaryenExpressionGetId(expressions[681]); + BinaryenExpressionGetType(expressions[681]); + BinaryenConstGetValueI32(expressions[681]); +getExpressionInfo(i32.const)={"id":14,"type":1,"value":5} + expressions[682] = BinaryenConst(the_module, BinaryenLiteralInt64(30064771078)); + BinaryenExpressionGetId(expressions[682]); + BinaryenExpressionGetType(expressions[682]); + BinaryenConstGetValueI64Low(expressions[682]); + BinaryenConstGetValueI64High(expressions[682]); +getExpressionInfo(i64.const)={"id":14,"type":2,"value":{"low":6,"high":7}} + expressions[683] = BinaryenConst(the_module, BinaryenLiteralFloat32(8.5)); + BinaryenExpressionGetId(expressions[683]); + BinaryenExpressionGetType(expressions[683]); + BinaryenConstGetValueF32(expressions[683]); +getExpressionInfo(f32.const)={"id":14,"type":3,"value":8.5} + expressions[684] = BinaryenConst(the_module, BinaryenLiteralFloat64(9.5)); + BinaryenExpressionGetId(expressions[684]); + BinaryenExpressionGetType(expressions[684]); + BinaryenConstGetValueF64(expressions[684]); +getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} + { + BinaryenExpressionRef children[] = { expressions[24], expressions[26], expressions[28], expressions[30], expressions[32], + expressions[34], expressions[36], expressions[38], expressions[40], expressions[42], expressions[44], + expressions[46], expressions[48], expressions[50], expressions[52], expressions[54], expressions[56], + expressions[58], expressions[60], expressions[62], expressions[64], expressions[66], expressions[68], + expressions[70], expressions[72], expressions[74], expressions[76], expressions[78], expressions[80], + expressions[82], expressions[84], expressions[86], expressions[88], expressions[90], expressions[92], + expressions[94], expressions[96], expressions[98], expressions[100], expressions[102], expressions[104], + expressions[106], expressions[108], expressions[110], expressions[112], expressions[114], expressions[116], + expressions[118], expressions[120], expressions[122], expressions[124], expressions[126], expressions[128], + expressions[130], expressions[132], expressions[134], expressions[136], expressions[138], expressions[140], + expressions[142], expressions[144], expressions[146], expressions[148], expressions[150], expressions[152], + expressions[154], expressions[156], expressions[158], expressions[160], expressions[162], expressions[164], + expressions[166], expressions[168], expressions[170], expressions[172], expressions[174], expressions[176], + expressions[179], expressions[182], expressions[185], expressions[188], expressions[191], expressions[194], + expressions[197], expressions[200], expressions[203], expressions[206], expressions[209], expressions[212], + expressions[215], expressions[218], expressions[221], expressions[224], expressions[227], expressions[230], + expressions[233], expressions[236], expressions[239], expressions[242], expressions[245], expressions[248], + expressions[251], expressions[254], expressions[257], expressions[260], expressions[263], expressions[266], + expressions[269], expressions[272], expressions[275], expressions[278], expressions[281], expressions[284], + expressions[287], expressions[290], expressions[293], expressions[296], expressions[299], expressions[302], + expressions[305], expressions[308], expressions[311], expressions[314], expressions[317], expressions[320], + expressions[323], expressions[326], expressions[329], expressions[332], expressions[335], expressions[338], + expressions[341], expressions[344], expressions[347], expressions[350], expressions[353], expressions[356], + expressions[359], expressions[362], expressions[365], expressions[368], expressions[371], expressions[374], + expressions[377], expressions[380], expressions[383], expressions[386], expressions[389], expressions[392], + expressions[395], expressions[398], expressions[401], expressions[404], expressions[407], expressions[410], + expressions[413], expressions[416], expressions[419], expressions[422], expressions[425], expressions[428], + expressions[431], expressions[434], expressions[437], expressions[440], expressions[443], expressions[446], + expressions[449], expressions[452], expressions[455], expressions[458], expressions[461], expressions[464], + expressions[467], expressions[470], expressions[473], expressions[476], expressions[479], expressions[482], + expressions[485], expressions[488], expressions[491], expressions[494], expressions[497], expressions[500], + expressions[502], expressions[504], expressions[506], expressions[508], expressions[510], expressions[512], + expressions[514], expressions[516], expressions[519], expressions[522], expressions[525], expressions[528], + expressions[531], expressions[534], expressions[537], expressions[540], expressions[543], expressions[546], + expressions[549], expressions[552], expressions[555], expressions[558], expressions[561], expressions[564], + expressions[567], expressions[570], expressions[573], expressions[577], expressions[581], expressions[582], + expressions[586], expressions[590], expressions[591], expressions[592], expressions[593], expressions[595], + expressions[597], expressions[598], expressions[600], expressions[602], expressions[603], expressions[604], + expressions[606], expressions[612], expressions[617], expressions[624], expressions[626], expressions[628], + expressions[631], expressions[633], expressions[635], expressions[637], expressions[639], expressions[640], + expressions[641], expressions[642], expressions[644], expressions[649], expressions[655], expressions[666], + expressions[668], expressions[670], expressions[672], expressions[674], expressions[676], expressions[678], + expressions[679], expressions[680] }; + expressions[685] = BinaryenBlock(the_module, "the-value", children, 253, 0); + } + expressions[686] = BinaryenDrop(the_module, expressions[685]); + { + BinaryenExpressionRef children[] = { expressions[686] }; + expressions[687] = BinaryenBlock(the_module, "the-nothing", children, 1, 0); + } + expressions[688] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); + { + BinaryenExpressionRef children[] = { expressions[687], expressions[688] }; + expressions[689] = BinaryenBlock(the_module, "the-body", children, 2, 0); + } + { + BinaryenType varTypes[] = { 1, 6 }; + functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[1], varTypes, 2, expressions[689]); + } + expressions[690] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); + globals[0] = BinaryenAddGlobal(the_module, "a-global", 1, 0, expressions[690]); + { + BinaryenType paramTypes[] = { 1, 4 }; + functionTypes[2] = BinaryenAddFunctionType(the_module, "fiF", 3, paramTypes, 2); + } + BinaryenAddFunctionImport(the_module, "an-imported", "module", "base", functionTypes[2]); + BinaryenAddGlobalImport(the_module, "a-global-imp", "module", "base", 1); + BinaryenAddEventImport(the_module, "a-event-imp", "module", "base", 0, functionTypes[0]); + exports[0] = BinaryenAddFunctionExport(the_module, "kitchen()sinker", "kitchen_sinker"); + exports[1] = BinaryenAddGlobalExport(the_module, "a-global", "a-global-exp"); + exports[2] = BinaryenAddEventExport(the_module, "a-event", "a-event-exp"); + BinaryenFunctionGetName(functions[0]); + BinaryenFunctionImportGetModule(functions[0]); + BinaryenFunctionImportGetBase(functions[0]); + BinaryenFunctionGetType(functions[0]); + BinaryenFunctionGetNumParams(functions[0]); + BinaryenFunctionGetParam(functions[0], 0); + BinaryenFunctionGetParam(functions[0], 1); + BinaryenFunctionGetParam(functions[0], 2); + BinaryenFunctionGetParam(functions[0], 3); + BinaryenFunctionGetResult(functions[0]); + BinaryenFunctionGetNumVars(functions[0]); + BinaryenFunctionGetVar(functions[0], 0); + BinaryenFunctionGetVar(functions[0], 1); + BinaryenFunctionGetBody(functions[0]); + { + const char* funcNames[] = { "kitchen()sinker" }; + BinaryenSetFunctionTable(the_module, 1, 4294967295, funcNames, 1); + } + expressions[691] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); + { + const char segment0[] = { 104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100 }; + const char segment1[] = { 73, 32, 97, 109, 32, 112, 97, 115, 115, 105, 118, 101 }; + const char* segments[] = { segment0, segment1 }; + int8_t segmentPassive[] = { 0, 1 }; + BinaryenExpressionRef segmentOffsets[] = { expressions[691], expressions[0] }; + BinaryenIndex segmentSizes[] = { 12, 12 }; + BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentPassive, segmentOffsets, segmentSizes, 2, 0); + } + { + BinaryenType paramTypes[] = { 0 }; + functionTypes[3] = BinaryenAddFunctionType(the_module, "v", 0, paramTypes, 0); + } + expressions[692] = BinaryenNop(the_module); + { + BinaryenType varTypes[] = { 0 }; + functions[1] = BinaryenAddFunction(the_module, "starter", functionTypes[3], varTypes, 0, expressions[692]); + } + BinaryenSetStart(the_module, functions[1]); + { + BinaryenType paramTypes[] = { 0 }; + functionTypes[4] = BinaryenAddFunctionType(the_module, NULL, 0, paramTypes, 0); } - expressions[656] = BinaryenPop(the_module, 1); - expressions[657] = BinaryenPush(the_module, expressions[656]); - expressions[658] = BinaryenPop(the_module, 2); - expressions[659] = BinaryenPush(the_module, expressions[658]); - expressions[660] = BinaryenPop(the_module, 3); - expressions[661] = BinaryenPush(the_module, expressions[660]); - expressions[662] = BinaryenPop(the_module, 4); - expressions[663] = BinaryenPush(the_module, expressions[662]); - expressions[664] = BinaryenPop(the_module, 5); - expressions[665] = BinaryenPush(the_module, expressions[664]); - expressions[666] = BinaryenPop(the_module, 6); - expressions[667] = BinaryenPush(the_module, expressions[666]); - expressions[668] = BinaryenNop(the_module); - expressions[669] = BinaryenUnreachable(the_module); - BinaryenExpressionGetId(expressions[30]); - BinaryenExpressionGetType(expressions[30]); - BinaryenUnaryGetOp(expressions[30]); - BinaryenUnaryGetValue(expressions[30]); -getExpressionInfo={"id":15,"type":3,"op":6} - BinaryenExpressionPrint(expressions[30]); -(f32.neg - (f32.const -33.61199951171875) + BinaryenModuleAutoDrop(the_module); + BinaryenModuleSetFeatures(the_module, 255); + BinaryenModuleGetFeatures(the_module); + BinaryenModulePrint(the_module); +(module + (type $vi (func (param i32))) + (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) + (type $fiF (func (param i32 f64) (result f32))) + (type $v (func)) + (type $4 (func)) + (import "module" "base" (global $a-global-imp i32)) + (import "module" "base" (func $an-imported (param i32 f64) (result f32))) + (import "module" "base" (event $a-event-imp (attr 0) (param i32))) + (memory $0 1 256) + (data (i32.const 10) "hello, world") + (data passive "I am passive") + (table $0 1 funcref) + (elem (i32.const 0) "$kitchen()sinker") + (global $a-global i32 (i32.const 1)) + (event $a-event (attr 0) (param i32)) + (export "kitchen_sinker" (func "$kitchen()sinker")) + (export "a-global-exp" (global $a-global)) + (export "a-event-exp" (event $a-event)) + (export "mem" (memory $0)) + (start $starter) + (func "$kitchen()sinker" (; 1 ;) (type $iiIfF) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (local $4 i32) + (local $5 exnref) + (block $the-body (result i32) + (block $the-nothing + (drop + (block $the-value (result i32) + (drop + (i32.clz + (i32.const -10) + ) + ) + (drop + (i64.ctz + (i64.const -22) + ) + ) + (drop + (i32.popcnt + (i32.const -10) + ) + ) + (drop + (f32.neg + (f32.const -33.61199951171875) + ) + ) + (drop + (f64.abs + (f64.const -9005.841) + ) + ) + (drop + (f32.ceil + (f32.const -33.61199951171875) + ) + ) + (drop + (f64.floor + (f64.const -9005.841) + ) + ) + (drop + (f32.trunc + (f32.const -33.61199951171875) + ) + ) + (drop + (f32.nearest + (f32.const -33.61199951171875) + ) + ) + (drop + (f64.sqrt + (f64.const -9005.841) + ) + ) + (drop + (i32.eqz + (i32.const -10) + ) + ) + (drop + (i64.extend_i32_s + (i32.const -10) + ) + ) + (drop + (i64.extend_i32_u + (i32.const -10) + ) + ) + (drop + (i32.wrap_i64 + (i64.const -22) + ) + ) + (drop + (i32.trunc_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_sat_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_sat_f32_s + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_sat_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.trunc_sat_f32_u + (f32.const -33.61199951171875) + ) + ) + (drop + (i32.trunc_sat_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_sat_f64_s + (f64.const -9005.841) + ) + ) + (drop + (i32.trunc_sat_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i64.trunc_sat_f64_u + (f64.const -9005.841) + ) + ) + (drop + (i32.reinterpret_f32 + (f32.const -33.61199951171875) + ) + ) + (drop + (i64.reinterpret_f64 + (f64.const -9005.841) + ) + ) + (drop + (f32.convert_i32_s + (i32.const -10) + ) + ) + (drop + (f64.convert_i32_s + (i32.const -10) + ) + ) + (drop + (f32.convert_i32_u + (i32.const -10) + ) + ) + (drop + (f64.convert_i32_u + (i32.const -10) + ) + ) + (drop + (f32.convert_i64_s + (i64.const -22) + ) + ) + (drop + (f64.convert_i64_s + (i64.const -22) + ) + ) + (drop + (f32.convert_i64_u + (i64.const -22) + ) + ) + (drop + (f64.convert_i64_u + (i64.const -22) + ) + ) + (drop + (f64.promote_f32 + (f32.const -33.61199951171875) + ) + ) + (drop + (f32.demote_f64 + (f64.const -9005.841) + ) + ) + (drop + (f32.reinterpret_i32 + (i32.const -10) + ) + ) + (drop + (f64.reinterpret_i64 + (i64.const -22) + ) + ) + (drop + (i8x16.splat + (i32.const 42) + ) + ) + (drop + (i16x8.splat + (i32.const 42) + ) + ) + (drop + (i32x4.splat + (i32.const 42) + ) + ) + (drop + (i64x2.splat + (i64.const 1958505087099) + ) + ) + (drop + (f32x4.splat + (f32.const 42) + ) + ) + (drop + (f64x2.splat + (f64.const 42) + ) + ) + (drop + (v128.not + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.sqrt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.neg + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.sqrt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.trunc_sat_f32x4_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.trunc_sat_f32x4_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.trunc_sat_f64x2_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.trunc_sat_f64x2_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.convert_i32x4_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.convert_i32x4_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.convert_i64x2_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.convert_i64x2_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32.add + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (f64.sub + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (i32.div_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.div_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.rem_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.rem_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.and + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.or + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.xor + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.shl + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.shr_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.shr_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.rotl + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.rotr + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (f32.div + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.copysign + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f32.min + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.max + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (i32.eq + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (f32.ne + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (i32.lt_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.lt_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i64.le_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.le_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.gt_s + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (i32.gt_u + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i32.ge_s + (i32.const -10) + (i32.const -11) + ) + ) + (drop + (i64.ge_u + (i64.const 4294967274) + (i64.const 4294967273) + ) + ) + (drop + (f32.lt + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (f64.le + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f64.gt + (f64.const -9005.841) + (f64.const -9007.333) + ) + ) + (drop + (f32.ge + (f32.const -33.61199951171875) + (f32.const -62.5) + ) + ) + (drop + (i8x16.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.lt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.lt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.gt_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.gt_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.le_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.le_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ge_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.ge_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.eq + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.lt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.gt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.le + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ne + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.lt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.gt + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.le + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ge + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ( + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (drop + (i8x16.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.add_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.add_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.sub_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.add_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub_saturate_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.sub_saturate_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.div + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.min + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.max + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.add + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.sub + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.div + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.min + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.max + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.extract_lane_s 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.extract_lane_u 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.extract_lane_s 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.extract_lane_u 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i64x2.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.extract_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i8x16.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i32x4.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 42) + ) + ) + (drop + (i64x2.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i64.const 184683593770) + ) + ) + (drop + (f32x4.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (f32.const 42) + ) + ) + (drop + (f64x2.replace_lane 1 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (f64.const 42) + ) + ) + (drop + (i8x16.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i8x16.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i8x16.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i16x8.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i32x4.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shl + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shr_s + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (i64x2.shr_u + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (i32.const 1) + ) + ) + (drop + (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (v128.bitselect + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (memory.init 0 + (i32.const 1024) + (i32.const 0) + (i32.const 12) + ) + (data.drop 0) + (memory.copy + (i32.const 2048) + (i32.const 1024) + (i32.const 12) + ) + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + (block + ) + (if + (i32.const 1) + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + (if + (i32.const 4) + (drop + (i32.const 5) + ) + ) + (drop + (loop $in (result i32) + (i32.const 0) + ) + ) + (drop + (loop (result i32) + (i32.const 0) + ) + ) + (drop + (br_if $the-value + (i32.const 1) + (i32.const 0) + ) + ) + (br_if $the-nothing + (i32.const 2) + ) + (br $the-value + (i32.const 3) + ) + (br $the-nothing) + (br_table $the-value $the-value + (i32.const 1) + (i32.const 0) + ) + (br_table $the-nothing $the-nothing + (i32.const 2) + ) + (drop + (i32.eqz + (call "$kitchen()sinker" + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + ) + (drop + (i32.eqz + (i32.trunc_f32_s + (call $an-imported + (i32.const 13) + (f64.const 3.7) + ) + ) + ) + ) + (drop + (i32.eqz + (call_indirect (type $iiIfF) + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + (i32.const 2449) + ) + ) + ) + (drop + (local.get $0) + ) + (local.set $0 + (i32.const 101) + ) + (drop + (local.tee $0 + (i32.const 102) + ) + ) + (drop + (i32.load + (i32.const 1) + ) + ) + (drop + (i64.load16_s offset=2 align=1 + (i32.const 8) + ) + ) + (drop + (f32.load + (i32.const 2) + ) + ) + (drop + (f64.load offset=2 + (i32.const 9) + ) + ) + (i32.store + (i32.const 10) + (i32.const 11) + ) + (i64.store offset=2 align=4 + (i32.const 110) + (i64.const 111) + ) + (drop + (select + (i32.const 3) + (i32.const 5) + (i32.const 1) + ) + ) + (return + (i32.const 1337) + ) + (return_call "$kitchen()sinker" + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + (return_call_indirect (type $iiIfF) + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + (i32.const 2449) + ) + (try + (throw $a-event + (i32.const 0) + ) + (catch + (local.set $5 + (exnref.pop) + ) + (drop + (block $try-block (result i32) + (rethrow + (br_on_exn $try-block $a-event + (local.get $5) + ) + ) + ) + ) + ) + ) + (push + (i32.pop) + ) + (push + (i64.pop) + ) + (push + (f32.pop) + ) + (push + (f64.pop) + ) + (push + (v128.pop) + ) + (push + (exnref.pop) + ) + (nop) + (unreachable) + ) + ) + ) + (i32.const 42) + ) + ) + (func $starter (; 2 ;) (type $v) + (nop) + ) ) - expressions[670] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - BinaryenExpressionGetId(expressions[670]); - BinaryenExpressionGetType(expressions[670]); - BinaryenConstGetValueI32(expressions[670]); -getExpressionInfo(i32.const)={"id":14,"type":1,"value":5} - expressions[671] = BinaryenConst(the_module, BinaryenLiteralInt64(30064771078)); - BinaryenExpressionGetId(expressions[671]); - BinaryenExpressionGetType(expressions[671]); - BinaryenConstGetValueI64Low(expressions[671]); - BinaryenConstGetValueI64High(expressions[671]); -getExpressionInfo(i64.const)={"id":14,"type":2,"value":{"low":6,"high":7}} - expressions[672] = BinaryenConst(the_module, BinaryenLiteralFloat32(8.5)); - BinaryenExpressionGetId(expressions[672]); - BinaryenExpressionGetType(expressions[672]); - BinaryenConstGetValueF32(expressions[672]); -getExpressionInfo(f32.const)={"id":14,"type":3,"value":8.5} - expressions[673] = BinaryenConst(the_module, BinaryenLiteralFloat64(9.5)); - BinaryenExpressionGetId(expressions[673]); - BinaryenExpressionGetType(expressions[673]); - BinaryenConstGetValueF64(expressions[673]); -getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} - { - BinaryenExpressionRef children[] = { expressions[24], expressions[26], expressions[28], expressions[30], expressions[32], - expressions[34], expressions[36], expressions[38], expressions[40], expressions[42], expressions[44], - expressions[46], expressions[48], expressions[50], expressions[52], expressions[54], expressions[56], - expressions[58], expressions[60], expressions[62], expressions[64], expressions[66], expressions[68], - expressions[70], expressions[72], expressions[74], expressions[76], expressions[78], expressions[80], - expressions[82], expressions[84], expressions[86], expressions[88], expressions[90], expressions[92], - expressions[94], expressions[96], expressions[98], expressions[100], expressions[102], expressions[104], - expressions[106], expressions[108], expressions[110], expressions[112], expressions[114], expressions[116], - expressions[118], expressions[120], expressions[122], expressions[124], expressions[126], expressions[128], - expressions[130], expressions[132], expressions[134], expressions[136], expressions[138], expressions[140], - expressions[142], expressions[144], expressions[146], expressions[148], expressions[150], expressions[152], - expressions[154], expressions[156], expressions[158], expressions[160], expressions[162], expressions[164], - expressions[166], expressions[168], expressions[170], expressions[172], expressions[174], expressions[176], - expressions[179], expressions[182], expressions[185], expressions[188], expressions[191], expressions[194], - expressions[197], expressions[200], expressions[203], expressions[206], expressions[209], expressions[212], - expressions[215], expressions[218], expressions[221], expressions[224], expressions[227], expressions[230], - expressions[233], expressions[236], expressions[239], expressions[242], expressions[245], expressions[248], - expressions[251], expressions[254], expressions[257], expressions[260], expressions[263], expressions[266], - expressions[269], expressions[272], expressions[275], expressions[278], expressions[281], expressions[284], - expressions[287], expressions[290], expressions[293], expressions[296], expressions[299], expressions[302], - expressions[305], expressions[308], expressions[311], expressions[314], expressions[317], expressions[320], - expressions[323], expressions[326], expressions[329], expressions[332], expressions[335], expressions[338], - expressions[341], expressions[344], expressions[347], expressions[350], expressions[353], expressions[356], - expressions[359], expressions[362], expressions[365], expressions[368], expressions[371], expressions[374], - expressions[377], expressions[380], expressions[383], expressions[386], expressions[389], expressions[392], - expressions[395], expressions[398], expressions[401], expressions[404], expressions[407], expressions[410], - expressions[413], expressions[416], expressions[419], expressions[422], expressions[425], expressions[428], - expressions[431], expressions[434], expressions[437], expressions[440], expressions[443], expressions[446], - expressions[449], expressions[452], expressions[455], expressions[458], expressions[461], expressions[464], - expressions[467], expressions[470], expressions[473], expressions[476], expressions[479], expressions[482], - expressions[485], expressions[488], expressions[491], expressions[494], expressions[497], expressions[500], - expressions[502], expressions[504], expressions[506], expressions[508], expressions[510], expressions[512], - expressions[514], expressions[516], expressions[519], expressions[522], expressions[525], expressions[528], - expressions[531], expressions[534], expressions[537], expressions[540], expressions[543], expressions[546], - expressions[549], expressions[552], expressions[555], expressions[558], expressions[561], expressions[564], - expressions[567], expressions[570], expressions[573], expressions[577], expressions[581], expressions[582], - expressions[586], expressions[590], expressions[591], expressions[592], expressions[593], expressions[595], - expressions[597], expressions[598], expressions[600], expressions[602], expressions[603], expressions[604], - expressions[606], expressions[612], expressions[617], expressions[624], expressions[626], expressions[628], - expressions[631], expressions[633], expressions[635], expressions[637], expressions[639], expressions[640], - expressions[641], expressions[642], expressions[644], expressions[649], expressions[655], expressions[657], - expressions[659], expressions[661], expressions[663], expressions[665], expressions[667], expressions[668], - expressions[669] }; - expressions[674] = BinaryenBlock(the_module, "the-value", children, 252, 0); - } - expressions[675] = BinaryenDrop(the_module, expressions[674]); - { - BinaryenExpressionRef children[] = { expressions[675] }; - expressions[676] = BinaryenBlock(the_module, "the-nothing", children, 1, 0); - } - expressions[677] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - BinaryenExpressionRef children[] = { expressions[676], expressions[677] }; - expressions[678] = BinaryenBlock(the_module, "the-body", children, 2, 0); - } - { - BinaryenType varTypes[] = { 1 }; - functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[0], varTypes, 1, expressions[678]); - } - expressions[679] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - globals[0] = BinaryenAddGlobal(the_module, "a-global", 1, 0, expressions[679]); - { - BinaryenType paramTypes[] = { 1 }; - functionTypes[1] = BinaryenAddFunctionType(the_module, "vi", 0, paramTypes, 1); - } - BinaryenAddEvent(the_module, "a-event", 0, functionTypes[1]); - { - BinaryenType paramTypes[] = { 1, 4 }; - functionTypes[2] = BinaryenAddFunctionType(the_module, "fiF", 3, paramTypes, 2); - } - BinaryenAddFunctionImport(the_module, "an-imported", "module", "base", functionTypes[2]); - BinaryenAddGlobalImport(the_module, "a-global-imp", "module", "base", 1); - BinaryenAddEventImport(the_module, "a-event-imp", "module", "base", 0, functionTypes[1]); - exports[0] = BinaryenAddFunctionExport(the_module, "kitchen()sinker", "kitchen_sinker"); - exports[1] = BinaryenAddGlobalExport(the_module, "a-global", "a-global-exp"); - exports[2] = BinaryenAddEventExport(the_module, "a-event", "a-event-exp"); - BinaryenFunctionGetName(functions[0]); - BinaryenFunctionImportGetModule(functions[0]); - BinaryenFunctionImportGetBase(functions[0]); - BinaryenFunctionGetType(functions[0]); - BinaryenFunctionGetNumParams(functions[0]); - BinaryenFunctionGetParam(functions[0], 0); - BinaryenFunctionGetParam(functions[0], 1); - BinaryenFunctionGetParam(functions[0], 2); - BinaryenFunctionGetParam(functions[0], 3); - BinaryenFunctionGetResult(functions[0]); - BinaryenFunctionGetNumVars(functions[0]); - BinaryenFunctionGetVar(functions[0], 0); - BinaryenFunctionGetBody(functions[0]); - { - const char* funcNames[] = { "kitchen()sinker" }; - BinaryenSetFunctionTable(the_module, 1, 4294967295, funcNames, 1); - } - expressions[680] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - { - const char segment0[] = { 104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100 }; - const char segment1[] = { 73, 32, 97, 109, 32, 112, 97, 115, 115, 105, 118, 101 }; - const char* segments[] = { segment0, segment1 }; - int8_t segmentPassive[] = { 0, 1 }; - BinaryenExpressionRef segmentOffsets[] = { expressions[680], expressions[0] }; - BinaryenIndex segmentSizes[] = { 12, 12 }; - BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentPassive, segmentOffsets, segmentSizes, 2, 0); - } - { - BinaryenType paramTypes[] = { 0 }; - functionTypes[3] = BinaryenAddFunctionType(the_module, "v", 0, paramTypes, 0); - } - expressions[681] = BinaryenNop(the_module); - { - BinaryenType varTypes[] = { 0 }; - functions[1] = BinaryenAddFunction(the_module, "starter", functionTypes[3], varTypes, 0, expressions[681]); - } - BinaryenSetStart(the_module, functions[1]); - { - BinaryenType paramTypes[] = { 0 }; - functionTypes[4] = BinaryenAddFunctionType(the_module, NULL, 0, paramTypes, 0); - } - BinaryenModuleAutoDrop(the_module); - BinaryenModuleSetFeatures(the_module, 255); - BinaryenModuleGetFeatures(the_module); BinaryenModuleValidate(the_module); BinaryenModulePrint(the_module); (module - (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) (type $vi (func (param i32))) + (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) (type $fiF (func (param i32 f64) (result f32))) (type $v (func)) (type $4 (func)) @@ -3497,6 +6381,7 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} (start $starter) (func "$kitchen()sinker" (; 1 ;) (type $iiIfF) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) + (local $5 exnref) (block $the-body (result i32) (block $the-nothing (drop @@ -4842,6 +7727,25 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} (f64.const 3.7) (i32.const 2449) ) + (try + (throw $a-event + (i32.const 0) + ) + (catch + (local.set $5 + (exnref.pop) + ) + (drop + (block $try-block (result i32) + (rethrow + (br_on_exn $try-block $a-event + (local.get $5) + ) + ) + ) + ) + ) + ) (push (i32.pop) ) -- cgit v1.2.3