From 79f21902b0d5a270f2fdc4d69a070fac0527f6d1 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Mon, 8 Jun 2026 15:26:39 +0100 Subject: [PATCH 1/7] feat(emit): reserve linear-memory region map with trace-ring region emit.rs becomes the single owner of linear-memory byte layout. Reserve a 512-byte region at the bottom of memory ([0, RING_BYTES)) for the trace buffer; the literal data pool now starts at RING_BYTES instead of 0. Add a compile-time assert that the data pool cannot grow into the host-IO scratch window, turning a previously silent collision into a hard error. --- src/passes/wasm/emit.rs | 100 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 92 insertions(+), 8 deletions(-) diff --git a/src/passes/wasm/emit.rs b/src/passes/wasm/emit.rs index d9a16d9..f4bebe4 100644 --- a/src/passes/wasm/emit.rs +++ b/src/passes/wasm/emit.rs @@ -53,6 +53,30 @@ use wasm_encoder::{ use super::ir::*; use super::runtime_contract::import_key; +// ── linear-memory map ──────────────────────────────────────────── +// +// emit is the single owner of linear-memory byte layout. The linker +// remaps symbol *indices* (which global, which data segment); the +// *byte offsets* of everything in linear memory are assigned here. +// +// Layout of the single memory page (64 KiB): +// +// [0, RING_BYTES) trace ring region (reserved) +// [RING_BYTES, SCRATCH_BASE) literal data pool (grows up at compile time) +// [SCRATCH_BASE, 64 KiB) host-IO scratch window +// +// SCRATCH_BASE is the host-exchange window the JS interop bounces +// bytes through. It is declared in the runtime WAT today; this constant +// is the layout authority's copy used to bound the data pool. + +/// Trace-ring region at the bottom of memory. 64 frames x 8 bytes +/// (`(module_id, cps_id)` pairs) = 512 bytes. +const RING_BYTES: u32 = 64 * 8; + +/// Host-IO scratch window base. Must match the runtime WAT's +/// `SCRATCH_BASE` global (`interop/js/interop.wat`). +const SCRATCH_BASE: u32 = 0xC000; + /// Output of `emit::emit`. The binary plus a per-InstrId map of absolute /// byte offsets in the binary. Only InstrIds that were tagged with a /// `cps_id` in lower (and thus need to participate in mark finalisation) @@ -160,6 +184,7 @@ fn linked_runtime(interop: Interop) -> &'static LinkedRuntime { let modules: &[(&str, &str)] = &[ ("interop.wat", interop_src), ("rt/apply.wat", include_str!("../../runtime/rt/apply.wat")), + ("rt/trace.wat", include_str!("../../runtime/rt/trace.wat")), ("rt/opaque.wat", include_str!("../../runtime/rt/opaque.wat")), ("rt/modules.wat", include_str!("../../runtime/rt/modules.wat")), ("rt/protocols.wat", include_str!("../../runtime/rt/protocols.wat")), @@ -713,15 +738,26 @@ pub fn emit_with_offsets(frag: &Fragment, interop: Interop) -> EmitOutput { }; // Data: lay out user fragment's `frag.data` blobs sequentially in - // memory starting at offset 0. Each `DataSym(i)` resolves to the - // running offset, used by `Operand::DataRef` at emit time. + // memory starting at `RING_BYTES` (the bottom region is reserved for + // the trace ring). Each `DataSym(i)` resolves to its absolute byte + // offset, used by `Operand::DataRef` at emit time. let mut data_offsets: Vec = Vec::with_capacity(frag.data.len()); let mut data_blob: Vec = Vec::new(); for d in &frag.data { - data_offsets.push(data_blob.len() as u32); + data_offsets.push(RING_BYTES + data_blob.len() as u32); data_blob.extend_from_slice(&d.bytes); } + // The data pool must not grow into the host-IO scratch window. Data + // size is fully known here, so this is a hard compile-time invariant. + let data_top = RING_BYTES + data_blob.len() as u32; + assert!( + data_top <= SCRATCH_BASE, + "literal data pool ({} bytes ending at {data_top:#x}) overflows into \ + the host-IO scratch window at {SCRATCH_BASE:#x}", + data_blob.len(), + ); + // Code: runtime's bodies raw, then user's bodies encoded. let mut code_sec = CodeSection::new(); for body in &rt.code_bodies_raw { @@ -738,16 +774,16 @@ pub fn emit_with_offsets(frag: &Fragment, interop: Interop) -> EmitOutput { user_body_offsets.push((final_idx, body_offsets)); } - // Data section: one active segment at offset 0 in memory 0 holding - // the concatenated blobs. Skip if there's no data. + // Data section: one active segment at `RING_BYTES` in memory 0 + // holding the concatenated blobs. Skip if there's no data. let data_sec = if data_blob.is_empty() { None } else { let mut sec = wasm_encoder::DataSection::new(); sec.active( - 0, // memory index - &ConstExpr::i32_const(0), // offset - data_blob.iter().copied(), // bytes + 0, // memory index + &ConstExpr::i32_const(RING_BYTES as i32), // offset + data_blob.iter().copied(), // bytes ); Some(sec) }; @@ -1186,6 +1222,54 @@ mod tests { assert!(!lr.bytes.is_empty(), "JS runtime should link to non-empty bytes"); } + /// The linear-memory map reserves a RING region at the bottom of + /// memory; the literal data pool must start at `RING_BYTES`, not at + /// offset 0. Asserted via the emitted data section's active-segment + /// offset. + #[test] + fn data_pool_starts_above_ring_region() { + let mut frag = Fragment::default(); + frag.data.push(DataDecl { bytes: b"hi".to_vec(), display: None }); + + let bytes = emit(&frag, Interop::Js); + + let mut seg_offset: Option = None; + let parser = wasmparser::Parser::new(0); + for payload in parser.parse_all(&bytes) { + if let Ok(wasmparser::Payload::DataSection(reader)) = payload { + for data in reader.into_iter().flatten() { + if let wasmparser::DataKind::Active { offset_expr, .. } = data.kind { + let mut ops = offset_expr.get_operators_reader(); + if let Ok(wasmparser::Operator::I32Const { value }) = ops.read() { + seg_offset = Some(value as u32 as u64); + } + } + } + } + } + + assert_eq!( + seg_offset, + Some(RING_BYTES as u64), + "data active segment should start at RING_BYTES ({RING_BYTES}), \ + leaving [0, RING_BYTES) reserved for the trace ring" + ); + } + + /// The data pool growing into the scratch window is a hard compile- + /// time error, not silent corruption. + #[test] + #[should_panic(expected = "overflows into the host-IO scratch window")] + fn data_pool_overflowing_scratch_window_panics() { + let mut frag = Fragment::default(); + // One blob large enough that RING_BYTES + len exceeds SCRATCH_BASE. + frag.data.push(DataDecl { + bytes: vec![0u8; SCRATCH_BASE as usize], + display: None, + }); + emit(&frag, Interop::Js); + } + #[test] fn js_runtime_exports_i31_helpers() { let lr = linked_runtime(Interop::Js); From c2c83ed4cb14491a56bb98111c1627a6a1d675e2 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Mon, 8 Jun 2026 15:26:49 +0100 Subject: [PATCH 2/7] feat(trace): portable trace buffer; instrument user-fn call sites Add rt/trace.wat: a fixed-size ring of recent user-fn call sites in linear memory. Because Fink compiles every call to a tail call, there is no native wasm stack to walk; this ring is the portable substitute, in linear memory so a host can read it even after a hard trap, on any runtime. trace_push(module_id, cps_id) records a call site and advances the ring index modulo trace_len. Lowering emits it at every user-function call site (the Callable::Val apply_3 arm), before dispatch. Continuation returns and builtin/runtime calls are not instrumented. Both interop WATs import trace_push to keep rt/trace.wat in the link and the func alive. Snapshots re-blessed for the added trace_push lines. --- src/passes/wasm/lower.rs | 15 +++++ src/passes/wasm/mod.rs | 16 ++++++ src/passes/wasm/runtime_contract.rs | 7 +++ src/passes/wasm/test_bindings.fnk | 6 +- src/passes/wasm/test_effects.fnk | 4 +- src/passes/wasm/test_functions.fnk | 85 ++++++++++++++++++++++++---- src/passes/wasm/test_io.fnk | 6 +- src/passes/wasm/test_linking.fnk | 14 ++++- src/passes/wasm/test_records.fnk | 7 ++- src/passes/wasm/test_sets.fnk | 39 +++++++++++-- src/passes/wasm/test_strings.fnk | 14 ++++- src/runtime/interop/js/interop.wat | 4 ++ src/runtime/interop/rust/interop.wat | 4 ++ src/runtime/rt/trace.wat | 59 +++++++++++++++++++ 14 files changed, 253 insertions(+), 27 deletions(-) create mode 100644 src/runtime/rt/trace.wat diff --git a/src/passes/wasm/lower.rs b/src/passes/wasm/lower.rs index 05215e7..3d3d4b0 100644 --- a/src/passes/wasm/lower.rs +++ b/src/passes/wasm/lower.rs @@ -70,6 +70,9 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { // harmless here; lower_ctx never emits a call to it. usage.mark(runtime_contract::Sym::Apply3); usage.mark(runtime_contract::Sym::Fn3); + // Every user-fn call site emits a trace_push recording the call site + // into the trace buffer (rt/trace.wat). + usage.mark(runtime_contract::Sym::TracePush); // Per-module wrapper synthesised below uses init_module and the // closure/captures/str primitives. usage.mark(runtime_contract::Sym::ModulesInitModule); @@ -1069,6 +1072,7 @@ fn lower_expr( let (ctx_op, rest_args) = split_ctx_arg(lcx, ctx, args); let l_args_list = build_args_list(lcx, ctx, rest_args); + push_trace_point(lcx, ctx, expr.id); let i_app = push_return_call(lcx.frag, lcx.rt.apply_3(), vec![op_local(l_args_list), ctx_op, op_local(callee)]); set_cps_id(lcx.frag, i_app, expr.id); @@ -1328,6 +1332,17 @@ fn unbox_anyref( /// `done`) or a Cont::Expr (lifted into a closure — not handled here /// since the lifting pass already produces that as App(FnClosure) /// ahead of the tail call). +/// Emit a `trace_push(module_id, cps_id)` recording this call site into +/// the trace buffer, immediately before the user-fn dispatch. `cps_id` +/// is the Apply node's id (the call site); `module_id` is the fragment's +/// own id. Together they identify the site package-wide. +fn push_trace_point(lcx: &mut LowerCtx<'_>, ctx: &mut FnCtx, call_site: CpsId) { + let module_id = lit_i32(lcx.frag.module_id.0 as i32); + let cps_id = lit_i32(call_site.0 as i32); + let i = push_call(lcx.frag, lcx.rt.trace_push(), vec![module_id, cps_id], None); + ctx.instrs.push(i); +} + /// Build the `apply_3` args list from a heterogeneous arg sequence. /// /// Two-phase to keep the locals/instr order stable across changes: diff --git a/src/passes/wasm/mod.rs b/src/passes/wasm/mod.rs index db91801..29883b7 100644 --- a/src/passes/wasm/mod.rs +++ b/src/passes/wasm/mod.rs @@ -306,6 +306,22 @@ mod tests { /// helpers (args_empty + args_prepend) to construct. That full /// execution handshake is exercised by emit_executes_42 below. #[cfg(feature = "run")] + /// A user-function call site emits a `trace_push` recording the + /// call-site `(module_id, cps_id)` into the trace buffer, before the + /// `apply_3` dispatch. Builtin/runtime calls do NOT push. + #[test] + fn user_call_emits_trace_push() { + let out = wat("\ +add = fn a, b: + a + b +add 3, 4 +"); + assert!( + out.contains("rt/trace.wat:trace_push"), + "user-fn call should emit a trace_push at the call site; got:\n{out}" + ); + } + #[test] fn emit_instantiates_in_wasmtime() { use wasmtime::{Config, Engine, Module, Store, Linker, Error, ExternType}; diff --git a/src/passes/wasm/runtime_contract.rs b/src/passes/wasm/runtime_contract.rs index 0088a4a..bccde01 100644 --- a/src/passes/wasm/runtime_contract.rs +++ b/src/passes/wasm/runtime_contract.rs @@ -99,6 +99,9 @@ pub enum Sym { // 2c-B; until then, references are emitted as imports that will // remain unresolved (Phase A is shape-only, not runnable). Apply3, + // TracePush records a call site (module_id, cps_id) into the trace + // buffer ring. Signature `(i32, i32) -> ()`. Defined in rt/trace.wat. + TracePush, // ── polymorphic protocol operators (rt/protocols.wat) ───────── // All binary operators share the shape (anyref, anyref, anyref) @@ -333,6 +336,7 @@ pub struct Runtime { args_concat: Option, apply: Option, apply_3: Option, + trace_push: Option, // polymorphic protocol operators op_plus: Option, op_minus: Option, @@ -427,6 +431,7 @@ impl Runtime { pub fn str_match(&self) -> FuncSym { self.str_match.expect("rt: str_match not declared") } pub fn apply(&self) -> FuncSym { self.apply.expect("rt: _apply not declared") } pub fn apply_3(&self) -> FuncSym { self.apply_3.expect("rt: apply_3 not declared") } + pub fn trace_push(&self) -> FuncSym { self.trace_push.expect("rt: trace_push not declared") } pub fn fn3(&self) -> TypeSym { self.fn3.expect("rt: Fn3 not declared") } /// Look up the runtime func for a protocol operator `Sym`. Panics @@ -511,6 +516,7 @@ pub(super) fn import_key(sym: Sym) -> &'static str { Sym::VarArgs => "rt/apply.wat:VarArgs", Sym::Apply => "rt/apply.wat:apply", Sym::Apply3 => "rt/apply.wat:apply_3", + Sym::TracePush => "rt/trace.wat:trace_push", Sym::ArgsHead => "rt/apply.wat:args_head", Sym::ArgsTail => "rt/apply.wat:args_tail", @@ -663,6 +669,7 @@ pub fn declare(frag: &mut Fragment, usage: &RuntimeUsage) -> Runtime { if needed.contains(&Sym::ArgsConcat) { rt.args_concat = Some(FuncSym::Runtime(Sym::ArgsConcat)); } if needed.contains(&Sym::Apply) { rt.apply = Some(FuncSym::Runtime(Sym::Apply)); } if needed.contains(&Sym::Apply3) { rt.apply_3 = Some(FuncSym::Runtime(Sym::Apply3)); } + if needed.contains(&Sym::TracePush) { rt.trace_push = Some(FuncSym::Runtime(Sym::TracePush)); } for sym in BINARY_OPS { if needed.contains(sym) { diff --git a/src/passes/wasm/test_bindings.fnk b/src/passes/wasm/test_bindings.fnk index 603523a..52f6b46 100644 --- a/src/passes/wasm/test_bindings.fnk +++ b/src/passes/wasm/test_bindings.fnk @@ -240,6 +240,7 @@ test 'binding rhs is a call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_15) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_14) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_45) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 21)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -258,7 +259,7 @@ test 'binding rhs is a call', fn: (data $d_1 "x") (data $d_2 "add") ) - ;; sm:LoIFAJgBAJoBAJIBAJoBAJIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQCYDQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQC0BQB6AOYBAIwBAA + ;; sm:L4IFAJgBAJoBAJIBAJoBAJIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQCYDQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQCCAQC0BQB6AOYBAIwBAA @@ -401,6 +402,7 @@ test 'top-level rec destructure then fn using binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_47) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_44) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 49)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -440,6 +442,6 @@ test 'top-level rec destructure then fn using binding', fn: (data $d_1 "foo") (data $d_2 "x") ) - ;; sm:VL4IAJoBAJoBAJIBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCwCQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA + ;; sm:Vb4IAJoBAJoBAJIBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCAQCwCQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_effects.fnk b/src/passes/wasm/test_effects.fnk index 741bc8f..20fc671 100644 --- a/src/passes/wasm/test_effects.fnk +++ b/src/passes/wasm/test_effects.fnk @@ -32,6 +32,7 @@ test 'set_ctx import + call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_114) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 31)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_ctx_0)) ) (func $test::v_81 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -122,6 +123,7 @@ test 'set_ctx import + call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "rt/apply.wat" "set_ctx" (func $rt/apply.wat:set_ctx (type $std/dict.wat:Fn_rec_new))) @@ -157,4 +159,4 @@ test 'set_ctx import + call', fn: (data $d_1 "set_ctx") (data $d_2 "test") ) - ;; sm:RYYIAJYBALoBAMYBAQIHXAFSBZIBAG4AwgEAxAEA-gYAlgEAmgEAlgEAugEAxgEAbgC-AQDCCACWAQC6AQDGAQDGAQC4AQDQAQFTIZIBAQAhtgYAugEAxgEAbgDCCACaAQCaAQCaAQCaAQCUAQDgAQDQAQC2AQDQAQEAIbQEAFgApAkAlAEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvAEAvgEAvgEAgAoAmAEAtAEA0gEAZAB-AKQBAJYCAG4AxAEApAUAegDmAQCMAQA + ;; sm:R4YIAJYBALoBAMYBAQIHXAFSBZIBAG4AwgEAxAEAggEA-gYAlgEAmgEAlgEAugEAxgEAbgC-AQDCCACWAQC6AQDGAQDGAQC4AQDQAQFTIZIBAQAhtgYAugEAxgEAbgDCCACaAQCaAQCaAQCaAQCUAQDgAQDQAQC2AQDQAQEAIbQEAFgApAkAlAEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvAEAvgEAvgEAggEAgAoAmAEAtAEA0gEAZAB-AKQBAJYCAG4AxAEApAUAegDmAQCMAQA diff --git a/src/passes/wasm/test_functions.fnk b/src/passes/wasm/test_functions.fnk index 35412e7..38cb697 100644 --- a/src/passes/wasm/test_functions.fnk +++ b/src/passes/wasm/test_functions.fnk @@ -50,6 +50,7 @@ test 'user fn call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_14) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_13) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_3) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 17)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -65,7 +66,7 @@ test 'user fn call', fn: (data $d_0 "test") (data $d_1 "add") ) - ;; sm:HIIFAJgBAJoBAJIBAJoBAJIBASIFngsAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABALQFAHoA5gEAjAEA + ;; sm:HYIFAJgBAJoBAJIBAJoBAJIBASIFngsAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABAIIBALQFAHoA5gEAjAEA test 'chained fn calls', fn: @@ -131,6 +132,7 @@ test 'chained fn calls', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_x_68) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_70) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 30)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inc_69)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -181,6 +183,7 @@ test 'chained fn calls', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_23) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_65) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 34)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_double_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -202,7 +205,7 @@ test 'chained fn calls', fn: (data $d_2 "double") (data $d_3 "inc") ) - ;; sm:PYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQD4EACYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BALoFAHoA5gEAjAEA + ;; sm:P4gFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQCCAQD4EACYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BAIIBALoFAHoA5gEAjAEA test 'pipe unary', fn: @@ -253,6 +256,7 @@ test 'pipe unary', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_23) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_61) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 28)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inc_60)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -300,6 +304,7 @@ test 'pipe unary', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_21) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_57) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 30)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_double_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -318,7 +323,7 @@ test 'pipe unary', fn: (data $d_1 "double") (data $d_2 "inc") ) - ;; sm:M4gFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQCOEACYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQC6BQB6AOYBAIwBAA + ;; sm:NYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQCCAQCOEACYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQCCAQC6BQB6AOYBAIwBAA test 'match literal first arm', fn: @@ -349,6 +354,7 @@ test 'match literal first arm', fn: (local.set $:succ_128 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_128) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 33)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_127)) ) (func $test::v_118 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -420,6 +426,7 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_4) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_31) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 34)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_19)) ) (func $test::v_176 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -448,6 +455,7 @@ test 'match literal first arm', fn: (local.set $:v_165 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_39) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 50)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_165)) ) (func $test::v_140 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -472,6 +480,7 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_145) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_105) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_144) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 58)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_143)) ) (func $test::v_162 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -495,6 +504,7 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_108) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_53) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_156)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -526,6 +536,7 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_0) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 67)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_63)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -539,7 +550,7 @@ test 'match literal first arm', fn: ) (data $d_0 "test") ) - ;; sm:aIgFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAOAMAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA + ;; sm:bogFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCCAQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAOAMAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEAggEApAUAegDmAQCMAQA test 'match with binding', fn: @@ -571,6 +582,7 @@ test 'match with binding', fn: (local.set $:succ_139 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_139) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 35)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_138)) ) (func $test::v_129 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -642,6 +654,7 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_4) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_33) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 36)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_21)) ) (func $test::v_189 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -675,6 +688,7 @@ test 'match with binding', fn: (local.set $:v_176 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_41) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_176)) ) (func $test::v_151 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -699,6 +713,7 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_156) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_116) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_155) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_154)) ) (func $test::v_173 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -722,6 +737,7 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_119) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_57) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 66)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_167)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -766,6 +782,7 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_x_0) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_1) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_67)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -782,7 +799,7 @@ test 'match with binding', fn: (data $d_0 "test") (data $d_1 "x") ) - ;; sm:cogFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPQPAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA + ;; sm:eIgFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCCAQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAPQPAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEAggEApAUAegDmAQCMAQA test 'simple recursion', fn: @@ -816,6 +833,7 @@ test 'simple recursion', fn: (local.set $:succ_161 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_161) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_160)) ) (func $test::v_151 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -887,6 +905,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 38)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_23)) ) (func $test::v_177 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -906,6 +925,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_171) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_recurse_170)) ) (func $test::v_223 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -943,6 +963,7 @@ test 'simple recursion', fn: (local.set $:v_208 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_43) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 61)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_208)) ) (func $test::v_183 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -967,6 +988,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_188) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_138) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_187) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 69)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_186)) ) (func $test::v_205 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -990,6 +1012,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_63) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_141) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_64) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_199)) ) (func $test::v_245 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1028,6 +1051,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 78)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_74)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1056,6 +1080,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_91) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_2) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 94)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_recurse_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1074,7 +1099,7 @@ test 'simple recursion', fn: (data $d_0 "test") (data $d_1 "recurse") ) - ;; sm:igGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQDECgCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQC8BQB6AOYBAIwBAA + ;; sm:kgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAggEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAPYOAJgBAJoBAJIBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCCAQDECgCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA test 'mutual recursion — ping pong', fn: @@ -1103,6 +1128,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 11)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_pong_58)) ) (func $test::v_55 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1123,6 +1149,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_14) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 19)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_ping_50)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1166,6 +1193,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_22) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 25)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_ping_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1185,7 +1213,7 @@ test 'mutual recursion — ping pong', fn: (data $d_1 "ping") (data $d_2 "pong") ) - ;; sm:M_gHAJgBAJoBAJIBALoBAM4BALoBALIBAG4AugEAwAEAzggAmgEAmgEAkgEAugEAzgEAugEAsgEAbgC6AQDCAQDSDgCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABALYFAHoA5gEAjAEA + ;; sm:NvgHAJgBAJoBAJIBALoBAM4BALoBALIBAG4AugEAwAEAggEAzggAmgEAmgEAkgEAugEAzgEAugEAsgEAbgC6AQDCAQCCAQDSDgCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABAIIBALYFAHoA5gEAjAEA test 'mutual recursion — is_even / is_odd', fn: @@ -1222,6 +1250,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:succ_295 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_295) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 39)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_294)) ) (func $test::v_285 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1293,6 +1322,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_37) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $test::v_311 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1312,6 +1342,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_305) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 56)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_odd_304)) ) (func $test::v_357 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1349,6 +1380,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:v_342 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_45) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 63)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_342)) ) (func $test::v_317 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1373,6 +1405,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_322) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_260) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_321) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_320)) ) (func $test::v_339 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1396,6 +1429,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_65) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_263) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_66) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 75)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_333)) ) (func $test::v_483 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1434,6 +1468,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 80)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_76)) ) (func $test::v_467 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1456,6 +1491,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:succ_391 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_391) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 126)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_390)) ) (func $test::v_381 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1527,6 +1563,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_95) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_97) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 127)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_112)) ) (func $test::v_407 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1546,6 +1583,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_139) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_401) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 143)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_even_400)) ) (func $test::v_453 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1583,6 +1621,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:v_438 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_132) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 150)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_438)) ) (func $test::v_413 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1607,6 +1646,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_418) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_272) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_417) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 158)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_416)) ) (func $test::v_435 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1630,6 +1670,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_152) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_275) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_153) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_429)) ) (func $test::v_475 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1668,6 +1709,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_93) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 167)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_163)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1711,6 +1753,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_180) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 183)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_even_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1734,7 +1777,7 @@ test 'mutual recursion — is_even / is_odd', fn: (data $d_1 "is_even") (data $d_2 "is_odd") ) - ;; sm:iQKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEA3A4AmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQC8BQB6AOYBAIwBAA + ;; sm:mAKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQCCAQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIIBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIIBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAggEA9g4AmAEAmgEAkgEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIIBAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAhAEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABAIQBANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAhAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAhAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCEAQCCDwCaAQCaAQCSAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEAhAEA3A4AmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA test 'closure construction and call', fn: @@ -1800,6 +1843,7 @@ test 'closure construction and call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_22) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_67) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 25)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add1_66)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1835,6 +1879,7 @@ test 'closure construction and call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_18) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_51) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 29)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1853,7 +1898,7 @@ test 'closure construction and call', fn: (data $d_1 "add1") (data $d_2 "add") ) - ;; sm:Nu4FAJgBAJoBAJIBALoBAL4BASgFnAcAmAEAmgEAkgEArgEAzgEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEA5gwAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BALQFAHoA5gEAjAEA + ;; sm:OO4FAJgBAJoBAJIBALoBAL4BASgFnAcAmAEAmgEAkgEArgEAzgEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEAggEA5gwAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BAIIBALQFAHoA5gEAjAEA test 'self-recursive fn defined inside another fn', fn: @@ -1891,6 +1936,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:succ_178 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_178) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 41)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_177)) ) (func $test::v_168 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1962,6 +2008,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_12) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 42)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_27)) ) (func $test::v_194 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1981,6 +2028,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_54) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_188) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 58)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inner_187)) ) (func $test::v_240 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2018,6 +2066,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:v_225 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_47) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 65)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_225)) ) (func $test::v_200 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2042,6 +2091,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_205) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_155) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_204) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_203)) ) (func $test::v_222 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2065,6 +2115,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_67) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_158) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_68) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 77)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_216)) ) (func $test::v_266 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2105,6 +2156,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_8) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 82)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_78)) ) (func $test::v_272 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2129,6 +2181,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_95) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inner_2)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2157,6 +2210,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_106) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 109)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_outer_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -2176,7 +2230,7 @@ test 'self-recursive fn defined inside another fn', fn: (data $d_0 "test") (data $d_1 "outer") ) - ;; sm:mgHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAM4KAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAuAUAegDmAQCMAQA + ;; sm:owHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAggEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAIIBAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCCAQC6DwCYAQCaAQCSAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIIBAIQJAJgBAJoBAJIBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAM4KAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA # TODO, duplicate? @@ -2213,6 +2267,7 @@ test 'recursive list sum', fn: (local.set $:succ_296 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_296) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 47)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_295)) ) (func $test::v_268 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2312,6 +2367,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_9) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_11) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_45) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 48)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_33)) ) (func $test::v_314 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2334,6 +2390,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_85) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $rest_307) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_306) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 89)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_sum_305)) ) (func $test::v_402 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2380,6 +2437,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_60) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_59) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_350) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 96)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_349)) ) (func $test::v_322 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2469,6 +2527,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_54) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_101) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 106)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_76)) ) (func $test::v_362 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2493,6 +2552,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_367) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_243) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_366) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 116)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_365)) ) (func $test::v_384 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2516,6 +2576,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_110) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_246) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_111) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 120)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_378)) ) (func $test::v_466 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2557,6 +2618,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $items_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_7) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 125)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_121)) ) (func $test::v_428 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2579,6 +2641,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_151) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_149) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_422) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 154)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_sum_421)) ) (func $test::v_438 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2686,7 +2749,7 @@ test 'recursive list sum', fn: (data $d_0 "test") (data $d_1 "sum") ) - ;; sm:9wHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQAB0AsAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA + ;; sm:gALuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAggEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAIIBAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAggEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAIQBAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAhAEAwg8AmAEAmgEAmgEAmgEAkgEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCEAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQAB0AsAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_io.fnk b/src/passes/wasm/test_io.fnk index 52299d4..b1ece94 100644 --- a/src/passes/wasm/test_io.fnk +++ b/src/passes/wasm/test_io.fnk @@ -31,6 +31,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_82) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stderr_198) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_197) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 86)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $write_196)) ) (func $test::v_219 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -88,6 +89,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_73) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stdout_226) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_163) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 92)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $write_222)) ) (func $test::v_249 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -163,6 +165,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_66) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stdin_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_169) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $read_3)) ) (func $test::v_265 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -357,6 +360,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_113) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_110) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 115)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_57)) ) (import "std/io.fnk" "fink_module" (func $std/io.fnk:fink_module (type $rt/apply.wat:Fn3))) @@ -401,4 +405,4 @@ test 'std io import handling', fn: (data $d_8 "stdout") (data $d_9 "std/io.fnk") ) - ;; sm:wQGMCACWAQC6AQDIAQDGAQDKAQBuAL4BAMgBAMQBAOAMAJYBALoBAMgBAMYBAMoBANABAL4BAaYBGlQAlgIA1AEBVASSAQC0AQDsAQEBDJoLAJYBALoBAMgBAMYBAMoBANABAL4BAMoBAMQCANQBAG4AvgEAyAEAwAEAjA0AlgEAugEAyAEAxgEAygEAygEAoAEAqgEAlAEAlgEAygEA9AIA1AEBMwSSAQCwAQDoAQEBDLYNAJYBAJoBAJYBAJoBAJYBAJoBAJYBAJoBAJYBALoBAMYBAb8BBloBEAZaARAFWAEOBFYBDAVYALoCANQBAWAEkAEAbgDCAQDCAQDAAQCQCQCWAQCaAQCWAQC6AQDIAQDCAQDCAQDCAQDCAQBuAL4BAMABAMABAMABAMABAOIKAJYBAJoBAJYBALoBAMgBAMIBAMIBAMIBAMgBANgCANQBAZsBOpIBAQA65AoAlgEAmgEAlgEAugEAyAEAwgEAwgEAyAEA3gIA1AEBADqSAQEAOp4KAJYBAJoBAJYBALoBAMgBAMIBAMgBALYCANQBAQA6kgEBADrYCQCWAQCaAQCWAQC6AQDIAQDIAQCOAgDUAQEAOpIBAQA6lAkAlgEAugEAyAEAyAEA6AEA1AEBADqSAQEAOr4GALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBADq6BABYAKoJAJYBALoBAMYBALgBANQBAHoA0gEAegDUAQBuAL4BAMABAMABAMoKAJgBAJgBAGgAtAEA1AEAlgEAggEAgAIA5gUAegDmAQCMAQA + ;; sm:xQGMCACWAQC6AQDIAQDGAQDKAQBuAL4BAMgBAMQBAIIBAOAMAJYBALoBAMgBAMYBAMoBANABAL4BAaYBGlQAlgIA1AEBVASSAQC0AQDsAQEBDJoLAJYBALoBAMgBAMYBAMoBANABAL4BAMoBAMQCANQBAG4AvgEAyAEAwAEAggEAjA0AlgEAugEAyAEAxgEAygEAygEAoAEAqgEAlAEAlgEAygEA9AIA1AEBMwSSAQCwAQDoAQEBDLYNAJYBAJoBAJYBAJoBAJYBAJoBAJYBAJoBAJYBALoBAMYBAb8BBloBEAZaARAFWAEOBFYBDAVYALoCANQBAWAEkAEAbgDCAQDCAQDAAQCCAQCQCQCWAQCaAQCWAQC6AQDIAQDCAQDCAQDCAQDCAQBuAL4BAMABAMABAMABAMABAOIKAJYBAJoBAJYBALoBAMgBAMIBAMIBAMIBAMgBANgCANQBAZsBOpIBAQA65AoAlgEAmgEAlgEAugEAyAEAwgEAwgEAyAEA3gIA1AEBADqSAQEAOp4KAJYBAJoBAJYBALoBAMgBAMIBAMgBALYCANQBAQA6kgEBADrYCQCWAQCaAQCWAQC6AQDIAQDIAQCOAgDUAQEAOpIBAQA6lAkAlgEAugEAyAEAyAEA6AEA1AEBADqSAQEAOr4GALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBADq6BABYAKoJAJYBALoBAMYBALgBANQBAHoA0gEAegDUAQBuAL4BAMABAMABAIQBAMoKAJgBAJgBAGgAtAEA1AEAlgEAggEAgAIA5gUAegDmAQCMAQA diff --git a/src/passes/wasm/test_linking.fnk b/src/passes/wasm/test_linking.fnk index 461d455..651fd98 100644 --- a/src/passes/wasm/test_linking.fnk +++ b/src/passes/wasm/test_linking.fnk @@ -28,6 +28,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_114) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 31)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $shrub_0)) ) (func $./test.fnk::v_81 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -118,6 +119,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (func $./test.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -158,6 +160,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $ham_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_30) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 35)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $foo_95)) ) (func $./test_link/simple.fnk::v_146 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -276,6 +279,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_47) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_44) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 49)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (func $./test_link/simple.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -361,7 +365,7 @@ test 'multi module import', fn: (data $d_7 "./test_link/foobar/spam.fnk") (data $d_8 "foo") ) - ;; sm:rAHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAKoIAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAugEAwgEAbgC-AQDCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQC0CQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBASgBiAEBCQbCCgCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA + ;; sm:sAHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAIIBAKoIAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAugEAwgEAbgC-AQDCAQCCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQCCAQC0CQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBASgBiAEBCQbCCgCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA --- @@ -489,6 +493,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (func $./test.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -663,6 +668,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_97) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_94) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 99)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_75)) ) (func $./test_link/diamond.fnk::v_360 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -778,6 +784,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_112) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_109) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 114)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_51)) ) (func $./test_link/diamond.fnk::v_416 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -889,6 +896,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_127) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 129)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_27)) ) (func $./test_link/diamond.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1077,6 +1085,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_42) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 44)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $./test_link/sub/left.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1233,6 +1242,7 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_42) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 44)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $./test_link/sub/right.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1288,4 +1298,4 @@ test 'diamond with two paths to same dep', fn: (data $d_19 "base") (data $d_20 "./test_link/sub/common.fnk") ) - ;; sm:ugPsDwCWAQC6AQDGAQECBVgAbgDCAQCEBwCWAQCaAQCWAQC6AQDGAQBuAL4BAM4IAJYBALoBAMYBAMYBALgBANwBAQEqkgEBACrCBgC6AQDGAQBuAM4IAJoBAJoBAJoBAJoBAJQBAOABANwBALYBANwBAQAqwAQAWACwCQCUAQC6AQDGAQC4AQDeAQB6AN4BAHoA3gEAbgC8AQC-AQC-AQCqCACYAQC0AQDeAQCWAQCCAQCcAgCIBgB6APIBAI4BAKAJAJYBALoBAMYBAMoBANgBAJYBAJYBAM4BAN4BAG4A0gEArggAlgEAugEAxgEA0AEAuAEA-gEBgAkbggoAlgEAugEAxgEA0AEAzgEBqwMEVgDuAQD6AQGsAw_eBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAa0DIpIBAQAi5AYAugEAyAEAbgD0CACcAQCaAQCcAQCaAQCWAQDkAQD6AQC4AQD6AQEAIuAEAFgA8goAlgEAugEAxgEA0AEAzgEAogIA-AEAegD4AQB6APgBAG4AvgEAvgEAvgEAjgsAlgEAugEAxgEAzgEBSwlgAJ4CAPoBAJYBAIIBAKICAN4HAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBASaSAQEAJuQGALoBAMgBAG4A9AgAnAEAmgEAnAEAmgEAlgEA5AEA-gEAuAEA-gEBACbgBABYAKIKAJYBALoBAMYBAM4BAOwBAPoBAHoA-AEAegD6AQBuAL4BAMABAMABALoKAJYBALoBAMYBAUcIXgDoAQD6AQCWAQCCAQCgAgDeBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAQEkkgEBACTkBgC6AQDIAQBuAPQIAJwBAJoBAJwBAJoBAJYBAOQBAPoBALgBAPoBAQAk4AQAWADOCQCUAQC6AQDGAQC4AQD6AQB6APgBAHoA-gEAbgC8AQDAAQDAAQC4CQCYAQCcAQCWAQC0AQD6AQCYAQCCAQCeAgDYBgB6AIwCAI4BALIJAJgBAJoBAJgBAbkEBIoBANABANoBAJgBAJgBAMwBAOABAG4A0AEAqgYAegCSAgCQAQCqCQCWAQC6AQDEAQDSAQDmAQCYAQCYAQDUAQDsAQBuANgBAOYIAJYBALoBAMYBAe4BBFYAuAEA-AEBYgGKAQENCNQHAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBVR6UAQEAHuQGALoBAMgBAG4A7ggAmgEAmgEAnAEAmgEAlAEA4gEA-gEAuAEA-gEBAB7cBABYAMwJAJQBALoBAMYBALgBAPoBAHoA-gEAegD6AQBuALwBAL4BAL4BAL4JAJgBAKIBAKQBALQBAPoBAJgBAIIBAKICANwGAHoAjgIAkAEAsAkAlgEAugEAxAEA1gEA7AEAmAEAmAEA1gEA8gEAbgDaAQDoCACWAQC6AQDGAQGMAwRWALgBAPoBAW4BigEBDQjWBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPQIAJYBALoBAMgBAMgBALoBAPwBAWEjlAEBACPmBgC6AQDIAQBuAPAIAJoBAJoBAJwBAJoBAJQBAOIBAPwBALgBAPwBAQAj3gQAWADOCQCUAQC6AQDGAQC4AQD8AQB6APwBAHoA_AEAbgC8AQC-AQC-AQDCCQCYAQCkAQCqAQC0AQD8AQCYAQCCAQCiAgDiBgB6AJACAJABAA + ;; sm:wAPsDwCWAQC6AQDGAQECBVgAbgDCAQCEBwCWAQCaAQCWAQC6AQDGAQBuAL4BAM4IAJYBALoBAMYBAMYBALgBANwBAQEqkgEBACrCBgC6AQDGAQBuAM4IAJoBAJoBAJoBAJoBAJQBAOABANwBALYBANwBAQAqwAQAWACwCQCUAQC6AQDGAQC4AQDeAQB6AN4BAHoA3gEAbgC8AQC-AQC-AQCCAQCqCACYAQC0AQDeAQCWAQCCAQCcAgCIBgB6APIBAI4BAKAJAJYBALoBAMYBAMoBANgBAJYBAJYBAM4BAN4BAG4A0gEArggAlgEAugEAxgEA0AEAuAEA-gEBgAkbggoAlgEAugEAxgEA0AEAzgEBqwMEVgDuAQD6AQGsAw_eBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAa0DIpIBAQAi5AYAugEAyAEAbgD0CACcAQCaAQCcAQCaAQCWAQDkAQD6AQC4AQD6AQEAIuAEAFgA8goAlgEAugEAxgEA0AEAzgEAogIA-AEAegD4AQB6APgBAG4AvgEAvgEAvgEAggEAjgsAlgEAugEAxgEAzgEBSwlgAJ4CAPoBAJYBAIIBAKICAN4HAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBASaSAQEAJuQGALoBAMgBAG4A9AgAnAEAmgEAnAEAmgEAlgEA5AEA-gEAuAEA-gEBACbgBABYAKIKAJYBALoBAMYBAM4BAOwBAPoBAHoA-AEAegD6AQBuAL4BAMABAMABAIQBALoKAJYBALoBAMYBAUcIXgDoAQD6AQCWAQCCAQCgAgDeBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAQEkkgEBACTkBgC6AQDIAQBuAPQIAJwBAJoBAJwBAJoBAJYBAOQBAPoBALgBAPoBAQAk4AQAWADOCQCUAQC6AQDGAQC4AQD6AQB6APgBAHoA-gEAbgC8AQDAAQDAAQCEAQC4CQCYAQCcAQCWAQC0AQD6AQCYAQCCAQCeAgDYBgB6AIwCAI4BALIJAJgBAJoBAJgBAbkEBIoBANABANoBAJgBAJgBAMwBAOABAG4A0AEAqgYAegCSAgCQAQCqCQCWAQC6AQDEAQDSAQDmAQCYAQCYAQDUAQDsAQBuANgBAOYIAJYBALoBAMYBAe4BBFYAuAEA-AEBYgGKAQENCNQHAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBVR6UAQEAHuQGALoBAMgBAG4A7ggAmgEAmgEAnAEAmgEAlAEA4gEA-gEAuAEA-gEBAB7cBABYAMwJAJQBALoBAMYBALgBAPoBAHoA-gEAegD6AQBuALwBAL4BAL4BAIIBAL4JAJgBAKIBAKQBALQBAPoBAJgBAIIBAKICANwGAHoAjgIAkAEAsAkAlgEAugEAxAEA1gEA7AEAmAEAmAEA1gEA8gEAbgDaAQDoCACWAQC6AQDGAQGMAwRWALgBAPoBAW4BigEBDQjWBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPQIAJYBALoBAMgBAMgBALoBAPwBAWEjlAEBACPmBgC6AQDIAQBuAPAIAJoBAJoBAJwBAJoBAJQBAOIBAPwBALgBAPwBAQAj3gQAWADOCQCUAQC6AQDGAQC4AQD8AQB6APwBAHoA_AEAbgC8AQC-AQC-AQCCAQDCCQCYAQCkAQCqAQC0AQD8AQCYAQCCAQCiAgDiBgB6AJACAJABAA diff --git a/src/passes/wasm/test_records.fnk b/src/passes/wasm/test_records.fnk index 71fb74b..44fb835 100644 --- a/src/passes/wasm/test_records.fnk +++ b/src/passes/wasm/test_records.fnk @@ -189,6 +189,7 @@ test 'rec destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_53) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 55)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_36)) ) (func $test::v_175 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -240,7 +241,7 @@ test 'rec destructure', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:WIwIAJYBAJoBAJYBALoBAMYBAKIBAQ4BUACuAQEkBfoHAJYBAJoBAJYBALoBAMgBAMIBAG4AvgEAwAEAjgkAlgEAmgEAlgEAugEAyAEAyAEA4AEA0gEBMRiSAQEAGJAJAJYBALoBAMgBAMgBAOgBANIBAQAYkgEBABi8BgC6AQDIAQBuAMoIAJwBAJoBAJwBAJoBAJYBAOQBANIBALgBANIBAQAYtgQAWACmCQCWAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC-AQC-AQC-AQC2CACUAQC6AQDGAQC4AQDSAQEmAZABAQYBiAEBBQSICQCYAQCUAQBmALQBANQBAQ0MYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA + ;; sm:WYwIAJYBAJoBAJYBALoBAMYBAKIBAQ4BUACuAQEkBfoHAJYBAJoBAJYBALoBAMgBAMIBAG4AvgEAwAEAjgkAlgEAmgEAlgEAugEAyAEAyAEA4AEA0gEBMRiSAQEAGJAJAJYBALoBAMgBAMgBAOgBANIBAQAYkgEBABi8BgC6AQDIAQBuAMoIAJwBAJoBAJwBAJoBAJYBAOQBANIBALgBANIBAQAYtgQAWACmCQCWAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC-AQC-AQC-AQCCAQC2CACUAQC6AQDGAQC4AQDSAQEmAZABAQYBiAEBBQSICQCYAQCUAQBmALQBANQBAQ0MYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA test 'rec spread', fn: expect wat ƒink: @@ -528,6 +529,7 @@ test 'rec nested destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_a_0) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_61) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_58) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 63)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_50)) ) (func $test::v_192 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -618,6 +620,7 @@ test 'rec nested destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_74) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_71) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 76)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_29)) ) (func $test::v_246 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -673,7 +676,7 @@ test 'rec nested destructure', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:fcIHAJYBALoBAMYBAKIBAK4BAG4AygEA_AYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQEmB5IBAQAHvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAB7oEAFgA9gkAlgEAugEAxgEAogEAuAEA0gEAegDSAQB6ANIBAK4BAG4AygEAvgEAvgEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQElEpIBAQASvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAEroEAFgApgkAlgEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvgEAvgEAvgEAuAgAlAEAugEAxgEAuAEA1AEBDAxgAQIBkAEBAAr0CQCYAQCUAQBmAJQBAGYAtAEA1AEBBgdgAQIBkAEBBgKKAQEFBe4FAHoA5gEAjAEA + ;; sm:f8IHAJYBALoBAMYBAKIBAK4BAG4AygEA_AYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQEmB5IBAQAHvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAB7oEAFgA9gkAlgEAugEAxgEAogEAuAEA0gEAegDSAQB6ANIBAK4BAG4AygEAvgEAvgEAggEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQElEpIBAQASvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAEroEAFgApgkAlgEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvgEAvgEAvgEAggEAuAgAlAEAugEAxgEAuAEA1AEBDAxgAQIBkAEBAAr0CQCYAQCUAQBmAJQBAGYAtAEA1AEBBgdgAQIBkAEBBgKKAQEFBe4FAHoA5gEAjAEA test 'rec spread merge two', fn: expect wat ƒink: diff --git a/src/passes/wasm/test_sets.fnk b/src/passes/wasm/test_sets.fnk index 526618c..385ec06 100644 --- a/src/passes/wasm/test_sets.fnk +++ b/src/passes/wasm/test_sets.fnk @@ -33,6 +33,7 @@ test 'set import + construction', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_29) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_116) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 33)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_83 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -123,6 +124,7 @@ test 'set import + construction', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_40) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_37) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 42)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -157,7 +159,7 @@ test 'set import + construction', fn: (data $d_0 "set") (data $d_1 "test") ) - ;; sm:SY4JAJYBALoBAMYBAQIDVAFAAYoBAQYBigEBBgGKAQBuAMIBAMIBAMIBAMQBAPIGAJYBAJoBAJYBALoBAMYBAG4AvgEAxAgAlgEAugEAxgEAxgEAuAEA0AEBTRySAQEAHLYGALoBAMYBAG4AwggAmgEAmgEAmgEAmgEAlAEA4AEA0gEAtgEA0AEBABy0BABYAKQJAJQBALoBAMYBALgBANIBAHoA0gEAegDSAQBuALwBAL4BAL4BANwJAJgBALQBANIBAGQAbACcAQCGAgBuAMQBAKQFAHoA5gEAjAEA + ;; sm:S44JAJYBALoBAMYBAQIDVAFAAYoBAQYBigEBBgGKAQBuAMIBAMIBAMIBAMQBAIIBAPIGAJYBAJoBAJYBALoBAMYBAG4AvgEAxAgAlgEAugEAxgEAxgEAuAEA0AEBTRySAQEAHLYGALoBAMYBAG4AwggAmgEAmgEAmgEAmgEAlAEA4AEA0gEAtgEA0AEBABy0BABYAKQJAJQBALoBAMYBALgBANIBAHoA0gEAegDSAQBuALwBAL4BAL4BAIIBANwJAJgBALQBANIBAGQAbACcAQCGAgBuAMQBAKQFAHoA5gEAjAEA test 'set spread', fn: @@ -181,6 +183,7 @@ test 'set spread', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_36) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_107) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_106)) ) (func $test::v_123 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -324,6 +327,7 @@ test 'set spread', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_53) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 55)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -358,7 +362,7 @@ test 'set spread', fn: (data $d_0 "set") (data $d_1 "test") ) - ;; sm:XboHAJYBALoBAMQBAMYBAG4AvAEAxAEAwAgAlgEAugEAxAEAxgEA4gEA0gEBSAGKAQEAAeQIAJYBALoBAMQBAMYBAOIBANIBAQYBigEBAAGoCQCWAQC6AQDGAQFLA1QA3gEA0gEBUgGKAQENCXIBDgGiBwCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBAVMckgEBABy8BgC6AQDIAQBuAMQIAJoBAJoBAJoBAJoBAJQBAOABANIBALYBANIBAQActAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQDeCQCYAQC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:X7oHAJYBALoBAMQBAMYBAG4AvAEAxAEAggEAwAgAlgEAugEAxAEAxgEA4gEA0gEBSAGKAQEAAeQIAJYBALoBAMQBAMYBAOIBANIBAQYBigEBAAGoCQCWAQC6AQDGAQFLA1QA3gEA0gEBUgGKAQENCXIBDgGiBwCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBAVMckgEBABy8BgC6AQDIAQBuAMQIAJoBAJoBAJoBAJoBAJQBAOABANIBALYBANIBAQActAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCAQDeCQCYAQC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure empty', fn: @@ -393,6 +397,7 @@ test 'set destructure empty', fn: (local.set $:succ_248 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_248) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 70)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_247)) ) (func $test::v_220 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -492,6 +497,7 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_34) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_68) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_56)) ) (func $test::v_296 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -520,6 +526,7 @@ test 'set destructure empty', fn: (local.set $:v_285 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_76) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 87)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_285)) ) (func $test::v_260 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -544,6 +551,7 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_265) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_192) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_264) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 95)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_263)) ) (func $test::v_282 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -567,6 +575,7 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_89) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_195) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_90) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 99)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_276)) ) (func $test::v_318 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -610,6 +619,7 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_313) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 104)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_100)) ) (func $test::v_364 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -628,6 +638,7 @@ test 'set destructure empty', fn: (local.set $:v_198 (struct.new $rt/apply.wat:Closure (ref.func $test::v_318) (local.get $:caps_arg))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_198) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 118)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_326 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -718,6 +729,7 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_125) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_122) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 127)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -757,7 +769,7 @@ test 'set destructure empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:vwGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQDICgCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA + ;; sm:xwGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCEAQDICgCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA test 'set destructure non-empty', fn: @@ -792,6 +804,7 @@ test 'set destructure non-empty', fn: (local.set $:succ_251 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_251) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_250)) ) (func $test::v_223 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -891,6 +904,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_37) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_71) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 74)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_59)) ) (func $test::v_299 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -919,6 +933,7 @@ test 'set destructure non-empty', fn: (local.set $:v_288 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_79) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 90)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_288)) ) (func $test::v_263 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -943,6 +958,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_268) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_195) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_267) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_266)) ) (func $test::v_285 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -966,6 +982,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_92) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_198) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_93) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 102)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_279)) ) (func $test::v_321 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1009,6 +1026,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_316) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 107)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_103)) ) (func $test::v_367 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1036,6 +1054,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_30) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_29) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_201) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 121)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_329 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1126,6 +1145,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_128) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_125) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 130)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -1165,7 +1185,7 @@ test 'set destructure non-empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:xQGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:zQGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCEAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAhAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure peel one', fn: @@ -1200,6 +1220,7 @@ test 'set destructure peel one', fn: (local.set $:succ_302 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_302) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 74)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_301)) ) (func $test::v_274 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1299,6 +1320,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_36) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_72) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 75)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_60)) ) (func $test::v_392 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1326,6 +1348,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_86) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_344) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 112)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_343)) ) (func $test::v_316 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1412,6 +1435,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_79) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_81) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_115) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 120)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_99)) ) (func $test::v_356 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1436,6 +1460,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_361) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_246) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_360) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 130)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_359)) ) (func $test::v_378 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1459,6 +1484,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_249) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_125) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 134)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_372)) ) (func $test::v_414 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1502,6 +1528,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_409) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 139)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_135)) ) (func $test::v_460 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1529,6 +1556,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_31) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_30) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_252) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 153)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_422 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1619,6 +1647,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_160) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_157) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -1658,5 +1687,5 @@ test 'set destructure peel one', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:8QGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:-gGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAIQBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAIQBAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAhAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAhAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_strings.fnk b/src/passes/wasm/test_strings.fnk index 80373d4..fd837b0 100644 --- a/src/passes/wasm/test_strings.fnk +++ b/src/passes/wasm/test_strings.fnk @@ -227,6 +227,7 @@ test 'str tagged template', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_12) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_39) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 16)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_foo_38)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -272,7 +273,7 @@ test 'str tagged template', fn: (data $d_1 "foo") (data $d_2 "1\\n2") ) - ;; sm:I4QFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAK4LAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA + ;; sm:JIQFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBAK4LAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA test 'str tagged template escape handling', fn: @@ -311,6 +312,7 @@ test 'str tagged template escape handling', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_20) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_67) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 24)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_foo_66)) ) (func $test::v_83 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -417,7 +419,7 @@ test 'str tagged template escape handling', fn: (data $d_3 "bar") (data $d_4 "\\b\\v\\$\\'\\\\\\xC3\\xA9\\u{8A_9E}") ) - ;; sm:P4YFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALugOAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA + ;; sm:QIYFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALugOAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA test 'str implicit formatting handling', fn: @@ -543,6 +545,7 @@ test 'match empty string', fn: (local.set $:succ_147 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_147) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_146)) ) (func $test::v_137 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -614,6 +617,7 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 38)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_23)) ) (func $test::v_195 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -642,6 +646,7 @@ test 'match empty string', fn: (local.set $:v_184 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_43) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_184)) ) (func $test::v_159 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -666,6 +671,7 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_164) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_163) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_162)) ) (func $test::v_181 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -689,6 +695,7 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_127) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_57) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 66)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_175)) ) (func $test::v_215 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -721,6 +728,7 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_67)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -761,7 +769,7 @@ test 'match empty string', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:d4gFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEA6gkAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA + ;; sm:fYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAIIBAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIIBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIIBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAggEAzgwAmAEAmgEAkgEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAggEA6gkAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA test 'empty string eq template', fn: diff --git a/src/runtime/interop/js/interop.wat b/src/runtime/interop/js/interop.wat index 3955daa..507b4e2 100644 --- a/src/runtime/interop/js/interop.wat +++ b/src/runtime/interop/js/interop.wat @@ -76,6 +76,10 @@ (param $args (ref null any)) (param $ctx (ref null any)) (param $callee (ref null any)))) + ;; Keep rt/trace.wat in the link and trace_push alive: user fragments + ;; call it at every call site, but no runtime module references it. + (import "rt/trace.wat" "trace_push" + (func $trace_push (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" (func $empty_ctx_inner (result (ref any)))) (import "rt/apply.wat" "set_ctx" diff --git a/src/runtime/interop/rust/interop.wat b/src/runtime/interop/rust/interop.wat index bcce381..2690c49 100644 --- a/src/runtime/interop/rust/interop.wat +++ b/src/runtime/interop/rust/interop.wat @@ -61,6 +61,10 @@ (param $args (ref null any)) (param $ctx (ref null any)) (param $callee (ref null any)))) + ;; Keep rt/trace.wat in the link and trace_push alive: user fragments + ;; call it at every call site, but no runtime module references it. + (import "rt/trace.wat" "trace_push" + (func $trace_push (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" (func $empty_ctx (result (ref any)))) (import "rt/apply.wat" "set_ctx" diff --git a/src/runtime/rt/trace.wat b/src/runtime/rt/trace.wat new file mode 100644 index 0000000..be6d91d --- /dev/null +++ b/src/runtime/rt/trace.wat @@ -0,0 +1,59 @@ +;; Trace buffer -- a fixed-size ring of recent user-fn call sites. +;; +;; Every user-function call site emits a trace_push before dispatching. +;; The push records the call site into a ring in linear memory, +;; overwriting the oldest entry once full. Because Fink compiles every +;; call to a tail call, there is no native wasm call stack to walk; this +;; ring is the portable substitute -- it lives in linear memory so a host +;; can read it even after a hard trap, on any runtime, not just the +;; wasmtime debugger. +;; +;; Layout: the ring occupies the reserved region at the bottom of linear +;; memory, [0, trace_len*8). emit.rs owns the linear-memory map and keeps +;; this region clear of the literal data pool. Each slot is two i32s -- +;; module_id then cps_id. Together they identify a call site package-wide +;; -- cps_id is only unique per module. +;; +;; trace_next is the slot index of the next write; it wraps at trace_len. +;; The reader derives the valid range from it. Slot count and base are +;; compile-time constants here -- clarity over micro-opt for now; an +;; optimizer can inline/specialise later. +;; +;; The user fragment brings memory 0; this module doesn't declare its +;; own, matching interop.wat. + +(module + + ;; Ring capacity in slots. 64 frames. + (global $trace_len i32 (i32.const 64)) + ;; Byte offset of the ring region (bottom of memory). + (global $trace_base i32 (i32.const 0)) + ;; Slot index of the next write. Wraps at trace_len. + (global $trace_next (mut i32) (i32.const 0)) + + ;; Record a call site into the ring at trace_next, then advance + ;; trace_next modulo trace_len. Args: module_id, cps_id. + (func $trace_push (@pub) + (param $module_id i32) + (param $cps_id i32) + (local $slot_addr i32) + + ;; slot_addr = trace_base + trace_next * 8 + (local.set $slot_addr + (i32.add + (global.get $trace_base) + (i32.mul (global.get $trace_next) (i32.const 8)))) + + ;; mem[slot_addr] = module_id + (i32.store (local.get $slot_addr) (local.get $module_id)) + ;; mem[slot_addr+4] = cps_id + (i32.store + (i32.add (local.get $slot_addr) (i32.const 4)) + (local.get $cps_id)) + + ;; trace_next = (trace_next + 1) mod trace_len + (global.set $trace_next + (i32.rem_u + (i32.add (global.get $trace_next) (i32.const 1)) + (global.get $trace_len)))) +) From ab910c475e34cc376fb1f7f1e67e32649f3e3fd2 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Tue, 9 Jun 2026 12:13:13 +0100 Subject: [PATCH 3/7] feat(trace): module-id->url resolution; fix module_id-during-lowering - register_module/get_module_url: a growable module_id->url GC array in rt/modules.wat, populated by each fink_module self-registering its (id, url) at entry; Fn3-callable get_module_url resolves a trace frame's module id back to a source url. - fix: module_id was always 0 during lowering. compile_package set frag.module_id AFTER lower() returned, too late for the constants trace_push/register_module bake in at emit time. Now threaded into lower() and set before any instrumentation is emitted. - trace_push only at userland (source Apply) call sites, gated by is_source_apply; desugar-synthesized applies (pipe, partial app) are no longer traced. - get_trace Fn3 reader over the trace buffer. - snapshots re-blessed for the register_module + trace_push changes; removed a stray pre-existing base64 fragment in test_records.fnk. --- src/passes/wasm/compile_package.rs | 4 +- src/passes/wasm/lower.rs | 74 +++++++++++++- src/passes/wasm/mod.rs | 17 +++- src/passes/wasm/runtime_contract.rs | 8 ++ src/passes/wasm/test_bindings.fnk | 26 +++-- src/passes/wasm/test_collections.fnk | 15 ++- src/passes/wasm/test_effects.fnk | 6 +- src/passes/wasm/test_functions.fnk | 105 +++++++++----------- src/passes/wasm/test_io.fnk | 6 +- src/passes/wasm/test_linking.fnk | 38 +++++--- src/passes/wasm/test_literals.fnk | 30 ++++-- src/passes/wasm/test_operators.fnk | 60 +++++++++--- src/passes/wasm/test_range.fnk | 20 +++- src/passes/wasm/test_records.fnk | 50 +++++++--- src/passes/wasm/test_sets.fnk | 49 ++++------ src/passes/wasm/test_strings.fnk | 66 +++++++++---- src/runtime/interop/js/interop.wat | 1 + src/runtime/interop/rust/interop.wat | 1 + src/runtime/rt/modules.wat | 131 +++++++++++++++++++++++++ src/runtime/rt/trace.wat | 139 +++++++++++++++++++++++++++ 20 files changed, 677 insertions(+), 169 deletions(-) diff --git a/src/passes/wasm/compile_package.rs b/src/passes/wasm/compile_package.rs index cd62c6e..0e158a6 100644 --- a/src/passes/wasm/compile_package.rs +++ b/src/passes/wasm/compile_package.rs @@ -233,8 +233,7 @@ fn compile_one( })?; let marks = crate::passes::debug_marks::analyse(&lifted, &desugared); let fqn_prefix = format!("{canonical_url}:"); - let mut frag = super::lower::lower(&lifted.result, &desugared.ast, &fqn_prefix); - frag.module_id = module_id; + let mut frag = super::lower::lower(&lifted.result, &desugared.ast, &fqn_prefix, module_id); // module_imports stays as raw-URL → ModuleId. The package compiler // resolves URLs at the call site; the lower pass populates this // field by walking `cps.module_imports` keys and mapping each raw @@ -340,6 +339,7 @@ pub const MIGRATED_STDLIB_FNK: &[&str] = &[ "std/testing.fnk", "std/io.fnk", "std/iter.fnk", + "std/trace.fnk", ]; #[cfg(feature = "compile")] diff --git a/src/passes/wasm/lower.rs b/src/passes/wasm/lower.rs index 3d3d4b0..27a60e7 100644 --- a/src/passes/wasm/lower.rs +++ b/src/passes/wasm/lower.rs @@ -50,6 +50,16 @@ fn origin_of(cps: &CpsResult, ast: &Ast<'_>, id: CpsId) -> Option { Some(ByteRange::new(loc.start.idx, loc.end.idx)) } +/// True iff this CpsId's source origin is an `Apply` AST node — i.e. a +/// call the user actually wrote, not a desugar-synthesised apply (pipe +/// expansion, partial application, etc.) whose origin is the surrounding +/// `InfixOp`/`Pipe`/lambda node. Used to gate trace instrumentation so +/// the trace reflects source-level calls. +fn is_source_apply(cps: &CpsResult, ast: &Ast<'_>, id: CpsId) -> bool { + let Some(Some(ast_id)) = cps.origin.try_get(id) else { return false }; + matches!(ast.nodes.get(*ast_id).kind, crate::ast::NodeKind::Apply { .. }) +} + /// Lower a lifted CPS result to an unlinked wasm IR `Fragment`. /// /// `fqn_prefix` is the module's fully-qualified URL prefix (e.g. @@ -62,7 +72,7 @@ fn origin_of(cps: &CpsResult, ast: &Ast<'_>, id: CpsId) -> Option { /// Phase-4A: prefix is purely a cosmetic / naming concern. The entry /// function's export name still stays `"fink_module"`; rewiring the /// body to the `import_module` init-guard shape lands in 4D. -pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { +pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: ModuleId) -> Fragment { let mut usage = runtime_contract::scan(cps); // Fn3 / ctx-aware lowering routes user-fn calls through `apply_3` // instead of `apply`. Mark the Apply3 runtime symbol so `declare()` @@ -73,6 +83,9 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { // Every user-fn call site emits a trace_push recording the call site // into the trace buffer (rt/trace.wat). usage.mark(runtime_contract::Sym::TracePush); + // Each fink_module self-registers its (module_id, url) so trace frames + // resolve to a source url (rt/modules.wat). + usage.mark(runtime_contract::Sym::RegisterModule); // Per-module wrapper synthesised below uses init_module and the // closure/captures/str primitives. usage.mark(runtime_contract::Sym::ModulesInitModule); @@ -80,7 +93,11 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { usage.mark(runtime_contract::Sym::Captures); usage.mark(runtime_contract::Sym::Cell); usage.mark(runtime_contract::Sym::StrFromData); - let mut frag = Fragment::default(); + // module_id set here (not after lowering): trace_push / register_module + // bake the module id as a constant at emit time, so it must be correct + // during lowering. (compile_package used to set frag.module_id after + // lower returned, which was too late for those emitted constants.) + let mut frag = Fragment { module_id, ..Default::default() }; let rt = runtime_contract::declare(&mut frag, &usage); // CPS root shape: App(FinkModule, [Cont::Expr { args: [ƒctx, ƒret], body }]). @@ -217,6 +234,10 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { // canonical FQN. fink_module stays as a bare internal func; the // wrapper holds a no-capture closure over it. + // Self-register (module_id, url) at the top of fink_module so trace + // frames (which carry module_id) can resolve back to a source url. + prepend_module_registration(&mut lcx, fink_module); + // Per-module host-facing wrapper. Exported under the module's // canonical FQN so the host can call any module by URL string // (`instance.get_func(canonical_url)`). The wrapper composes the @@ -253,6 +274,47 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str) -> Fragment { /// synthesises a placeholder ctx (ref.i31 42) and tail-calls the /// body's Fn3 entry. Once the substrate lands, host-provided ctx /// flows in through the same channel. +/// Prepend a `register_module(module_id, url)` call to the top of the +/// module's `fink_module` body. `module_id` is the fragment's own id (a +/// compile-time constant); `url` is the canonical url materialised as a +/// `$Str`. This is how the runtime learns module_id → url for resolving +/// trace frames. +fn prepend_module_registration(lcx: &mut LowerCtx<'_>, fink_module: FuncSym) { + let FuncSym::Local(fi) = fink_module else { + panic!("prepend_module_registration: fink_module must be Local"); + }; + let fi = fi as usize; + + let canonical_url = lcx.fqn_prefix.trim_end_matches(':').to_string(); + let mid = lit_i32(lcx.frag.module_id.0 as i32); + + // Allocate a fresh local on fink_module for the url $Str. New locals + // index after params + existing locals. + let url_idx = LocalIdx( + (lcx.frag.funcs[fi].params.len() + lcx.frag.funcs[fi].locals.len()) as u32, + ); + lcx.frag.funcs[fi].locals.push(LocalDecl { + ty: val_anyref(true), + display: Some(":mod_reg_url".to_string()), + }); + + // url = from_data(intern(canonical_url)) — same materialisation the + // host wrapper uses for the registry key. + let sym = intern_data(lcx.frag, canonical_url.as_bytes()); + let len = canonical_url.len() as u32; + let i_url = push_call(lcx.frag, lcx.rt.str_from_data(), + vec![Operand::DataRef { sym, len }], Some(url_idx)); + + // register_module(mid, url) + let i_reg = push_call(lcx.frag, lcx.rt.register_module(), + vec![mid, op_local(url_idx)], None); + + // Prepend both, url-const first, before the existing body. + let body = &mut lcx.frag.funcs[fi].body; + body.insert(0, i_reg); + body.insert(0, i_url); +} + fn synth_host_wrapper( lcx: &mut LowerCtx<'_>, fink_module: FuncSym, @@ -1336,7 +1398,15 @@ fn unbox_anyref( /// the trace buffer, immediately before the user-fn dispatch. `cps_id` /// is the Apply node's id (the call site); `module_id` is the fragment's /// own id. Together they identify the site package-wide. +/// +/// Only userland calls are traced: an Apply is traced iff it has a source +/// origin. Desugar-synthesised applies (pipe expansion, partial +/// application, etc.) have no origin and are skipped, so the trace +/// reflects source-level calls, not the finer post-desugar CPS structure. fn push_trace_point(lcx: &mut LowerCtx<'_>, ctx: &mut FnCtx, call_site: CpsId) { + if !is_source_apply(lcx.cps, lcx.ast, call_site) { + return; + } let module_id = lit_i32(lcx.frag.module_id.0 as i32); let cps_id = lit_i32(call_site.0 as i32); let i = push_call(lcx.frag, lcx.rt.trace_push(), vec![module_id, cps_id], None); diff --git a/src/passes/wasm/mod.rs b/src/passes/wasm/mod.rs index 29883b7..cf18d15 100644 --- a/src/passes/wasm/mod.rs +++ b/src/passes/wasm/mod.rs @@ -204,7 +204,7 @@ mod tests { // Generic synthetic FQN — every fragment in the IR must have a // non-empty fqn_prefix; tests use `test:` so emitted exports // (per-module wrapper, etc.) are addressable by a stable name. - let user_frag = super::lower::lower(&lifted.result, &desugared.ast, "test:"); + let user_frag = super::lower::lower(&lifted.result, &desugared.ast, "test:", crate::passes::wasm::ir::ModuleId(0)); // Single-module programs today: the link step is a passthrough, // but routing through it keeps the tracer test surface honest // when multi-fragment merge arrives. @@ -292,7 +292,7 @@ mod tests { #[cfg(test)] fn emit_for(src: &str) -> Vec { let (lifted, desugared) = crate::to_lifted(src, "test").unwrap_or_else(|e| panic!("{e}")); - let user_frag = super::lower::lower(&lifted.result, &desugared.ast, "test:"); + let user_frag = super::lower::lower(&lifted.result, &desugared.ast, "test:", crate::passes::wasm::ir::ModuleId(0)); let linked = super::link::link(&[user_frag]); super::emit::emit(&linked, super::emit::Interop::Rust) } @@ -322,6 +322,19 @@ add 3, 4 ); } + /// Every module's `fink_module` self-registers its `(module_id, url)` + /// so `get_module_url` can resolve a trace frame's module id back to a + /// source url. The id is a compile-time constant; the url is the + /// module's canonical url string. + #[test] + fn fink_module_registers_its_url() { + let out = wat("42"); + assert!( + out.contains("rt/modules.wat:register_module"), + "fink_module should call register_module(mod_id, url); got:\n{out}" + ); + } + #[test] fn emit_instantiates_in_wasmtime() { use wasmtime::{Config, Engine, Module, Store, Linker, Error, ExternType}; diff --git a/src/passes/wasm/runtime_contract.rs b/src/passes/wasm/runtime_contract.rs index bccde01..1f55753 100644 --- a/src/passes/wasm/runtime_contract.rs +++ b/src/passes/wasm/runtime_contract.rs @@ -102,6 +102,10 @@ pub enum Sym { // TracePush records a call site (module_id, cps_id) into the trace // buffer ring. Signature `(i32, i32) -> ()`. Defined in rt/trace.wat. TracePush, + // RegisterModule records module_id → url so trace frames can resolve + // to a source url. Signature `(i32, anyref) -> ()`. Each fink_module + // self-registers. Defined in rt/modules.wat. + RegisterModule, // ── polymorphic protocol operators (rt/protocols.wat) ───────── // All binary operators share the shape (anyref, anyref, anyref) @@ -337,6 +341,7 @@ pub struct Runtime { apply: Option, apply_3: Option, trace_push: Option, + register_module: Option, // polymorphic protocol operators op_plus: Option, op_minus: Option, @@ -432,6 +437,7 @@ impl Runtime { pub fn apply(&self) -> FuncSym { self.apply.expect("rt: _apply not declared") } pub fn apply_3(&self) -> FuncSym { self.apply_3.expect("rt: apply_3 not declared") } pub fn trace_push(&self) -> FuncSym { self.trace_push.expect("rt: trace_push not declared") } + pub fn register_module(&self) -> FuncSym { self.register_module.expect("rt: register_module not declared") } pub fn fn3(&self) -> TypeSym { self.fn3.expect("rt: Fn3 not declared") } /// Look up the runtime func for a protocol operator `Sym`. Panics @@ -517,6 +523,7 @@ pub(super) fn import_key(sym: Sym) -> &'static str { Sym::Apply => "rt/apply.wat:apply", Sym::Apply3 => "rt/apply.wat:apply_3", Sym::TracePush => "rt/trace.wat:trace_push", + Sym::RegisterModule => "rt/modules.wat:register_module", Sym::ArgsHead => "rt/apply.wat:args_head", Sym::ArgsTail => "rt/apply.wat:args_tail", @@ -670,6 +677,7 @@ pub fn declare(frag: &mut Fragment, usage: &RuntimeUsage) -> Runtime { if needed.contains(&Sym::Apply) { rt.apply = Some(FuncSym::Runtime(Sym::Apply)); } if needed.contains(&Sym::Apply3) { rt.apply_3 = Some(FuncSym::Runtime(Sym::Apply3)); } if needed.contains(&Sym::TracePush) { rt.trace_push = Some(FuncSym::Runtime(Sym::TracePush)); } + if needed.contains(&Sym::RegisterModule) { rt.register_module = Some(FuncSym::Runtime(Sym::RegisterModule)); } for sym in BINARY_OPS { if needed.contains(sym) { diff --git a/src/passes/wasm/test_bindings.fnk b/src/passes/wasm/test_bindings.fnk index 52f6b46..ebfd833 100644 --- a/src/passes/wasm/test_bindings.fnk +++ b/src/passes/wasm/test_bindings.fnk @@ -19,6 +19,9 @@ test 'single binding export', fn: (local $:pub_name (ref null any)) (local $:unwrap_foo_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_foo_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:foo (local.get $:cell_foo_0)) @@ -46,7 +49,7 @@ test 'single binding export', fn: (data $d_0 "test") (data $d_1 "foo") ) - ;; sm:EbQIAJgBAJgBAGgBAAOGAQCgAQCqAQCUAQCWAQDKAQCwAQBuAM4BAKYFAHoA5gEAjAEA + ;; sm:E4YJAJwBAKYBAJgBAJgBAGgBAAOGAQCgAQCqAQCUAQCWAQDKAQCwAQBuAM4BAKYFAHoA5gEAjAEA @@ -66,6 +69,9 @@ test 'let binding', fn: (local $:pub_name (ref null any)) (local $:unwrap_x_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_x_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:x (local.get $:cell_x_0)) @@ -93,7 +99,7 @@ test 'let binding', fn: (data $d_0 "test") (data $d_1 "x") ) - ;; sm:EaQIAJgBAJQBAGABAAGEAQCYAQCiAQCUAQCWAQDGAQCoAQBuAMoBAKYFAHoA5gEAjAEA + ;; sm:E_YIAJwBAKYBAJgBAJQBAGABAAGEAQCYAQCiAQCUAQCWAQDGAQCoAQBuAMoBAKYFAHoA5gEAjAEA @@ -119,6 +125,9 @@ test 'multiple let bindings used', fn: (local $:pub_name (ref null any)) (local $:unwrap_x_0 (ref null any)) (local $:unwrap_y_1 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_x_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:x (local.get $:cell_x_0)) @@ -155,7 +164,7 @@ test 'multiple let bindings used', fn: (data $d_1 "x") (data $d_2 "y") ) - ;; sm:GMQLAJgBAJQBAGAAlAEAYAEAAYIBAJgBAKIBAJQBAJYBAMYBAQwBggEAmAEAogEAlAEAlgEAxgEAqAEAqAEBDAXuBQB6AOYBAIwBAA + ;; sm:GpYMAJwBAKYBAJgBAJQBAGAAlAEAYAEAAYIBAJgBAKIBAJQBAJYBAMYBAQwBggEAmAEAogEAlAEAlgEAxgEAqAEAqAEBDAXuBQB6AOYBAIwBAA @@ -219,6 +228,9 @@ test 'binding rhs is a call', fn: (local $:lit_14 (ref null any)) (local $:lit_15 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_add_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:add (local.get $:cell_add_0)) @@ -259,7 +271,7 @@ test 'binding rhs is a call', fn: (data $d_1 "x") (data $d_2 "add") ) - ;; sm:L4IFAJgBAJoBAJIBAJoBAJIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQCYDQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQCCAQC0BQB6AOYBAIwBAA + ;; sm:MYIFAJgBAJoBAJIBAJoBAJIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQDqDQCcAQCmAQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQCCAQC0BQB6AOYBAIwBAA @@ -402,7 +414,6 @@ test 'top-level rec destructure then fn using binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_47) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_44) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 49)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -414,6 +425,9 @@ test 'top-level rec destructure then fn using binding', fn: (local $:lit_4 (ref null any)) (local $:lit_5 (ref null any)) (local $:lit_6 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_x_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test::x_0 (local.get $:cell_x_0)) @@ -442,6 +456,6 @@ test 'top-level rec destructure then fn using binding', fn: (data $d_1 "foo") (data $d_2 "x") ) - ;; sm:Vb4IAJoBAJoBAJIBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCAQCwCQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA + ;; sm:Vr4IAJoBAJoBAJIBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCCgCcAQCmAQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_collections.fnk b/src/passes/wasm/test_collections.fnk index c5bb608..7dc119f 100644 --- a/src/passes/wasm/test_collections.fnk +++ b/src/passes/wasm/test_collections.fnk @@ -84,6 +84,9 @@ test 'list with spread at tail', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_xs_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:xs (local.get $:cell_xs_0)) @@ -109,7 +112,7 @@ test 'list with spread at tail', fn: (data $d_0 "test") (data $d_1 "xs") ) - ;; sm:K8AHAJYBALoBAM4BALoBAMQBAK4BARoEiAwAlAEAugEAzgEAugEAxAEAnAEApgEAlAEAlgEAyAEA4gEA0AEBDAGKAQENCXIBDgHSCQCUAQC6AQDOAQC6AQDEAQDiAQDQAQEZAYgBAQABoggAmAEAlgEAZADgAQDQAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA + ;; sm:LcAHAJYBALoBAM4BALoBAMQBAK4BARoEiAwAlAEAugEAzgEAugEAxAEAnAEApgEAlAEAlgEAyAEA4gEA0AEBDAGKAQENCXIBDgHSCQCUAQC6AQDOAQC6AQDEAQDiAQDQAQEZAYgBAQAB9AgAnAEApgEAmAEAlgEAZADgAQDQAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA test 'list with spread at head', fn: @@ -185,6 +188,9 @@ test 'list with spread at head', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_xs_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:xs (local.get $:cell_xs_0)) @@ -209,7 +215,7 @@ test 'list with spread at head', fn: (data $d_0 "test") (data $d_1 "xs") ) - ;; sm:KfgFAJYBALoBAMQBARoBiAEBAAGIDACUAQC6AQDOAQC6AQDEAQCcAQCmAQCUAQCWAQDIAQC2AQDQAQCuAQEBCXIBCATcCQCUAQC6AQDOAQC6AQDEAQDiAQDQAQETAYgBAQABoggAmAEAlgEAZADgAQDQAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA + ;; sm:K_gFAJYBALoBAMQBARoBiAEBAAGIDACUAQC6AQDOAQC6AQDEAQCcAQCmAQCUAQCWAQDIAQC2AQDQAQCuAQEBCXIBCATcCQCUAQC6AQDOAQC6AQDEAQDiAQDQAQETAYgBAQAB9AgAnAEApgEAmAEAlgEAZADgAQDQAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA test 'list with two spreads', fn: @@ -355,6 +361,9 @@ test 'list with two spreads', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_4 (ref null any)) (local $:lit_5 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_a_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:a (local.get $:cell_a_0)) @@ -390,4 +399,4 @@ test 'list with two spreads', fn: (data $d_1 "b") (data $d_2 "a") ) - ;; sm:Tb4HAJYBALoBAM4BALoBAMQBAKwBAS4Dyg0AlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEA4gEA0AEArAEBAQpyAQwDnAsAlgEAugEAzgEAugEAzgEAugEAxgEAkAIA0AEBFwGKAQEAAb4NAJQBALoBANABAL4BANABAL4BAMYBAJ4BAKIBAJQBAJYBAMYBAJQCANIBAQYBigEBBwZyAQgBmAsAlAEAugEA0AEAvgEA0AEAvgEAxgEAlAIA0gEBGwGIAQEAAYoJAJgBAJQBAGAAlAEAYACIAgDSAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA + ;; sm:T74HAJYBALoBAM4BALoBAMQBAKwBAS4Dyg0AlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEA4gEA0AEArAEBAQpyAQwDnAsAlgEAugEAzgEAugEAzgEAugEAxgEAkAIA0AEBFwGKAQEAAb4NAJQBALoBANABAL4BANABAL4BAMYBAJ4BAKIBAJQBAJYBAMYBAJQCANIBAQYBigEBBwZyAQgBmAsAlAEAugEA0AEAvgEA0AEAvgEAxgEAlAIA0gEBGwGIAQEAAdwJAJwBAKYBAJgBAJQBAGAAlAEAYACIAgDSAQEGAYgBAQcGcAEIAcwFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_effects.fnk b/src/passes/wasm/test_effects.fnk index 20fc671..893be6e 100644 --- a/src/passes/wasm/test_effects.fnk +++ b/src/passes/wasm/test_effects.fnk @@ -123,7 +123,6 @@ test 'set_ctx import + call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "rt/apply.wat" "set_ctx" (func $rt/apply.wat:set_ctx (type $std/dict.wat:Fn_rec_new))) @@ -135,6 +134,9 @@ test 'set_ctx import + call', fn: (local $:imp_val_set_ctx (ref null any)) (local $:imp_key_set_ctx (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_2))) (local.set $:v_73 (struct.new $rt/apply.wat:Closure (ref.func $test::v_127) (local.get $:caps_arg))) @@ -159,4 +161,4 @@ test 'set_ctx import + call', fn: (data $d_1 "set_ctx") (data $d_2 "test") ) - ;; sm:R4YIAJYBALoBAMYBAQIHXAFSBZIBAG4AwgEAxAEAggEA-gYAlgEAmgEAlgEAugEAxgEAbgC-AQDCCACWAQC6AQDGAQDGAQC4AQDQAQFTIZIBAQAhtgYAugEAxgEAbgDCCACaAQCaAQCaAQCaAQCUAQDgAQDQAQC2AQDQAQEAIbQEAFgApAkAlAEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvAEAvgEAvgEAggEAgAoAmAEAtAEA0gEAZAB-AKQBAJYCAG4AxAEApAUAegDmAQCMAQA + ;; sm:SIYIAJYBALoBAMYBAQIHXAFSBZIBAG4AwgEAxAEAggEA-gYAlgEAmgEAlgEAugEAxgEAbgC-AQDCCACWAQC6AQDGAQDGAQC4AQDQAQFTIZIBAQAhtgYAugEAxgEAbgDCCACaAQCaAQCaAQCaAQCUAQDgAQDQAQC2AQDQAQEAIbQEAFgApAkAlAEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvAEAvgEAvgEA0goAnAEApgEAmAEAtAEA0gEAZAB-AKQBAJYCAG4AxAEApAUAegDmAQCMAQA diff --git a/src/passes/wasm/test_functions.fnk b/src/passes/wasm/test_functions.fnk index 38cb697..e4038fb 100644 --- a/src/passes/wasm/test_functions.fnk +++ b/src/passes/wasm/test_functions.fnk @@ -33,6 +33,9 @@ test 'user fn call', fn: (local $:lit_13 (ref null any)) (local $:lit_14 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_add_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:add (local.get $:cell_add_0)) @@ -66,7 +69,7 @@ test 'user fn call', fn: (data $d_0 "test") (data $d_1 "add") ) - ;; sm:HYIFAJgBAJoBAJIBAJoBAJIBASIFngsAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABAIIBALQFAHoA5gEAjAEA + ;; sm:H4IFAJgBAJoBAJIBAJoBAJIBASIF8AsAnAEApgEAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABAIIBALQFAHoA5gEAjAEA test 'chained fn calls', fn: @@ -155,6 +158,9 @@ test 'chained fn calls', fn: (local $:unwrap_double_0 (ref null any)) (local $:lit_23 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_5 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_double_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:double (local.get $:cell_double_0)) @@ -205,7 +211,7 @@ test 'chained fn calls', fn: (data $d_2 "double") (data $d_3 "inc") ) - ;; sm:P4gFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQCCAQD4EACYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BAIIBALoFAHoA5gEAjAEA + ;; sm:QYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQCCAQDKEQCcAQCmAQCYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BAIIBALoFAHoA5gEAjAEA test 'pipe unary', fn: @@ -256,7 +262,6 @@ test 'pipe unary', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_23) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_61) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 28)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inc_60)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -278,6 +283,9 @@ test 'pipe unary', fn: (local $:unwrap_double_0 (ref null any)) (local $:lit_21 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_double_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:double (local.get $:cell_double_0)) @@ -304,7 +312,6 @@ test 'pipe unary', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_21) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_57) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 30)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_double_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -323,7 +330,7 @@ test 'pipe unary', fn: (data $d_1 "double") (data $d_2 "inc") ) - ;; sm:NYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQCCAQCOEACYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQCCAQC6BQB6AOYBAIwBAA + ;; sm:NYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQDgEACcAQCmAQCYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQC6BQB6AOYBAIwBAA test 'match literal first arm', fn: @@ -354,7 +361,6 @@ test 'match literal first arm', fn: (local.set $:succ_128 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_128) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 33)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_127)) ) (func $test::v_118 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -426,7 +432,6 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_4) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_31) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 34)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_19)) ) (func $test::v_176 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -455,7 +460,6 @@ test 'match literal first arm', fn: (local.set $:v_165 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_39) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 50)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_165)) ) (func $test::v_140 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -480,7 +484,6 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_145) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_105) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_144) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 58)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_143)) ) (func $test::v_162 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -504,7 +507,6 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_108) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_53) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_156)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -521,6 +523,9 @@ test 'match literal first arm', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (ref.null $rt/apply.wat:Captures)) (local.set $:v_25 (struct.new $rt/apply.wat:Closure (ref.func $test::v_190) (local.get $:caps_arg))) @@ -536,7 +541,6 @@ test 'match literal first arm', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_0) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 67)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_63)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -550,7 +554,7 @@ test 'match literal first arm', fn: ) (data $d_0 "test") ) - ;; sm:bogFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCCAQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAOAMAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEAggEApAUAegDmAQCMAQA + ;; sm:aogFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBALINAJwBAKYBAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA test 'match with binding', fn: @@ -582,7 +586,6 @@ test 'match with binding', fn: (local.set $:succ_139 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_139) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 35)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_138)) ) (func $test::v_129 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -654,7 +657,6 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_4) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_33) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 36)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_21)) ) (func $test::v_189 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -688,7 +690,6 @@ test 'match with binding', fn: (local.set $:v_176 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_41) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_176)) ) (func $test::v_151 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -713,7 +714,6 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_156) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_116) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_155) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_154)) ) (func $test::v_173 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -737,7 +737,6 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_119) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_57) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 66)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_167)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -759,6 +758,9 @@ test 'match with binding', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:unwrap_x_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_x_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:x (local.get $:cell_x_0)) @@ -782,7 +784,6 @@ test 'match with binding', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_x_0) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_1) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_67)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -799,7 +800,7 @@ test 'match with binding', fn: (data $d_0 "test") (data $d_1 "x") ) - ;; sm:eIgFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCCAQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAPQPAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEAggEApAUAegDmAQCMAQA + ;; sm:dIgFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAMYQAJwBAKYBAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA test 'simple recursion', fn: @@ -833,7 +834,6 @@ test 'simple recursion', fn: (local.set $:succ_161 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_161) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_160)) ) (func $test::v_151 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -905,7 +905,6 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 38)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_23)) ) (func $test::v_177 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -963,7 +962,6 @@ test 'simple recursion', fn: (local.set $:v_208 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_43) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 61)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_208)) ) (func $test::v_183 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -988,7 +986,6 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_188) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_138) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_187) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 69)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_186)) ) (func $test::v_205 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1012,7 +1009,6 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_63) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_141) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_64) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_199)) ) (func $test::v_245 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1051,7 +1047,6 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 78)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_74)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1065,6 +1060,9 @@ test 'simple recursion', fn: (local $:unwrap_recurse_0 (ref null any)) (local $:lit_91 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_recurse_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:recurse (local.get $:cell_recurse_0)) @@ -1099,7 +1097,7 @@ test 'simple recursion', fn: (data $d_0 "test") (data $d_1 "recurse") ) - ;; sm:kgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAggEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCCAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQCCAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAIIBAPYOAJgBAJoBAJIBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCCAQDECgCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA + ;; sm:jgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCWCwCcAQCmAQCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA test 'mutual recursion — ping pong', fn: @@ -1169,6 +1167,9 @@ test 'mutual recursion — ping pong', fn: (local $:unwrap_ping_0 (ref null any)) (local $:lit_22 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_ping_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:ping (local.get $:cell_ping_0)) @@ -1213,7 +1214,7 @@ test 'mutual recursion — ping pong', fn: (data $d_1 "ping") (data $d_2 "pong") ) - ;; sm:NvgHAJgBAJoBAJIBALoBAM4BALoBALIBAG4AugEAwAEAggEAzggAmgEAmgEAkgEAugEAzgEAugEAsgEAbgC6AQDCAQCCAQDSDgCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABAIIBALYFAHoA5gEAjAEA + ;; sm:OPgHAJgBAJoBAJIBALoBAM4BALoBALIBAG4AugEAwAEAggEAzggAmgEAmgEAkgEAugEAzgEAugEAsgEAbgC6AQDCAQCCAQCkDwCcAQCmAQCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABAIIBALYFAHoA5gEAjAEA test 'mutual recursion — is_even / is_odd', fn: @@ -1250,7 +1251,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:succ_295 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_295) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 39)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_294)) ) (func $test::v_285 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1322,7 +1322,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_37) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $test::v_311 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1380,7 +1379,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:v_342 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_45) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 63)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_342)) ) (func $test::v_317 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1405,7 +1403,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_322) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_260) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_321) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_320)) ) (func $test::v_339 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1429,7 +1426,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_65) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_263) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_66) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 75)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_333)) ) (func $test::v_483 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1468,7 +1464,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 80)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_76)) ) (func $test::v_467 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1491,7 +1486,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:succ_391 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_391) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 126)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_390)) ) (func $test::v_381 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1563,7 +1557,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_95) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_97) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 127)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_112)) ) (func $test::v_407 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1621,7 +1614,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:v_438 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_132) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 150)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_438)) ) (func $test::v_413 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1646,7 +1638,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_418) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_272) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_417) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 158)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_416)) ) (func $test::v_435 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1670,7 +1661,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_152) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_275) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_153) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_429)) ) (func $test::v_475 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1709,7 +1699,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_93) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 167)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_163)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1729,6 +1718,9 @@ test 'mutual recursion — is_even / is_odd', fn: (local $:unwrap_is_even_0 (ref null any)) (local $:lit_180 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_is_even_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:is_even (local.get $:cell_is_even_0)) @@ -1777,7 +1769,7 @@ test 'mutual recursion — is_even / is_odd', fn: (data $d_1 "is_even") (data $d_2 "is_odd") ) - ;; sm:mAKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQCCAQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIIBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIIBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAggEA9g4AmAEAmgEAkgEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIIBAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAhAEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABAIQBANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAhAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAhAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCEAQCCDwCaAQCaAQCSAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEAhAEA3A4AmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA + ;; sm:jgKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEArg8AnAEApgEAmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA test 'closure construction and call', fn: @@ -1860,6 +1852,9 @@ test 'closure construction and call', fn: (local $:unwrap_add_0 (ref null any)) (local $:lit_18 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_add_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:add (local.get $:cell_add_0)) @@ -1898,7 +1893,7 @@ test 'closure construction and call', fn: (data $d_1 "add1") (data $d_2 "add") ) - ;; sm:OO4FAJgBAJoBAJIBALoBAL4BASgFnAcAmAEAmgEAkgEArgEAzgEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEAggEA5gwAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BAIIBALQFAHoA5gEAjAEA + ;; sm:Ou4FAJgBAJoBAJIBALoBAL4BASgFnAcAmAEAmgEAkgEArgEAzgEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEAggEAuA0AnAEApgEAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BAIIBALQFAHoA5gEAjAEA test 'self-recursive fn defined inside another fn', fn: @@ -1936,7 +1931,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:succ_178 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_178) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 41)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_177)) ) (func $test::v_168 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2008,7 +2002,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_12) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 42)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_27)) ) (func $test::v_194 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2066,7 +2059,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:v_225 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_47) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 65)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_225)) ) (func $test::v_200 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2091,7 +2083,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_205) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_155) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_204) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_203)) ) (func $test::v_222 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2115,7 +2106,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_67) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_158) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_68) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 77)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_216)) ) (func $test::v_266 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2156,7 +2146,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $n_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_8) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 82)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_78)) ) (func $test::v_272 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2195,6 +2184,9 @@ test 'self-recursive fn defined inside another fn', fn: (local $:unwrap_outer_0 (ref null any)) (local $:lit_106 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_outer_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:outer (local.get $:cell_outer_0)) @@ -2230,7 +2222,7 @@ test 'self-recursive fn defined inside another fn', fn: (data $d_0 "test") (data $d_1 "outer") ) - ;; sm:owHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAggEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAIIBAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCCAQC6DwCYAQCaAQCSAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIIBAIQJAJgBAJoBAJIBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAM4KAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA + ;; sm:nwHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAKALAJwBAKYBAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA # TODO, duplicate? @@ -2267,7 +2259,6 @@ test 'recursive list sum', fn: (local.set $:succ_296 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_296) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 47)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_295)) ) (func $test::v_268 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2367,7 +2358,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_9) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_11) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_45) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 48)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_33)) ) (func $test::v_314 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2437,7 +2427,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_60) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_59) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_350) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 96)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_349)) ) (func $test::v_322 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2527,7 +2516,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_54) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_101) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 106)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_76)) ) (func $test::v_362 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2552,7 +2540,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_367) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_243) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_366) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 116)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_365)) ) (func $test::v_384 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2576,7 +2563,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_110) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_246) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_111) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 120)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_378)) ) (func $test::v_466 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2618,7 +2604,6 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $items_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_7) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 125)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_121)) ) (func $test::v_428 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2713,6 +2698,9 @@ test 'recursive list sum', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_141 (ref null any)) (local $:lit_142 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_5 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_sum_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:sum (local.get $:cell_sum_0)) @@ -2749,7 +2737,7 @@ test 'recursive list sum', fn: (data $d_0 "test") (data $d_1 "sum") ) - ;; sm:gALuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAggEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAIIBAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAggEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAIQBAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAhAEAwg8AmAEAmgEAmgEAmgEAkgEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCEAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQAB0AsAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA + ;; sm:-wHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQABogwAnAEApgEAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA @@ -2783,6 +2771,9 @@ test 'main returns exit code', fn: (local $:pub_name (ref null any)) (local $:unwrap_main_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_main_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:main (local.get $:cell_main_0)) @@ -2811,4 +2802,4 @@ test 'main returns exit code', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:F4IFAJgBARoBiAEAbgDAAQDsCQCYAQCaAQBsAHoAzgEAoAEArgEAlAEAlgEAzAEAtAEAbgDQAQCmBQB6AOYBAIwBAA + ;; sm:GYIFAJgBARoBiAEAbgDAAQC-CgCcAQCmAQCYAQCaAQBsAHoAzgEAoAEArgEAlAEAlgEAzAEAtAEAbgDQAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_io.fnk b/src/passes/wasm/test_io.fnk index b1ece94..f5ae018 100644 --- a/src/passes/wasm/test_io.fnk +++ b/src/passes/wasm/test_io.fnk @@ -360,7 +360,6 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_113) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_110) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 115)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_57)) ) (import "std/io.fnk" "fink_module" (func $std/io.fnk:fink_module (type $rt/apply.wat:Fn3))) @@ -372,6 +371,9 @@ test 'std io import handling', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_7 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_ham_5 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:ham (local.get $:cell_ham_5)) @@ -405,4 +407,4 @@ test 'std io import handling', fn: (data $d_8 "stdout") (data $d_9 "std/io.fnk") ) - ;; sm:xQGMCACWAQC6AQDIAQDGAQDKAQBuAL4BAMgBAMQBAIIBAOAMAJYBALoBAMgBAMYBAMoBANABAL4BAaYBGlQAlgIA1AEBVASSAQC0AQDsAQEBDJoLAJYBALoBAMgBAMYBAMoBANABAL4BAMoBAMQCANQBAG4AvgEAyAEAwAEAggEAjA0AlgEAugEAyAEAxgEAygEAygEAoAEAqgEAlAEAlgEAygEA9AIA1AEBMwSSAQCwAQDoAQEBDLYNAJYBAJoBAJYBAJoBAJYBAJoBAJYBAJoBAJYBALoBAMYBAb8BBloBEAZaARAFWAEOBFYBDAVYALoCANQBAWAEkAEAbgDCAQDCAQDAAQCCAQCQCQCWAQCaAQCWAQC6AQDIAQDCAQDCAQDCAQDCAQBuAL4BAMABAMABAMABAMABAOIKAJYBAJoBAJYBALoBAMgBAMIBAMIBAMIBAMgBANgCANQBAZsBOpIBAQA65AoAlgEAmgEAlgEAugEAyAEAwgEAwgEAyAEA3gIA1AEBADqSAQEAOp4KAJYBAJoBAJYBALoBAMgBAMIBAMgBALYCANQBAQA6kgEBADrYCQCWAQCaAQCWAQC6AQDIAQDIAQCOAgDUAQEAOpIBAQA6lAkAlgEAugEAyAEAyAEA6AEA1AEBADqSAQEAOr4GALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBADq6BABYAKoJAJYBALoBAMYBALgBANQBAHoA0gEAegDUAQBuAL4BAMABAMABAIQBAMoKAJgBAJgBAGgAtAEA1AEAlgEAggEAgAIA5gUAegDmAQCMAQA + ;; sm:xgGMCACWAQC6AQDIAQDGAQDKAQBuAL4BAMgBAMQBAIIBAOAMAJYBALoBAMgBAMYBAMoBANABAL4BAaYBGlQAlgIA1AEBVASSAQC0AQDsAQEBDJoLAJYBALoBAMgBAMYBAMoBANABAL4BAMoBAMQCANQBAG4AvgEAyAEAwAEAggEAjA0AlgEAugEAyAEAxgEAygEAygEAoAEAqgEAlAEAlgEAygEA9AIA1AEBMwSSAQCwAQDoAQEBDLYNAJYBAJoBAJYBAJoBAJYBAJoBAJYBAJoBAJYBALoBAMYBAb8BBloBEAZaARAFWAEOBFYBDAVYALoCANQBAWAEkAEAbgDCAQDCAQDAAQCCAQCQCQCWAQCaAQCWAQC6AQDIAQDCAQDCAQDCAQDCAQBuAL4BAMABAMABAMABAMABAOIKAJYBAJoBAJYBALoBAMgBAMIBAMIBAMIBAMgBANgCANQBAZsBOpIBAQA65AoAlgEAmgEAlgEAugEAyAEAwgEAwgEAyAEA3gIA1AEBADqSAQEAOp4KAJYBAJoBAJYBALoBAMgBAMIBAMgBALYCANQBAQA6kgEBADrYCQCWAQCaAQCWAQC6AQDIAQDIAQCOAgDUAQEAOpIBAQA6lAkAlgEAugEAyAEAyAEA6AEA1AEBADqSAQEAOr4GALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBADq6BABYAKoJAJYBALoBAMYBALgBANQBAHoA0gEAegDUAQBuAL4BAMABAMABAJwLAJwBAKYBAJgBAJgBAGgAtAEA1AEAlgEAggEAgAIA5gUAegDmAQCMAQA diff --git a/src/passes/wasm/test_linking.fnk b/src/passes/wasm/test_linking.fnk index 651fd98..06287cf 100644 --- a/src/passes/wasm/test_linking.fnk +++ b/src/passes/wasm/test_linking.fnk @@ -119,7 +119,6 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (func $./test.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -129,6 +128,9 @@ test 'multi module import', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 10))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_2))) (local.set $:v_73 (struct.new $rt/apply.wat:Closure (ref.func $./test.fnk::v_127) (local.get $:caps_arg))) @@ -160,7 +162,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $ham_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_30) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 35)) + (call $rt/trace.wat:trace_push (i32.const 1) (i32.const 35)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $foo_95)) ) (func $./test_link/simple.fnk::v_146 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -279,7 +281,6 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_47) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_44) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 49)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (func $./test_link/simple.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -290,6 +291,9 @@ test 'multi module import', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_3 22))) + (call $rt/modules.wat:register_module (i32.const 1) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_shrub_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/simple.fnk:shrub (local.get $:cell_shrub_1)) @@ -329,6 +333,9 @@ test 'multi module import', fn: (local $:pub_name (ref null any)) (local $:unwrap_foo_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_7 27))) + (call $rt/modules.wat:register_module (i32.const 2) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_foo_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/foobar/spam.fnk:foo (local.get $:cell_foo_0)) @@ -365,7 +372,7 @@ test 'multi module import', fn: (data $d_7 "./test_link/foobar/spam.fnk") (data $d_8 "foo") ) - ;; sm:sAHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAIIBAKoIAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAugEAwgEAbgC-AQDCAQCCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQCCAQC0CQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBASgBiAEBCQbCCgCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA + ;; sm:tAHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAPwIAJ4BAKYBAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAugEAwgEAbgC-AQDCAQCCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQCGCgCeAQCmAQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBASgBiAEBCQaUCwCeAQCmAQCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA --- @@ -493,7 +500,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (func $./test.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -503,6 +509,9 @@ test 'diamond with two paths to same dep', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 10))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_2))) (local.set $:v_70 (struct.new $rt/apply.wat:Closure (ref.func $./test.fnk::v_124) (local.get $:caps_arg))) @@ -668,7 +677,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_97) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_94) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 99)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_75)) ) (func $./test_link/diamond.fnk::v_360 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -784,7 +792,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_112) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_109) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 114)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_51)) ) (func $./test_link/diamond.fnk::v_416 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -896,7 +903,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_127) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 129)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_27)) ) (func $./test_link/diamond.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -907,6 +913,9 @@ test 'diamond with two paths to same dep', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_3 23))) + (call $rt/modules.wat:register_module (i32.const 1) (local.get $:mod_reg_url)) (local.set $:ret_5 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_total_3 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/diamond.fnk:total (local.get $:cell_total_3)) @@ -935,6 +944,9 @@ test 'diamond with two paths to same dep', fn: (local $:pub_name (ref null any)) (local $:unwrap_base_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_11 26))) + (call $rt/modules.wat:register_module (i32.const 2) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_base_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/sub/common.fnk:base (local.get $:cell_base_0)) @@ -1085,7 +1097,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_42) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 44)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $./test_link/sub/left.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1096,6 +1107,9 @@ test 'diamond with two paths to same dep', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_13 24))) + (call $rt/modules.wat:register_module (i32.const 3) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_left_val_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/sub/left.fnk:left_val (local.get $:cell_left_val_1)) @@ -1242,7 +1256,6 @@ test 'diamond with two paths to same dep', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_42) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_39) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 44)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (func $./test_link/sub/right.fnk::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1253,6 +1266,9 @@ test 'diamond with two paths to same dep', fn: (local $:imp_url (ref null any)) (local $:imp_caps_arg (ref null $rt/apply.wat:Captures)) (local $:imp_mod_clos (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_17 25))) + (call $rt/modules.wat:register_module (i32.const 4) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_right_val_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $./test_link/sub/right.fnk:right_val (local.get $:cell_right_val_1)) @@ -1298,4 +1314,4 @@ test 'diamond with two paths to same dep', fn: (data $d_19 "base") (data $d_20 "./test_link/sub/common.fnk") ) - ;; sm:wAPsDwCWAQC6AQDGAQECBVgAbgDCAQCEBwCWAQCaAQCWAQC6AQDGAQBuAL4BAM4IAJYBALoBAMYBAMYBALgBANwBAQEqkgEBACrCBgC6AQDGAQBuAM4IAJoBAJoBAJoBAJoBAJQBAOABANwBALYBANwBAQAqwAQAWACwCQCUAQC6AQDGAQC4AQDeAQB6AN4BAHoA3gEAbgC8AQC-AQC-AQCCAQCqCACYAQC0AQDeAQCWAQCCAQCcAgCIBgB6APIBAI4BAKAJAJYBALoBAMYBAMoBANgBAJYBAJYBAM4BAN4BAG4A0gEArggAlgEAugEAxgEA0AEAuAEA-gEBgAkbggoAlgEAugEAxgEA0AEAzgEBqwMEVgDuAQD6AQGsAw_eBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAa0DIpIBAQAi5AYAugEAyAEAbgD0CACcAQCaAQCcAQCaAQCWAQDkAQD6AQC4AQD6AQEAIuAEAFgA8goAlgEAugEAxgEA0AEAzgEAogIA-AEAegD4AQB6APgBAG4AvgEAvgEAvgEAggEAjgsAlgEAugEAxgEAzgEBSwlgAJ4CAPoBAJYBAIIBAKICAN4HAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBASaSAQEAJuQGALoBAMgBAG4A9AgAnAEAmgEAnAEAmgEAlgEA5AEA-gEAuAEA-gEBACbgBABYAKIKAJYBALoBAMYBAM4BAOwBAPoBAHoA-AEAegD6AQBuAL4BAMABAMABAIQBALoKAJYBALoBAMYBAUcIXgDoAQD6AQCWAQCCAQCgAgDeBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAQEkkgEBACTkBgC6AQDIAQBuAPQIAJwBAJoBAJwBAJoBAJYBAOQBAPoBALgBAPoBAQAk4AQAWADOCQCUAQC6AQDGAQC4AQD6AQB6APgBAHoA-gEAbgC8AQDAAQDAAQCEAQC4CQCYAQCcAQCWAQC0AQD6AQCYAQCCAQCeAgDYBgB6AIwCAI4BALIJAJgBAJoBAJgBAbkEBIoBANABANoBAJgBAJgBAMwBAOABAG4A0AEAqgYAegCSAgCQAQCqCQCWAQC6AQDEAQDSAQDmAQCYAQCYAQDUAQDsAQBuANgBAOYIAJYBALoBAMYBAe4BBFYAuAEA-AEBYgGKAQENCNQHAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBVR6UAQEAHuQGALoBAMgBAG4A7ggAmgEAmgEAnAEAmgEAlAEA4gEA-gEAuAEA-gEBAB7cBABYAMwJAJQBALoBAMYBALgBAPoBAHoA-gEAegD6AQBuALwBAL4BAL4BAIIBAL4JAJgBAKIBAKQBALQBAPoBAJgBAIIBAKICANwGAHoAjgIAkAEAsAkAlgEAugEAxAEA1gEA7AEAmAEAmAEA1gEA8gEAbgDaAQDoCACWAQC6AQDGAQGMAwRWALgBAPoBAW4BigEBDQjWBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPQIAJYBALoBAMgBAMgBALoBAPwBAWEjlAEBACPmBgC6AQDIAQBuAPAIAJoBAJoBAJwBAJoBAJQBAOIBAPwBALgBAPwBAQAj3gQAWADOCQCUAQC6AQDGAQC4AQD8AQB6APwBAHoA_AEAbgC8AQC-AQC-AQCCAQDCCQCYAQCkAQCqAQC0AQD8AQCYAQCCAQCiAgDiBgB6AJACAJABAA + ;; sm:xAPsDwCWAQC6AQDGAQECBVgAbgDCAQCEBwCWAQCaAQCWAQC6AQDGAQBuAL4BAM4IAJYBALoBAMYBAMYBALgBANwBAQEqkgEBACrCBgC6AQDGAQBuAM4IAJoBAJoBAJoBAJoBAJQBAOABANwBALYBANwBAQAqwAQAWACwCQCUAQC6AQDGAQC4AQDeAQB6AN4BAHoA3gEAbgC8AQC-AQC-AQD8CACeAQCmAQCYAQC0AQDeAQCWAQCCAQCcAgCIBgB6APIBAI4BAKAJAJYBALoBAMYBAMoBANgBAJYBAJYBAM4BAN4BAG4A0gEArggAlgEAugEAxgEA0AEAuAEA-gEBgAkbggoAlgEAugEAxgEA0AEAzgEBqwMEVgDuAQD6AQGsAw_eBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAa0DIpIBAQAi5AYAugEAyAEAbgD0CACcAQCaAQCcAQCaAQCWAQDkAQD6AQC4AQD6AQEAIuAEAFgA8goAlgEAugEAxgEA0AEAzgEAogIA-AEAegD4AQB6APgBAG4AvgEAvgEAvgEAjgsAlgEAugEAxgEAzgEBSwlgAJ4CAPoBAJYBAIIBAKICAN4HAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBASaSAQEAJuQGALoBAMgBAG4A9AgAnAEAmgEAnAEAmgEAlgEA5AEA-gEAuAEA-gEBACbgBABYAKIKAJYBALoBAMYBAM4BAOwBAPoBAHoA-AEAegD6AQBuAL4BAMABAMABALoKAJYBALoBAMYBAUcIXgDoAQD6AQCWAQCCAQCgAgDeBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPIIAJYBALoBAMgBAMgBALoBAPoBAQEkkgEBACTkBgC6AQDIAQBuAPQIAJwBAJoBAJwBAJoBAJYBAOQBAPoBALgBAPoBAQAk4AQAWADOCQCUAQC6AQDGAQC4AQD6AQB6APgBAHoA-gEAbgC8AQDAAQDAAQCKCgCeAQCmAQCYAQCcAQCWAQC0AQD6AQCYAQCCAQCeAgDYBgB6AIwCAI4BAIQKAKABAKYBAJgBAJoBAJgBAbkEBIoBANABANoBAJgBAJgBAMwBAOABAG4A0AEAqgYAegCSAgCQAQCqCQCWAQC6AQDEAQDSAQDmAQCYAQCYAQDUAQDsAQBuANgBAOYIAJYBALoBAMYBAe4BBFYAuAEA-AEBYgGKAQENCNQHAJYBAJoBAJYBALoBAMgBAG4AvgEA8ggAlgEAugEAyAEAyAEAugEA-gEBVR6UAQEAHuQGALoBAMgBAG4A7ggAmgEAmgEAnAEAmgEAlAEA4gEA-gEAuAEA-gEBAB7cBABYAMwJAJQBALoBAMYBALgBAPoBAHoA-gEAegD6AQBuALwBAL4BAL4BAJAKAKABAKYBAJgBAKIBAKQBALQBAPoBAJgBAIIBAKICANwGAHoAjgIAkAEAsAkAlgEAugEAxAEA1gEA7AEAmAEAmAEA1gEA8gEAbgDaAQDoCACWAQC6AQDGAQGMAwRWALgBAPoBAW4BigEBDQjWBwCWAQCaAQCWAQC6AQDIAQBuAL4BAPQIAJYBALoBAMgBAMgBALoBAPwBAWEjlAEBACPmBgC6AQDIAQBuAPAIAJoBAJoBAJwBAJoBAJQBAOIBAPwBALgBAPwBAQAj3gQAWADOCQCUAQC6AQDGAQC4AQD8AQB6APwBAHoA_AEAbgC8AQC-AQC-AQCUCgCgAQCmAQCYAQCkAQCqAQC0AQD8AQCYAQCCAQCiAgDiBgB6AJACAJABAA diff --git a/src/passes/wasm/test_literals.fnk b/src/passes/wasm/test_literals.fnk index 96c9e28..9de6a46 100644 --- a/src/passes/wasm/test_literals.fnk +++ b/src/passes/wasm/test_literals.fnk @@ -12,6 +12,9 @@ test 'literal bool', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (ref.i31 (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -29,7 +32,7 @@ test 'literal bool', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQAEYABuAMABAKYFAHoA5gEAjAEA + ;; sm:C-IFAJwBAKYBAJgBAQAEYABuAMABAKYFAHoA5gEAjAEA test 'literal bool false', fn: @@ -42,6 +45,9 @@ test 'literal bool false', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (ref.i31 (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -59,7 +65,7 @@ test 'literal bool false', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQAFYABuAMABAKYFAHoA5gEAjAEA + ;; sm:C-IFAJwBAKYBAJgBAQAFYABuAMABAKYFAHoA5gEAjAEA test 'literal int', fn: @@ -72,6 +78,9 @@ test 'literal int', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 42))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -89,7 +98,7 @@ test 'literal int', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQACigEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQACigEAbgDAAQCmBQB6AOYBAIwBAA test 'literal neg 0', fn: @@ -102,6 +111,9 @@ test 'literal neg 0', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -119,7 +131,7 @@ test 'literal neg 0', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQACiAEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQACiAEAbgDAAQCmBQB6AOYBAIwBAA @@ -133,6 +145,9 @@ test 'literal float', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/float.wat:F64 (f64.const 123400))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -150,7 +165,7 @@ test 'literal float', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQAIlgEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQAIlgEAbgDAAQCmBQB6AOYBAIwBAA test 'literal decimal', fn: @@ -163,6 +178,9 @@ test 'literal decimal', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/decimal.wat:Decimal (i64.const 10) (i32.const -1))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -180,7 +198,7 @@ test 'literal decimal', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQAEuAEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQAEuAEAbgDAAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_operators.fnk b/src/passes/wasm/test_operators.fnk index 3cb0b6c..06e29e9 100644 --- a/src/passes/wasm/test_operators.fnk +++ b/src/passes/wasm/test_operators.fnk @@ -13,6 +13,9 @@ test 'add two literals', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 2))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 3))) @@ -29,7 +32,7 @@ test 'add two literals', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBCAGIAQEHBdoFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBCAGIAQEHBdoFAHoA5gEAjAEA @@ -56,6 +59,9 @@ test 'chained arithmetic', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_0))) (local.set $:v_16 (struct.new $rt/apply.wat:Closure (ref.func $test::v_24) (local.get $:caps_arg))) @@ -74,7 +80,7 @@ test 'chained arithmetic', fn: ) (data $d_0 "test") ) - ;; sm:D_YFAJQBALoBAMQBARABiAEBDwnGBwCYAQC0AQDQAQEAAYgBAQgBiAEBBwXWBQB6AOYBAIwBAA + ;; sm:EfYFAJQBALoBAMQBARABiAEBDwmYCACcAQCmAQCYAQC0AQDQAQEAAYgBAQgBiAEBBwXWBQB6AOYBAIwBAA test 'unary not', fn: @@ -86,6 +92,9 @@ test 'unary not', fn: (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (ref.i31 (i32.const 1))) (return_call $std/operators.fnk:op_not (local.get $:ctx_param) (local.get $:lit_1) (local.get $:ret_0)) @@ -101,7 +110,7 @@ test 'unary not', fn: ) (data $d_0 "test") ) - ;; sm:B9YEAJgBAQgEYAEHCLAFAHoA5gEAjAEA + ;; sm:CagFAJwBAKYBAJgBAQgEYAEHCLAFAHoA5gEAjAEA test 'comparison eq', fn: @@ -114,6 +123,9 @@ test 'comparison eq', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 2))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 3))) @@ -130,7 +142,7 @@ test 'comparison eq', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBCgGIAQEJBtYFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBCgGIAQEJBtYFAHoA5gEAjAEA test 'comparison lt', fn: @@ -143,6 +155,9 @@ test 'comparison lt', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 2))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 3))) @@ -159,7 +174,7 @@ test 'comparison lt', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBCAGIAQEHBdYFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBCAGIAQEHBdYFAHoA5gEAjAEA test 'logical and', fn: @@ -172,6 +187,9 @@ test 'logical and', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (ref.i31 (i32.const 1))) (local.set $:lit_2 (ref.i31 (i32.const 0))) @@ -188,7 +206,7 @@ test 'logical and', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQAEYAESBWABEQ7YBQB6AOYBAIwBAA + ;; sm:Cu4FAJwBAKYBAJgBAQAEYAESBWABEQ7YBQB6AOYBAIwBAA test 'logical or', fn: @@ -201,6 +219,9 @@ test 'logical or', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (ref.i31 (i32.const 1))) (local.set $:lit_2 (ref.i31 (i32.const 0))) @@ -217,7 +238,7 @@ test 'logical or', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQAEYAEQBWABDw3WBQB6AOYBAIwBAA + ;; sm:Cu4FAJwBAKYBAJgBAQAEYAEQBWABDw3WBQB6AOYBAIwBAA test 'power', fn: @@ -230,6 +251,9 @@ test 'power', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 2))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 8))) @@ -246,7 +270,7 @@ test 'power', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBCgGIAQEJBtgFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBCgGIAQEJBtgFAHoA5gEAjAEA test 'power float', fn: @@ -259,6 +283,9 @@ test 'power float', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/float.wat:F64 (f64.const 2))) (local.set $:lit_2 (struct.new $std/float.wat:F64 (f64.const 0.5))) @@ -275,7 +302,7 @@ test 'power float', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQADjAEBDgOQAQENCtgFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQADjAEBDgOQAQENCtgFAHoA5gEAjAEA test 'divmod', fn: @@ -288,6 +315,9 @@ test 'divmod', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 10))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 3))) @@ -304,7 +334,7 @@ test 'divmod', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQACigEBDAGIAQELB94FAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQACigEBDAGIAQELB94FAHoA5gEAjAEA test 'rotate left', fn: @@ -317,6 +347,9 @@ test 'rotate left', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 1))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 4))) @@ -333,7 +366,7 @@ test 'rotate left', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBDAGIAQELB9oFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBDAGIAQELB9oFAHoA5gEAjAEA test 'rotate right', fn: @@ -346,6 +379,9 @@ test 'rotate right', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 16))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 4))) @@ -362,4 +398,4 @@ test 'rotate right', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQACigEBDgGIAQENCNoFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQACigEBDgGIAQENCNoFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_range.fnk b/src/passes/wasm/test_range.fnk index 85f8f0b..4f3490d 100644 --- a/src/passes/wasm/test_range.fnk +++ b/src/passes/wasm/test_range.fnk @@ -12,6 +12,9 @@ test 'range exclusive', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 0))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 10))) @@ -28,7 +31,7 @@ test 'range exclusive', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBBgKKAQEFBcwFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBBgKKAQEFBcwFAHoA5gEAjAEA test 'range inclusive', fn: @@ -41,6 +44,9 @@ test 'range inclusive', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 0))) (local.set $:lit_2 (struct.new $std/int.wat:I64 (i64.const 10))) @@ -57,7 +63,7 @@ test 'range inclusive', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQABiAEBCAKKAQEHBswFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQABiAEBCAKKAQEHBswFAHoA5gEAjAEA test 'open range exclusive', fn: @@ -69,6 +75,9 @@ test 'open range exclusive', fn: (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (struct.new $std/int.wat:I64 (i64.const 0))) (return_call $std/range.fnk:from (local.get $:ctx_param) (local.get $:lit_1) (local.get $:ret_0)) @@ -84,7 +93,7 @@ test 'open range exclusive', fn: ) (data $d_0 "test") ) - ;; sm:B9YEAJgBAQABiAEBAAOkBQB6AOYBAIwBAA + ;; sm:CagFAJwBAKYBAJgBAQABiAEBAAOkBQB6AOYBAIwBAA test 'range in', fn: @@ -110,6 +119,9 @@ test 'range in', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_2 (ref null any)) (local $:lit_3 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_0))) (local.set $:v_16 (struct.new $rt/apply.wat:Closure (ref.func $test::v_24) (local.get $:caps_arg))) @@ -128,4 +140,4 @@ test 'range in', fn: ) (data $d_0 "test") ) - ;; sm:D_YFAJQBALoBAMQBAQABiAEBAArCBwCYAQC0AQDQAQEKAYgBAQYCigEBBQXKBQB6AOYBAIwBAA + ;; sm:EfYFAJQBALoBAMQBAQABiAEBAAqUCACcAQCmAQCYAQC0AQDQAQEKAYgBAQYCigEBBQXKBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_records.fnk b/src/passes/wasm/test_records.fnk index 44fb835..158cd8b 100644 --- a/src/passes/wasm/test_records.fnk +++ b/src/passes/wasm/test_records.fnk @@ -29,6 +29,9 @@ test 'rec literal', fn: (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) (local $:lit_3 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_0))) (local.set $:v_18 (struct.new $rt/apply.wat:Closure (ref.func $test::v_26) (local.get $:caps_arg))) @@ -50,7 +53,7 @@ test 'rec literal', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:Eb4HAJQBALoBAMQBAQ4BkAEBBgGIAQEFBKAIAJgBALQBANABAQ0MYAECAZABAQYBiAEBBQTsBQB6AOYBAIwBAA + ;; sm:E74HAJQBALoBAMQBAQ4BkAEBBgGIAQEFBPIIAJwBAKYBAJgBALQBANABAQ0MYAECAZABAQYBiAEBBQTsBQB6AOYBAIwBAA test 'rec destructure', fn: @@ -189,7 +192,6 @@ test 'rec destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_53) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 55)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_36)) ) (func $test::v_175 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -217,6 +219,9 @@ test 'rec destructure', fn: (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) (local $:lit_5 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_a_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test::a_0 (local.get $:cell_a_0)) @@ -241,7 +246,7 @@ test 'rec destructure', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:WYwIAJYBAJoBAJYBALoBAMYBAKIBAQ4BUACuAQEkBfoHAJYBAJoBAJYBALoBAMgBAMIBAG4AvgEAwAEAjgkAlgEAmgEAlgEAugEAyAEAyAEA4AEA0gEBMRiSAQEAGJAJAJYBALoBAMgBAMgBAOgBANIBAQAYkgEBABi8BgC6AQDIAQBuAMoIAJwBAJoBAJwBAJoBAJYBAOQBANIBALgBANIBAQAYtgQAWACmCQCWAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC-AQC-AQC-AQCCAQC2CACUAQC6AQDGAQC4AQDSAQEmAZABAQYBiAEBBQSICQCYAQCUAQBmALQBANQBAQ0MYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA + ;; sm:WowIAJYBAJoBAJYBALoBAMYBAKIBAQ4BUACuAQEkBfoHAJYBAJoBAJYBALoBAMgBAMIBAG4AvgEAwAEAjgkAlgEAmgEAlgEAugEAyAEAyAEA4AEA0gEBMRiSAQEAGJAJAJYBALoBAMgBAMgBAOgBANIBAQAYkgEBABi8BgC6AQDIAQBuAMoIAJwBAJoBAJwBAJoBAJYBAOQBANIBALgBANIBAQAYtgQAWACmCQCWAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC-AQC-AQC-AQC2CACUAQC6AQDGAQC4AQDSAQEmAZABAQYBiAEBBQTaCQCcAQCmAQCYAQCUAQBmALQBANQBAQ0MYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA test 'rec spread', fn: expect wat ƒink: @@ -322,6 +327,9 @@ test 'rec spread', fn: (local $:lit_2 (ref null any)) (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_r_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:r (local.get $:cell_r_0)) @@ -350,7 +358,7 @@ test 'rec spread', fn: (data $d_3 "b") (data $d_4 "a") ) - ;; sm:LMQHAJYBALoBAMQBAS4BkgEBBgGKAQEFBKgMAJQBALoBAM4BALoBAMQBAJwBAKIBAJQBAJYBAMYBALYBANABAQsLYgCsAQECA54KAJQBALoBAM4BALoBAMQBAOIBANABAQ0BkAEBBgGIAQEFBIYJAJgBAJQBAGAA3gEA0AEBDQxgAQIBkAEBBgGIAQEFBOwFAHoA5gEAjAEA + ;; sm:LsQHAJYBALoBAMQBAS4BkgEBBgGKAQEFBKgMAJQBALoBAM4BALoBAMQBAJwBAKIBAJQBAJYBAMYBALYBANABAQsLYgCsAQECA54KAJQBALoBAM4BALoBAMQBAOIBANABAQ0BkAEBBgGIAQEFBNgJAJwBAKYBAJgBAJQBAGAA3gEA0AEBDQxgAQIBkAEBBgGIAQEFBOwFAHoA5gEAjAEA test 'rec empty literal', fn: expect wat ƒink: @@ -363,6 +371,9 @@ test 'rec empty literal', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/rec.fnk:new)) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -380,7 +391,7 @@ test 'rec empty literal', fn: ) (data $d_0 "test") ) - ;; sm:CZIGAJgBAQACYABuAMABAKYFAHoA5gEAjAEA + ;; sm:C-QGAJwBAKYBAJgBAQACYABuAMABAKYFAHoA5gEAjAEA test 'rec single field', fn: expect wat ƒink: @@ -394,6 +405,9 @@ test 'rec single field', fn: (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) (local $:lit_3 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/rec.fnk:new)) (local.set $:lit_2 (call $std/str.fnk:from_data (data.ref $d_0 1))) @@ -412,7 +426,7 @@ test 'rec single field', fn: (data $d_0 "a") (data $d_1 "test") ) - ;; sm:CeQGAJgBAQAGYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA + ;; sm:C7YHAJwBAKYBAJgBAQAGYAECAZABAQYBiAEBBQTuBQB6AOYBAIwBAA test 'rec nested destructure', fn: expect wat ƒink: @@ -529,7 +543,6 @@ test 'rec nested destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_a_0) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_61) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_58) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 63)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_50)) ) (func $test::v_192 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -620,7 +633,6 @@ test 'rec nested destructure', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_10) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_74) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_71) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 76)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_29)) ) (func $test::v_246 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -649,6 +661,9 @@ test 'rec nested destructure', fn: (local $:lit_5 (ref null any)) (local $:lit_6 (ref null any)) (local $:lit_7 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_a_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test::a_0 (local.get $:cell_a_0)) @@ -676,7 +691,7 @@ test 'rec nested destructure', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:f8IHAJYBALoBAMYBAKIBAK4BAG4AygEA_AYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQEmB5IBAQAHvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAB7oEAFgA9gkAlgEAugEAxgEAogEAuAEA0gEAegDSAQB6ANIBAK4BAG4AygEAvgEAvgEAggEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQElEpIBAQASvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAEroEAFgApgkAlgEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvgEAvgEAvgEAggEAuAgAlAEAugEAxgEAuAEA1AEBDAxgAQIBkAEBAAr0CQCYAQCUAQBmAJQBAGYAtAEA1AEBBgdgAQIBkAEBBgKKAQEFBe4FAHoA5gEAjAEA + ;; sm:f8IHAJYBALoBAMYBAKIBAK4BAG4AygEA_AYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQEmB5IBAQAHvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAB7oEAFgA9gkAlgEAugEAxgEAogEAuAEA0gEAegDSAQB6ANIBAK4BAG4AygEAvgEAvgEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQElEpIBAQASvgYAugEAyAEAbgDOCACcAQCaAQCcAQCaAQCWAQDkAQDUAQC4AQDUAQEAEroEAFgApgkAlgEAugEAxgEAuAEA0gEAegDSAQB6ANIBAG4AvgEAvgEAvgEAuAgAlAEAugEAxgEAuAEA1AEBDAxgAQIBkAEBAArGCgCcAQCmAQCYAQCUAQBmAJQBAGYAtAEA1AEBBgdgAQIBkAEBBgKKAQEFBe4FAHoA5gEAjAEA test 'rec spread merge two', fn: expect wat ƒink: @@ -779,6 +794,9 @@ test 'rec spread merge two', fn: (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) (local $:lit_5 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_r1_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:r1 (local.get $:cell_r1_0)) @@ -813,7 +831,7 @@ test 'rec spread merge two', fn: (data $d_3 "b") (data $d_4 "a") ) - ;; sm:OcIIAJYBALoBAM4BALoBAMQBAK4BAT4Ezg0AlgEAugEAzgEAugEAxAEAzgEAugEAngEApgEAlAEAlgEAyAEA4gEA0AEBDQxiAK4BAQIEhA4AlAEAugEAzgEAugEAzgEAugEAxAEAnAEApgEAlAEAlgEAyAEAjgIA0AEBDwZgAQIBkAEBBgGKAQEFBPoJAJgBAJYBAGQAlgEAZACMAgDQAQEZBmABAgGQAQEGAYgBAQUE7AUAegDmAQCMAQA + ;; sm:O8IIAJYBALoBAM4BALoBAMQBAK4BAT4Ezg0AlgEAugEAzgEAugEAxAEAzgEAugEAngEApgEAlAEAlgEAyAEA4gEA0AEBDQxiAK4BAQIEhA4AlAEAugEAzgEAugEAzgEAugEAxAEAnAEApgEAlAEAlgEAyAEAjgIA0AEBDwZgAQIBkAEBBgGKAQEFBMwKAJwBAKYBAJgBAJYBAGQAlgEAZACMAgDQAQEZBmABAgGQAQEGAYgBAQUE7AUAegDmAQCMAQA # TODO: should this be in strings? test 'rec format template', fn: @@ -843,6 +861,9 @@ test 'rec format template', fn: (local $:lit_2 (ref null any)) (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_2 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_0))) (local.set $:v_17 (struct.new $rt/apply.wat:Closure (ref.func $test::v_25) (local.get $:caps_arg))) @@ -864,7 +885,7 @@ test 'rec format template', fn: (data $d_1 "a") (data $d_2 "test") ) - ;; sm:EeYHAJQBALoBAMQBAQIFkAEA1AEBARDmBwCYAQC0AQDQAQEQBmABAgGQAQEGAYgBAQUE7AUAegDmAQCMAQA + ;; sm:E-YHAJQBALoBAMQBAQIFkAEA1AEBARC4CACcAQCmAQCYAQC0AQDQAQEQBmABAgGQAQEGAYgBAQUE7AUAegDmAQCMAQA test 'rec dot dynamic key', fn: expect wat ƒink: @@ -923,6 +944,9 @@ test 'rec dot dynamic key', fn: (local $:lit_3 (ref null any)) (local $:lit_4 (ref null any)) (local $:lit_5 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_r_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:r (local.get $:cell_r_0)) @@ -953,5 +977,5 @@ test 'rec dot dynamic key', fn: (data $d_2 "a") (data $d_3 "k") ) - ;; sm:JMwOAJQBALoBAM4BALoBAM4BALoBAMQBAJwBAKIBAJQBAJYBAMYBARgBjAEAnAEAogEAlAEAlgEAxgEArAEArAEBEAX6CQCYAQCUAQBgAJQBAGAAiAIA0AEBHwdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA -BAK4BAMwBAR8HWgECAYoBAQYChAEBBQXYBQB6AOYBAIwBAA + ;; sm:JswOAJQBALoBAM4BALoBAM4BALoBAMQBAJwBAKIBAJQBAJYBAMYBARgBjAEAnAEAogEAlAEAlgEAxgEArAEArAEBEAXMCgCcAQCmAQCYAQCUAQBgAJQBAGAAiAIA0AEBHwdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA + diff --git a/src/passes/wasm/test_sets.fnk b/src/passes/wasm/test_sets.fnk index 385ec06..b60240f 100644 --- a/src/passes/wasm/test_sets.fnk +++ b/src/passes/wasm/test_sets.fnk @@ -124,7 +124,6 @@ test 'set import + construction', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_40) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_37) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 42)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -136,6 +135,9 @@ test 'set import + construction', fn: (local $:imp_val_set (ref null any)) (local $:imp_key_set (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_2))) (local.set $:v_75 (struct.new $rt/apply.wat:Closure (ref.func $test::v_129) (local.get $:caps_arg))) @@ -159,7 +161,7 @@ test 'set import + construction', fn: (data $d_0 "set") (data $d_1 "test") ) - ;; sm:S44JAJYBALoBAMYBAQIDVAFAAYoBAQYBigEBBgGKAQBuAMIBAMIBAMIBAMQBAIIBAPIGAJYBAJoBAJYBALoBAMYBAG4AvgEAxAgAlgEAugEAxgEAxgEAuAEA0AEBTRySAQEAHLYGALoBAMYBAG4AwggAmgEAmgEAmgEAmgEAlAEA4AEA0gEAtgEA0AEBABy0BABYAKQJAJQBALoBAMYBALgBANIBAHoA0gEAegDSAQBuALwBAL4BAL4BAIIBANwJAJgBALQBANIBAGQAbACcAQCGAgBuAMQBAKQFAHoA5gEAjAEA + ;; sm:TI4JAJYBALoBAMYBAQIDVAFAAYoBAQYBigEBBgGKAQBuAMIBAMIBAMIBAMQBAIIBAPIGAJYBAJoBAJYBALoBAMYBAG4AvgEAxAgAlgEAugEAxgEAxgEAuAEA0AEBTRySAQEAHLYGALoBAMYBAG4AwggAmgEAmgEAmgEAmgEAlAEA4AEA0gEAtgEA0AEBABy0BABYAKQJAJQBALoBAMYBALgBANIBAHoA0gEAegDSAQBuALwBAL4BAL4BAK4KAJwBAKYBAJgBALQBANIBAGQAbACcAQCGAgBuAMQBAKQFAHoA5gEAjAEA test 'set spread', fn: @@ -327,7 +329,6 @@ test 'set spread', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_5) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_53) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 55)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_24)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -339,6 +340,9 @@ test 'set spread', fn: (local $:imp_val_set (ref null any)) (local $:imp_key_set (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:ret_2))) (local.set $:v_103 (struct.new $rt/apply.wat:Closure (ref.func $test::v_187) (local.get $:caps_arg))) @@ -362,7 +366,7 @@ test 'set spread', fn: (data $d_0 "set") (data $d_1 "test") ) - ;; sm:X7oHAJYBALoBAMQBAMYBAG4AvAEAxAEAggEAwAgAlgEAugEAxAEAxgEA4gEA0gEBSAGKAQEAAeQIAJYBALoBAMQBAMYBAOIBANIBAQYBigEBAAGoCQCWAQC6AQDGAQFLA1QA3gEA0gEBUgGKAQENCXIBDgGiBwCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBAVMckgEBABy8BgC6AQDIAQBuAMQIAJoBAJoBAJoBAJoBAJQBAOABANIBALYBANIBAQActAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCAQDeCQCYAQC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:YLoHAJYBALoBAMQBAMYBAG4AvAEAxAEAggEAwAgAlgEAugEAxAEAxgEA4gEA0gEBSAGKAQEAAeQIAJYBALoBAMQBAMYBAOIBANIBAQYBigEBAAGoCQCWAQC6AQDGAQFLA1QA3gEA0gEBUgGKAQENCXIBDgGiBwCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBAVMckgEBABy8BgC6AQDIAQBuAMQIAJoBAJoBAJoBAJoBAJQBAOABANIBALYBANIBAQActAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCwCgCcAQCmAQCYAQC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure empty', fn: @@ -397,7 +401,6 @@ test 'set destructure empty', fn: (local.set $:succ_248 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_248) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 70)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_247)) ) (func $test::v_220 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -497,7 +500,6 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_32) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_34) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_68) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_56)) ) (func $test::v_296 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -526,7 +528,6 @@ test 'set destructure empty', fn: (local.set $:v_285 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_76) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 87)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_285)) ) (func $test::v_260 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -551,7 +552,6 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_265) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_192) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_264) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 95)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_263)) ) (func $test::v_282 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -575,7 +575,6 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_89) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_195) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_90) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 99)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_276)) ) (func $test::v_318 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -619,7 +618,6 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_313) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 104)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_100)) ) (func $test::v_364 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -729,7 +727,6 @@ test 'set destructure empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_125) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_122) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 127)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -742,6 +739,9 @@ test 'set destructure empty', fn: (local $:imp_val_set (ref null any)) (local $:imp_key_set (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_s_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:s (local.get $:cell_s_1)) @@ -769,7 +769,7 @@ test 'set destructure empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:xwGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCEAQDICgCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA + ;; sm:wgGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCaCwCcAQCmAQCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA test 'set destructure non-empty', fn: @@ -804,7 +804,6 @@ test 'set destructure non-empty', fn: (local.set $:succ_251 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_251) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_250)) ) (func $test::v_223 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -904,7 +903,6 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_37) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_71) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 74)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_59)) ) (func $test::v_299 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -933,7 +931,6 @@ test 'set destructure non-empty', fn: (local.set $:v_288 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_79) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 90)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_288)) ) (func $test::v_263 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -958,7 +955,6 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_268) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_195) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_267) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_266)) ) (func $test::v_285 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -982,7 +978,6 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_92) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_198) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_93) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 102)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_279)) ) (func $test::v_321 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1026,7 +1021,6 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_316) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 107)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_103)) ) (func $test::v_367 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1145,7 +1139,6 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_128) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_125) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 130)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_25)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -1158,6 +1151,9 @@ test 'set destructure non-empty', fn: (local $:imp_val_set (ref null any)) (local $:imp_key_set (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_s_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:s (local.get $:cell_s_1)) @@ -1185,7 +1181,7 @@ test 'set destructure non-empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:zQGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAggEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEAggEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQCEAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAhAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:yAGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure peel one', fn: @@ -1220,7 +1216,6 @@ test 'set destructure peel one', fn: (local.set $:succ_302 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_302) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 74)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_301)) ) (func $test::v_274 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1320,7 +1315,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_36) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_38) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_72) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 75)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_60)) ) (func $test::v_392 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1348,7 +1342,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_86) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_344) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 112)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_343)) ) (func $test::v_316 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1435,7 +1428,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_79) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_81) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_115) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 120)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_99)) ) (func $test::v_356 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1460,7 +1452,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_361) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_246) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_360) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 130)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_359)) ) (func $test::v_378 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1484,7 +1475,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_249) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_125) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 134)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_372)) ) (func $test::v_414 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1528,7 +1518,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_s_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_409) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 139)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_135)) ) (func $test::v_460 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1647,7 +1636,6 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_160) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_157) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_26)) ) (import "std/set.fnk" "set" (func $std/set.fnk:set (type $std/dict.wat:Fn_rec_new))) @@ -1660,6 +1648,9 @@ test 'set destructure peel one', fn: (local $:imp_val_set (ref null any)) (local $:imp_key_set (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_s_1 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:s (local.get $:cell_s_1)) @@ -1687,5 +1678,5 @@ test 'set destructure peel one', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:-gGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCCAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAggEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAIQBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAIQBAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAhAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAhAEAyAoAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:9AGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_strings.fnk b/src/passes/wasm/test_strings.fnk index fd837b0..e7fde9d 100644 --- a/src/passes/wasm/test_strings.fnk +++ b/src/passes/wasm/test_strings.fnk @@ -12,6 +12,9 @@ test 'empty string literal', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:str_empty)) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -29,7 +32,7 @@ test 'empty string literal', fn: ) (data $d_0 "test") ) - ;; sm:CZAFAJgBAQACbABuAMABAKYFAHoA5gEAjAEA + ;; sm:C-IFAJwBAKYBAJgBAQACbABuAMABAKYFAHoA5gEAjAEA @@ -43,6 +46,9 @@ test 'string literal', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:from_data (data.ref $d_0 5))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -61,7 +67,7 @@ test 'string literal', fn: (data $d_0 "hello") (data $d_1 "test") ) - ;; sm:CZAFAJgBAQAHkAEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQAHkAEAbgDAAQCmBQB6AOYBAIwBAA test 'string literal dedup', fn: @@ -85,6 +91,9 @@ test 'string literal dedup', fn: (local $:pub_name (ref null any)) (local $:unwrap_y_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_x_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:x (local.get $:cell_x_0)) @@ -123,7 +132,7 @@ test 'string literal dedup', fn: (data $d_2 "x") (data $d_3 "y") ) - ;; sm:Ga4LAJgBAJQBAGAAlAEAYAEAAYoBAJgBAKIBAJQBAJYBAMYBARgBigEAmAEAogEAlAEAlgEAxgEAqAEAbgDKAQCmBQB6AOYBAIwBAA + ;; sm:G4AMAJwBAKYBAJgBAJQBAGAAlAEAYAEAAYoBAJgBAKIBAJQBAJYBAMYBARgBigEAmAEAogEAlAEAlgEAxgEAqAEAbgDKAQCmBQB6AOYBAIwBAA test 'str templ two exprs', fn: @@ -150,6 +159,9 @@ test 'str templ two exprs', fn: (local $:lit_6 (ref null any)) (local $:unwrap_b_1 (ref null any)) (local $:varargs (ref null $rt/apply.wat:VarArgs)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_a_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:a (local.get $:cell_a_0)) @@ -189,7 +201,7 @@ test 'str templ two exprs', fn: (data $d_2 "b") (data $d_3 " and ") ) - ;; sm:GvgMAJgBAJQBAGAAlAEAYAEAAYIBAJgBAKIBAJQBAJYBAMYBAQwBggEAmAEAogEAlAEAlgEAxgEAqAEBFgWQAQCoAQCUAgEJD7AFAHoA5gEAjAEA + ;; sm:HMoNAJwBAKYBAJgBAJQBAGAAlAEAYAEAAYIBAJgBAKIBAJQBAJYBAMYBAQwBggEAmAEAogEAlAEAlgEAxgEAqAEBFgWQAQCoAQCUAgEJD7AFAHoA5gEAjAEA test 'str tagged template', fn: @@ -242,6 +254,9 @@ test 'str tagged template', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_11 (ref null any)) (local $:lit_10 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_foo_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:foo (local.get $:cell_foo_0)) @@ -273,7 +288,7 @@ test 'str tagged template', fn: (data $d_1 "foo") (data $d_2 "1\\n2") ) - ;; sm:JIQFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBAK4LAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA + ;; sm:JoQFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBAIAMAJwBAKYBAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA test 'str tagged template escape handling', fn: @@ -374,6 +389,9 @@ test 'str tagged template escape handling', fn: (local $:caps_arg (ref null $rt/apply.wat:Captures)) (local $:lit_13 (ref null any)) (local $:lit_12 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_foo_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:foo (local.get $:cell_foo_0)) @@ -419,7 +437,7 @@ test 'str tagged template escape handling', fn: (data $d_3 "bar") (data $d_4 "\\b\\v\\$\\'\\\\\\xC3\\xA9\\u{8A_9E}") ) - ;; sm:QIYFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALugOAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA + ;; sm:QoYFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALroPAJwBAKYBAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA test 'str implicit formatting handling', fn: @@ -434,6 +452,9 @@ test 'str implicit formatting handling', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:from_data (data.ref $d_0 5))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -452,7 +473,7 @@ test 'str implicit formatting handling', fn: (data $d_0 "1\0a2\0a3") (data $d_1 "test") ) - ;; sm:CZAFAJgBAQANkAEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQANkAEAbgDAAQCmBQB6AOYBAIwBAA test 'str implicit formatting escapes', fn: @@ -465,6 +486,9 @@ test 'str implicit formatting escapes', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:from_data (data.ref $d_0 14))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -483,7 +507,7 @@ test 'str implicit formatting escapes', fn: (data $d_0 "\0a\0d\09\0c\08\0b$'\\\c3\a9\e8\aa\9e") (data $d_1 "test") ) - ;; sm:CZAFAJgBAQAlkgEAbgDAAQCmBQB6AOYBAIwBAA + ;; sm:C-IFAJwBAKYBAJgBAQAlkgEAbgDAAQCmBQB6AOYBAIwBAA test 'empty string eq', fn: @@ -496,6 +520,9 @@ test 'empty string eq', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:str_empty)) (local.set $:lit_2 (call $std/str.fnk:str_empty)) @@ -512,7 +539,7 @@ test 'empty string eq', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQACbAEMAmwBCwjWBQB6AOYBAIwBAA + ;; sm:Cu4FAJwBAKYBAJgBAQACbAEMAmwBCwjWBQB6AOYBAIwBAA # TODO: move to ./test_patterns.fnk @@ -545,7 +572,6 @@ test 'match empty string', fn: (local.set $:succ_147 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_147) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 37)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_146)) ) (func $test::v_137 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -617,7 +643,6 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_6) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:fail_8) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_35) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 38)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_23)) ) (func $test::v_195 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -646,7 +671,6 @@ test 'match empty string', fn: (local.set $:v_184 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:succ_43) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_184)) ) (func $test::v_159 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -671,7 +695,6 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_164) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_124) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_163) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 62)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_162)) ) (func $test::v_181 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -695,7 +718,6 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_56) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_127) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_57) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 66)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_175)) ) (func $test::v_215 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -728,7 +750,6 @@ test 'match empty string', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_1) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 71)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:v_67)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -741,6 +762,9 @@ test 'match empty string', fn: (local $:pub_name (ref null any)) (local $:unwrap_main_0 (ref null any)) (local $:args (ref any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:cell_main_0 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test:main (local.get $:cell_main_0)) @@ -769,7 +793,7 @@ test 'match empty string', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:fYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBAIIBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAIIBAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIIBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAIIBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAggEAzgwAmAEAmgEAkgEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAggEA6gkAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA + ;; sm:eYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAvAoAnAEApgEAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA test 'empty string eq template', fn: @@ -782,6 +806,9 @@ test 'empty string eq template', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_0 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:str_empty)) (local.set $:lit_2 (call $std/str.fnk:str_empty)) @@ -798,7 +825,7 @@ test 'empty string eq template', fn: ) (data $d_0 "test") ) - ;; sm:CJwFAJgBAQACbAEMB2wBCw3WBQB6AOYBAIwBAA + ;; sm:Cu4FAJwBAKYBAJgBAQACbAEMB2wBCw3WBQB6AOYBAIwBAA test 'str eq', fn: @@ -811,6 +838,9 @@ test 'str eq', fn: (local $:ret_0 (ref null any)) (local $:lit_1 (ref null any)) (local $:lit_2 (ref null any)) + (local $:mod_reg_url (ref null any)) + (local.set $:mod_reg_url (call $std/str.fnk:from_data (data.ref $d_1 4))) + (call $rt/modules.wat:register_module (i32.const 0) (local.get $:mod_reg_url)) (local.set $:ret_0 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:lit_1 (call $std/str.fnk:from_data (data.ref $d_0 5))) (local.set $:lit_2 (call $std/str.fnk:from_data (data.ref $d_0 5))) @@ -828,5 +858,5 @@ test 'str eq', fn: (data $d_0 "hello") (data $d_1 "test") ) - ;; sm:CJwFAJgBAQAHkAEBFgeQAQEVEtYFAHoA5gEAjAEA + ;; sm:Cu4FAJwBAKYBAJgBAQAHkAEBFgeQAQEVEtYFAHoA5gEAjAEA diff --git a/src/runtime/interop/js/interop.wat b/src/runtime/interop/js/interop.wat index 507b4e2..44b7f0f 100644 --- a/src/runtime/interop/js/interop.wat +++ b/src/runtime/interop/js/interop.wat @@ -78,6 +78,7 @@ (param $callee (ref null any)))) ;; Keep rt/trace.wat in the link and trace_push alive: user fragments ;; call it at every call site, but no runtime module references it. + ;; (get_trace is kept alive via std/trace.fnk's fink-level import.) (import "rt/trace.wat" "trace_push" (func $trace_push (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" diff --git a/src/runtime/interop/rust/interop.wat b/src/runtime/interop/rust/interop.wat index 2690c49..be7daf1 100644 --- a/src/runtime/interop/rust/interop.wat +++ b/src/runtime/interop/rust/interop.wat @@ -63,6 +63,7 @@ (param $callee (ref null any)))) ;; Keep rt/trace.wat in the link and trace_push alive: user fragments ;; call it at every call site, but no runtime module references it. + ;; (get_trace is kept alive via std/trace.fnk's fink-level import.) (import "rt/trace.wat" "trace_push" (func $trace_push (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" diff --git a/src/runtime/rt/modules.wat b/src/runtime/rt/modules.wat index c242a0c..b4ae173 100644 --- a/src/runtime/rt/modules.wat +++ b/src/runtime/rt/modules.wat @@ -65,6 +65,21 @@ (import "std/list.wat" "prepend" (func $list_prepend (param $head (ref any)) (param $tail (ref $List)) (result (ref $List)))) + ;; Args machinery + int unboxing for the fink-callable get_module_url + ;; Fn3 wrapper. + (import "rt/apply.wat" "args_head" + (func $args_head (param (ref null any)) (result (ref null any)))) + (import "rt/apply.wat" "args_tail" + (func $args_tail (param (ref null any)) (result (ref null any)))) + (import "rt/apply.wat" "args_empty" + (func $args_empty (result (ref any)))) + (import "rt/apply.wat" "args_prepend" + (func $args_prepend (param (ref null any)) (param (ref any)) (result (ref any)))) + (import "std/num.wat" "Num" (type $Num (sub any))) + (import "std/int.wat" "Int" (type $Int (sub $Num (struct)))) + (import "std/int.wat" "_int_ival" + (func $int_ival (param (ref $Int)) (result i64))) + ;; -- Registry ------------------------------------------------------- @@ -72,6 +87,122 @@ ;; Stored as $Rec so we can call rec_get/put_field directly. (global $registry (mut (ref null $Rec)) (ref.null $Rec)) + + ;; -- Module-id → url array ------------------------------------------ + ;; + ;; The trace buffer records call sites as (module_id, cps_id) i32 pairs + ;; (rt/trace.wat). Resolving a frame back to a source location needs + ;; module_id → url. ModuleId is a compile-time concept that does not + ;; otherwise exist in the runtime, so each module self-registers its + ;; own (id, url) from its fink_module via `register_module`. + ;; + ;; A GC array indexed directly by module_id (not a wasm table). Module + ;; ids are small dense ints assigned in BFS order by compile_package. + ;; It grows by 100 slots at a time (array.copy into a bigger array, the + ;; same idiom dict.wat/set.wat use) when an id exceeds capacity. + (type $ModuleUrls (array (mut (ref null any)))) + (global $module_urls (mut (ref null $ModuleUrls)) (ref.null $ModuleUrls)) + + ;; Record module_id → url. Idempotent: re-registering the same id with + ;; the same url is a harmless overwrite (fink_module may run more than + ;; once). Lazy-allocates and grows the table as needed. + (func $register_module (@pub) + (param $id i32) + (param $url (ref null any)) + (local $old (ref null $ModuleUrls)) + (local $new_len i32) + (local $new (ref $ModuleUrls)) + + (local.set $old (global.get $module_urls)) + + ;; Grow (or allocate) if id is out of the current bounds. + (if (i32.ge_u + (local.get $id) + (if (result i32) (ref.is_null (local.get $old)) + (then (i32.const 0)) + (else (array.len (ref.as_non_null (local.get $old)))))) + (then + ;; new_len = max(old_len + 100, id + 1) so a single large id + ;; can't outpace the growth step. + (local.set $new_len + (i32.add + (if (result i32) (ref.is_null (local.get $old)) + (then (i32.const 0)) + (else (array.len (ref.as_non_null (local.get $old))))) + (i32.const 100))) + (if (i32.gt_u (i32.add (local.get $id) (i32.const 1)) (local.get $new_len)) + (then (local.set $new_len (i32.add (local.get $id) (i32.const 1))))) + + (local.set $new (array.new $ModuleUrls (ref.null any) (local.get $new_len))) + (if (i32.eqz (ref.is_null (local.get $old))) + (then + (array.copy $ModuleUrls $ModuleUrls + (local.get $new) (i32.const 0) + (ref.as_non_null (local.get $old)) (i32.const 0) + (array.len (ref.as_non_null (local.get $old)))))) + (global.set $module_urls (local.get $new)))) + + (array.set $ModuleUrls + (ref.as_non_null (global.get $module_urls)) + (local.get $id) + (local.get $url))) + + ;; Look up the url registered for module_id, or null if unregistered + ;; or out of bounds. Raw i32 worker; the fink-callable entry is the + ;; Fn3 wrapper below. + (func $_get_module_url + (param $id i32) + (result (ref null any)) + (if (ref.is_null (global.get $module_urls)) + (then (return (ref.null any)))) + (if (i32.ge_u + (local.get $id) + (array.len (ref.as_non_null (global.get $module_urls)))) + (then (return (ref.null any)))) + (array.get $ModuleUrls + (ref.as_non_null (global.get $module_urls)) + (local.get $id))) + + ;; Fink-callable entry: `get_module_url mod_id`. CPS-lowered args = + ;; [k_caller, mod_id]. mod_id arrives as a boxed $Int; unbox, look up, + ;; tail-call k_caller with the url (or null). + (elem declare func $get_module_url_apply) + + (func $get_module_url_apply (type $Fn3) + (param $_caps (ref null any)) + (param $ctx (ref null any)) + (param $args (ref null any)) + (local $k_caller (ref any)) + (local $id (ref null any)) + (local $rest (ref null any)) + (local $url (ref null any)) + (local $k_args (ref any)) + + (local.set $k_caller (ref.as_non_null (call $args_head (local.get $args)))) + (local.set $rest (call $args_tail (local.get $args))) + (local.set $id (call $args_head (local.get $rest))) + + (local.set $url + (call $_get_module_url + (i32.wrap_i64 + (call $int_ival (ref.cast (ref $Int) (local.get $id)))))) + + (local.set $k_args (call $args_empty)) + (local.set $k_args (call $args_prepend (local.get $url) (local.get $k_args))) + (return_call $apply_3 + (local.get $k_args) + (local.get $ctx) + (local.get $k_caller))) + + (global $get_module_url_closure (ref $Closure) + (struct.new $Closure + (ref.func $get_module_url_apply) + (ref.null $Captures))) + + (func $get_module_url (@pub) + (result (ref any)) + (global.get $get_module_url_closure)) + ;; -- init ----------------------------------------------------------- ;; ;; Direct call. Returns 1 if this is the first call for `mod_url` diff --git a/src/runtime/rt/trace.wat b/src/runtime/rt/trace.wat index be6d91d..4ab5242 100644 --- a/src/runtime/rt/trace.wat +++ b/src/runtime/rt/trace.wat @@ -24,6 +24,35 @@ (module + (import "rt/apply.wat" "Fn3" (type $Fn3 (sub any))) + (import "rt/apply.wat" "Closure" (type $Closure (sub any))) + (import "rt/apply.wat" "Captures" (type $Captures (sub any))) + (import "rt/apply.wat" "args_empty" + (func $args_empty (result (ref any)))) + (import "rt/apply.wat" "args_prepend" + (func $args_prepend (param (ref null any)) (param (ref any)) (result (ref any)))) + (import "rt/apply.wat" "args_head" + (func $args_head (param (ref null any)) (result (ref null any)))) + (import "rt/apply.wat" "args_tail" + (func $args_tail (param (ref null any)) (result (ref null any)))) + (import "rt/apply.wat" "apply_3" + (func $apply_3 + (param (ref null any)) (param (ref null any)) (param (ref null any)))) + + (import "std/list.wat" "List" (type $List (sub any))) + (import "std/list.wat" "empty" + (func $list_empty (result (ref $List)))) + (import "std/list.wat" "prepend" + (func $list_prepend (param (ref any)) (param (ref $List)) (result (ref $List)))) + + (import "std/num.wat" "Num" (type $Num (sub any))) + (import "std/int.wat" "Int" (type $Int (sub $Num (struct)))) + (import "std/int.wat" "I64" (type $I64 (sub $Int (struct (field $ival i64))))) + (import "std/int.wat" "_box_i64" + (func $box_i64 (param i64) (result (ref $I64)))) + (import "std/int.wat" "_int_ival" + (func $int_ival (param (ref $Int)) (result i64))) + ;; Ring capacity in slots. 64 frames. (global $trace_len i32 (i32.const 64)) ;; Byte offset of the ring region (bottom of memory). @@ -56,4 +85,114 @@ (i32.rem_u (i32.add (global.get $trace_next) (i32.const 1)) (global.get $trace_len)))) + + ;; Read up to `depth` most-recent call sites as a fink list of + ;; [module_id, cps_id] pairs. Walks back from trace_next (the most + ;; recent write) toward older entries, stopping at the first unwritten + ;; slot (cps_id == 0) or after `depth` entries. Each frame is prepended + ;; as it is read, so the resulting list runs oldest-to-newest (the + ;; newest call site is the last element). Raw i32 worker; the fink- + ;; callable entry is the Fn3 wrapper below. + (func $read_trace + (param $depth i32) + (result (ref $List)) + (local $n i32) + (local $i i32) + (local $slot i32) + (local $slot_addr i32) + (local $mid i32) + (local $cid i32) + (local $result (ref $List)) + (local $frame (ref $List)) + + ;; n = min(depth, trace_len) + (local.set $n + (select + (local.get $depth) + (global.get $trace_len) + (i32.le_u (local.get $depth) (global.get $trace_len)))) + + (local.set $result (call $list_empty)) + + ;; Walk back from the newest write. The i-th-newest slot is + ;; (trace_next - 1 - i) mod trace_len. Add trace_len before the rem to + ;; keep the operand non-negative. + (local.set $i (i32.const 0)) + (block $done (loop $next + (br_if $done (i32.ge_u (local.get $i) (local.get $n))) + + (local.set $slot + (i32.rem_u + (i32.add + (i32.sub (global.get $trace_next) (i32.const 1)) + (i32.sub (global.get $trace_len) (local.get $i))) + (global.get $trace_len))) + + (local.set $slot_addr + (i32.add + (global.get $trace_base) + (i32.mul (local.get $slot) (i32.const 8)))) + + (local.set $mid (i32.load (local.get $slot_addr))) + (local.set $cid (i32.load (i32.add (local.get $slot_addr) (i32.const 4)))) + + ;; Stop at the first unwritten slot (cps_id == 0). + (br_if $done (i32.eqz (local.get $cid))) + + ;; frame = [module_id, cps_id] + (local.set $frame + (call $list_prepend + (call $box_i64 (i64.extend_i32_u (local.get $mid))) + (call $list_prepend + (call $box_i64 (i64.extend_i32_u (local.get $cid))) + (call $list_empty)))) + ;; prepend frame; walking newest-first means the result ends up + ;; oldest-to-newest. + (local.set $result + (call $list_prepend (local.get $frame) (local.get $result))) + + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br $next))) + + (local.get $result)) + + ;; Fink-callable entry: `get_trace depth`. + ;; CPS-lowered args = [k_caller, depth]. `depth` arrives as a boxed + ;; $Int; unbox it, read the ring, tail-call k_caller with the list. + (elem declare func $get_trace_apply) + + (func $get_trace_apply (type $Fn3) + (param $_caps (ref null any)) + (param $ctx (ref null any)) + (param $args (ref null any)) + (local $k_caller (ref any)) + (local $depth (ref null any)) + (local $rest (ref null any)) + (local $trace (ref $List)) + (local $k_args (ref any)) + + (local.set $k_caller (ref.as_non_null (call $args_head (local.get $args)))) + (local.set $rest (call $args_tail (local.get $args))) + (local.set $depth (call $args_head (local.get $rest))) + + (local.set $trace + (call $read_trace + (i32.wrap_i64 + (call $int_ival (ref.cast (ref $Int) (local.get $depth)))))) + + (local.set $k_args (call $args_empty)) + (local.set $k_args (call $args_prepend (local.get $trace) (local.get $k_args))) + (return_call $apply_3 + (local.get $k_args) + (local.get $ctx) + (local.get $k_caller))) + + (global $get_trace_closure (ref $Closure) + (struct.new $Closure + (ref.func $get_trace_apply) + (ref.null $Captures))) + + (func $get_trace (@pub) + (result (ref any)) + (global.get $get_trace_closure)) ) From 86933b65d2aa841d2a4a48b0948376a7e93288cc Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Tue, 9 Jun 2026 22:25:36 +0100 Subject: [PATCH 4/7] feat(trace): activation-stack backtrace; get_loc source resolution Replace the push-only recency ring with a real backtrace: a bounded stack of userland function activations. - rt/trace.wat: bounded activation stack (window of 64 16-byte frames {fn_mid, fn_cid, call_mid, call_cid}). trace_push(mid,cid) on fn entry, trace_mark(mid,cid) at userland call sites (updates the top frame's current call site), trace_pop(mid,cid) on return-cont invocation. read_trace walks newest-first (innermost call site at index 0). - lowering: push at userland fn-body entry, mark at source-Apply call sites, pop at App(ContRef(Ret)). A CpsFunction is a real activation (pushes its own frame); a CpsClosure is a lifted continuation (no push, its ret-cont pops the enclosing fn) - bundled as TraceFrame. - get_loc(mid,cid) -> source line: host_resolve_loc host import in the wasmtime runner resolves a frame to a line via the debug marks; Fn3 wrapper in rt/trace.wat. Makes traces readable as url:line. - emit.rs: TRACE_BYTES region sized to 64*16=1024 for the wider frames. - snapshots re-blessed for the push/mark/pop instrumentation. --- src/passes/wasm/emit.rs | 13 +- src/passes/wasm/lower.rs | 97 +++++++++-- src/passes/wasm/runtime_contract.rs | 17 +- src/passes/wasm/test_bindings.fnk | 8 +- src/passes/wasm/test_effects.fnk | 2 +- src/passes/wasm/test_functions.fnk | 99 +++++++---- src/passes/wasm/test_io.fnk | 6 +- src/passes/wasm/test_linking.fnk | 8 +- src/passes/wasm/test_sets.fnk | 25 ++- src/passes/wasm/test_strings.fnk | 20 ++- src/runner/wasmtime_runner.rs | 20 +++ src/runtime/interop/js/interop.wat | 10 +- src/runtime/interop/rust/interop.wat | 10 +- src/runtime/rt/trace.wat | 247 +++++++++++++++++---------- 14 files changed, 417 insertions(+), 165 deletions(-) diff --git a/src/passes/wasm/emit.rs b/src/passes/wasm/emit.rs index f4bebe4..c5a0766 100644 --- a/src/passes/wasm/emit.rs +++ b/src/passes/wasm/emit.rs @@ -61,17 +61,18 @@ use super::runtime_contract::import_key; // // Layout of the single memory page (64 KiB): // -// [0, RING_BYTES) trace ring region (reserved) -// [RING_BYTES, SCRATCH_BASE) literal data pool (grows up at compile time) -// [SCRATCH_BASE, 64 KiB) host-IO scratch window +// [0, TRACE_BYTES) trace activation-stack region (reserved) +// [TRACE_BYTES, SCRATCH_BASE) literal data pool (grows up at compile time) +// [SCRATCH_BASE, 64 KiB) host-IO scratch window // // SCRATCH_BASE is the host-exchange window the JS interop bounces // bytes through. It is declared in the runtime WAT today; this constant // is the layout authority's copy used to bound the data pool. -/// Trace-ring region at the bottom of memory. 64 frames x 8 bytes -/// (`(module_id, cps_id)` pairs) = 512 bytes. -const RING_BYTES: u32 = 64 * 8; +/// Trace activation-stack region at the bottom of memory. Must match +/// rt/trace.wat's window: TRACE_CAP (64) frames x FRAME_BYTES (16, four +/// i32s `{fn_mid, fn_cid, call_mid, call_cid}`) = 1024 bytes. +const RING_BYTES: u32 = 64 * 16; /// Host-IO scratch window base. Must match the runtime WAT's /// `SCRATCH_BASE` global (`interop/js/interop.wat`). diff --git a/src/passes/wasm/lower.rs b/src/passes/wasm/lower.rs index 27a60e7..e743cbd 100644 --- a/src/passes/wasm/lower.rs +++ b/src/passes/wasm/lower.rs @@ -80,9 +80,12 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: Module // harmless here; lower_ctx never emits a call to it. usage.mark(runtime_contract::Sym::Apply3); usage.mark(runtime_contract::Sym::Fn3); - // Every user-fn call site emits a trace_push recording the call site - // into the trace buffer (rt/trace.wat). + // Trace instrumentation (rt/trace.wat): each userland fn body pushes a + // frame on entry and pops on return; each userland call site marks the + // current frame's call site. usage.mark(runtime_contract::Sym::TracePush); + usage.mark(runtime_contract::Sym::TraceMark); + usage.mark(runtime_contract::Sym::TracePop); // Each fink_module self-registers its (module_id, url) so trace frames // resolve to a source url (rt/modules.wat). usage.mark(runtime_contract::Sym::RegisterModule); @@ -192,7 +195,7 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: Module // CpsId. We walk the chain pre-order: outer LetFn first. let mut top_fn_syms: HashMap = HashMap::new(); let mut node = &lcx.cps.root; - while let ExprKind::LetFn { name, params, fn_body, cont, .. } = &node.kind { + while let ExprKind::LetFn { name, params, fn_body, cont, fn_kind, .. } = &node.kind { let mut cap_ids: Vec = Vec::new(); let mut user_ids: Vec<(CpsId, bool)> = Vec::new(); for p in params { @@ -208,10 +211,16 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: Module } let raw_display = cps_ident_for_bind(lcx.cps, lcx.ast, name); let display = format!("{}{}", lcx.fqn_prefix, raw_display); + use crate::passes::cps::ir::CpsFnKind; + let trace = match fn_kind { + CpsFnKind::CpsFunction => TraceFrame::entry(name.id), + CpsFnKind::CpsClosure => TraceFrame::cont(None), // top-level: no enclosing + }; let fn_sym = lower_fn( &mut lcx, &cap_ids, &user_ids, fn_body, &display, &top_fn_syms, + trace, ); top_fn_syms.insert(name.id, fn_sym); node = match cont { @@ -227,6 +236,7 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: Module module_body, &module_display, &top_fn_syms, + TraceFrame::cont(None), // module body is synth: no frame, no enclosing ); let FuncSym::Local(_) = fink_module else { panic!("lower: fink_module must be Local"); }; // No WASM-level export for fink_module — host accesses the module @@ -432,6 +442,24 @@ struct LowerCtx<'a> { /// Lower a CPS function — either the module body or a LetFn'd helper. /// +/// Trace identity for a lowered function. `entry = Some(id)` means this +/// is a real userland function entry: push a frame for `id` at the +/// prologue and pops inside it target `id`. `entry = None` means a lifted +/// continuation (CpsClosure) - no push; its ret-cont pops target the +/// *enclosing* userland fn in `enclosing`. +#[derive(Clone, Copy, Default)] +struct TraceFrame { + entry: Option, + enclosing: Option, +} + +impl TraceFrame { + /// A real userland function entry, traced under its own id. + fn entry(id: CpsId) -> Self { Self { entry: Some(id), enclosing: None } } + /// A lifted continuation: no frame; ret-cont pops target `enclosing`. + fn cont(enclosing: Option) -> Self { Self { entry: None, enclosing } } +} + /// `cap_params` and `user_params` are the CpsIds of the function's /// cap-params (read from `$_caps` via `array.get`) and user-params /// (unpacked from `$_args` via successive `args_head`/`args_tail`). @@ -444,6 +472,7 @@ fn lower_fn( body: &Expr, display: &str, fn_syms: &HashMap, + trace: TraceFrame, ) -> FuncSym { // CRITICAL: `fn_syms` is cloned (not shared) into the child FnCtx. // Sibling and ancestor LetFn FuncSyms must be visible to this fn's @@ -514,6 +543,20 @@ fn lower_fn( } } + // Trace: a real userland function entry pushes an activation frame + // stamped with its own identity; pops inside it (when it invokes its + // return cont) target that frame. A lifted continuation (CpsClosure) + // does NOT push - it is part of the enclosing function - but its + // ret-cont invocations must pop the enclosing function's frame, so it + // inherits the enclosing fn's id for pop targeting. + ctx.trace_fn_id = trace.entry.or(trace.enclosing); + if let Some(fn_id) = trace.entry { + let mid = lit_i32(lcx.frag.module_id.0 as i32); + let cid = lit_i32(fn_id.0 as i32); + let i = push_call(lcx.frag, lcx.rt.trace_push(), vec![mid, cid], None); + ctx.instrs.push(i); + } + // Walk the body. lower_expr(lcx, &mut ctx, body); @@ -558,6 +601,12 @@ struct FnCtx { /// every "fresh" ctx CpsId at thread_ctx time aliases to the same /// wasm value at runtime. ctx_local: Option, + /// This function's own identity for trace instrumentation: the + /// defining LetFn's CpsId. `Some` for userland source functions (which + /// push/pop an activation frame); `None` for synth/runtime functions + /// (module body, host wrapper) which are not traced. Read by the + /// ret-cont arm to emit `trace_pop(module_id, fn_id)`. + trace_fn_id: Option, } impl FnCtx { @@ -570,6 +619,7 @@ impl FnCtx { next_local_idx: 0, fn_syms, ctx_local: None, + trace_fn_id: None, } } @@ -727,7 +777,7 @@ fn lower_expr( lower_cont(lcx, ctx, cont); } - ExprKind::LetFn { name, params, fn_body, cont, .. } => { + ExprKind::LetFn { name, params, fn_body, cont, fn_kind, .. } => { // Collect cap + user params by role. The `Bind::Caps` param is // the ƒcaps record (post closure-conversion); everything else is // a user param. User params carry their spread flag so the @@ -750,10 +800,19 @@ fn lower_expr( // module's FQN prefix so cross-fragment merges stay collision-free. let raw_display = cps_ident_for_bind(lcx.cps, lcx.ast, name); let display = format!("{}{}", lcx.fqn_prefix, raw_display); + // A CpsFunction is a real userland fn (push its own frame); a + // CpsClosure is a lifted continuation (no push; its ret-cont pops + // the enclosing fn, inherited via ctx.trace_fn_id). + use crate::passes::cps::ir::CpsFnKind; + let trace = match fn_kind { + CpsFnKind::CpsFunction => TraceFrame::entry(name.id), + CpsFnKind::CpsClosure => TraceFrame::cont(ctx.trace_fn_id), + }; let fn_sym = lower_fn( lcx, &cap_ids, &user_ids, fn_body, &display, &ctx.fn_syms, + trace, ); // The LetFn binds `name.id` to a funcref-valued local; we model // it as an anyref local holding a `ref.func` funcref. Actual @@ -1106,6 +1165,20 @@ fn lower_expr( } }; + // Trace pop: invoking this fn's return cont is the fn returning - + // pop its activation frame. Only for userland fns (trace_fn_id Some) + // and only when the cont being applied is this fn's Ret-kind cont. + if let Some(fn_id) = ctx.trace_fn_id + && matches!( + lcx.bind_kinds.try_get(cont_id).and_then(|b| *b), + Some(Bind::Cont(crate::passes::cps::ir::ContKind::Ret))) + { + let mid = lit_i32(lcx.frag.module_id.0 as i32); + let cid = lit_i32(fn_id.0 as i32); + let i = push_call(lcx.frag, lcx.rt.trace_pop(), vec![mid, cid], None); + ctx.instrs.push(i); + } + let (ctx_op, rest_args) = split_ctx_arg(lcx, ctx, args); let l_args_list = build_args_list(lcx, ctx, rest_args); let i_app = push_return_call(lcx.frag, lcx.rt.apply_3(), @@ -1134,7 +1207,7 @@ fn lower_expr( let (ctx_op, rest_args) = split_ctx_arg(lcx, ctx, args); let l_args_list = build_args_list(lcx, ctx, rest_args); - push_trace_point(lcx, ctx, expr.id); + mark_call_site(lcx, ctx, expr.id); let i_app = push_return_call(lcx.frag, lcx.rt.apply_3(), vec![op_local(l_args_list), ctx_op, op_local(callee)]); set_cps_id(lcx.frag, i_app, expr.id); @@ -1394,22 +1467,22 @@ fn unbox_anyref( /// `done`) or a Cont::Expr (lifted into a closure — not handled here /// since the lifting pass already produces that as App(FnClosure) /// ahead of the tail call). -/// Emit a `trace_push(module_id, cps_id)` recording this call site into -/// the trace buffer, immediately before the user-fn dispatch. `cps_id` -/// is the Apply node's id (the call site); `module_id` is the fragment's -/// own id. Together they identify the site package-wide. +/// Emit `trace_mark(module_id, cps_id)` recording this call site into the +/// current (top) activation frame, immediately before the user-fn dispatch. +/// `cps_id` is the Apply node's id (the call site); `module_id` is the +/// fragment's own id. Updates "where in the current function we are". /// -/// Only userland calls are traced: an Apply is traced iff it has a source +/// Only userland calls are marked: an Apply is marked iff it has a source /// origin. Desugar-synthesised applies (pipe expansion, partial /// application, etc.) have no origin and are skipped, so the trace /// reflects source-level calls, not the finer post-desugar CPS structure. -fn push_trace_point(lcx: &mut LowerCtx<'_>, ctx: &mut FnCtx, call_site: CpsId) { +fn mark_call_site(lcx: &mut LowerCtx<'_>, ctx: &mut FnCtx, call_site: CpsId) { if !is_source_apply(lcx.cps, lcx.ast, call_site) { return; } let module_id = lit_i32(lcx.frag.module_id.0 as i32); let cps_id = lit_i32(call_site.0 as i32); - let i = push_call(lcx.frag, lcx.rt.trace_push(), vec![module_id, cps_id], None); + let i = push_call(lcx.frag, lcx.rt.trace_mark(), vec![module_id, cps_id], None); ctx.instrs.push(i); } diff --git a/src/passes/wasm/runtime_contract.rs b/src/passes/wasm/runtime_contract.rs index 1f55753..52839f3 100644 --- a/src/passes/wasm/runtime_contract.rs +++ b/src/passes/wasm/runtime_contract.rs @@ -99,9 +99,14 @@ pub enum Sym { // 2c-B; until then, references are emitted as imports that will // remain unresolved (Phase A is shape-only, not runnable). Apply3, - // TracePush records a call site (module_id, cps_id) into the trace - // buffer ring. Signature `(i32, i32) -> ()`. Defined in rt/trace.wat. + // The trace primitives maintain a bounded activation stack in linear + // memory (rt/trace.wat). All `(i32, i32) -> ()`. + // TracePush(fn_mid, fn_cid) -- enter a userland fn body. + // TraceMark(call_mid, call_cid) -- a call site within the current fn. + // TracePop(fn_mid, fn_cid) -- leave a userland fn body. TracePush, + TraceMark, + TracePop, // RegisterModule records module_id → url so trace frames can resolve // to a source url. Signature `(i32, anyref) -> ()`. Each fink_module // self-registers. Defined in rt/modules.wat. @@ -341,6 +346,8 @@ pub struct Runtime { apply: Option, apply_3: Option, trace_push: Option, + trace_mark: Option, + trace_pop: Option, register_module: Option, // polymorphic protocol operators op_plus: Option, @@ -437,6 +444,8 @@ impl Runtime { pub fn apply(&self) -> FuncSym { self.apply.expect("rt: _apply not declared") } pub fn apply_3(&self) -> FuncSym { self.apply_3.expect("rt: apply_3 not declared") } pub fn trace_push(&self) -> FuncSym { self.trace_push.expect("rt: trace_push not declared") } + pub fn trace_mark(&self) -> FuncSym { self.trace_mark.expect("rt: trace_mark not declared") } + pub fn trace_pop(&self) -> FuncSym { self.trace_pop.expect("rt: trace_pop not declared") } pub fn register_module(&self) -> FuncSym { self.register_module.expect("rt: register_module not declared") } pub fn fn3(&self) -> TypeSym { self.fn3.expect("rt: Fn3 not declared") } @@ -523,6 +532,8 @@ pub(super) fn import_key(sym: Sym) -> &'static str { Sym::Apply => "rt/apply.wat:apply", Sym::Apply3 => "rt/apply.wat:apply_3", Sym::TracePush => "rt/trace.wat:trace_push", + Sym::TraceMark => "rt/trace.wat:trace_mark", + Sym::TracePop => "rt/trace.wat:trace_pop", Sym::RegisterModule => "rt/modules.wat:register_module", Sym::ArgsHead => "rt/apply.wat:args_head", @@ -677,6 +688,8 @@ pub fn declare(frag: &mut Fragment, usage: &RuntimeUsage) -> Runtime { if needed.contains(&Sym::Apply) { rt.apply = Some(FuncSym::Runtime(Sym::Apply)); } if needed.contains(&Sym::Apply3) { rt.apply_3 = Some(FuncSym::Runtime(Sym::Apply3)); } if needed.contains(&Sym::TracePush) { rt.trace_push = Some(FuncSym::Runtime(Sym::TracePush)); } + if needed.contains(&Sym::TraceMark) { rt.trace_mark = Some(FuncSym::Runtime(Sym::TraceMark)); } + if needed.contains(&Sym::TracePop) { rt.trace_pop = Some(FuncSym::Runtime(Sym::TracePop)); } if needed.contains(&Sym::RegisterModule) { rt.register_module = Some(FuncSym::Runtime(Sym::RegisterModule)); } for sym in BINARY_OPS { diff --git a/src/passes/wasm/test_bindings.fnk b/src/passes/wasm/test_bindings.fnk index ebfd833..db6d827 100644 --- a/src/passes/wasm/test_bindings.fnk +++ b/src/passes/wasm/test_bindings.fnk @@ -185,6 +185,7 @@ test 'binding rhs is a call', fn: (local.set $a_2 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $b_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 61)) (return_call $std/operators.fnk:op_plus (local.get $:ctx_param) (local.get $a_2) (local.get $b_3) (local.get $:ret_6)) ) (func $test::v_55 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -252,7 +253,7 @@ test 'binding rhs is a call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_15) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_14) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_45) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 21)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 21)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -271,7 +272,7 @@ test 'binding rhs is a call', fn: (data $d_1 "x") (data $d_2 "add") ) - ;; sm:MYIFAJgBAJoBAJIBAJoBAJIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQDqDQCcAQCmAQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQCCAQC0BQB6AOYBAIwBAA + ;; sm:MoIFAJgBAJoBAJIBAJoBAJIBAIIBAR4FwgoAlgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEArAEAbgDMAQDqDQCcAQCmAQCYAQCYAQBoAJQBAGAAegDOAQCeAQCqAQCUAQCWAQDKAQDeAQDQAQCwAQEcAYoBAQYBigEAbgDCAQDCAQC-AQCCAQC0BQB6AOYBAIwBAA @@ -293,6 +294,7 @@ test 'top-level rec destructure then fn using binding', fn: (local.set $:ret_30 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $a_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 100)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_95_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_95 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_95_raw))) @@ -456,6 +458,6 @@ test 'top-level rec destructure then fn using binding', fn: (data $d_1 "foo") (data $d_2 "x") ) - ;; sm:Vr4IAJoBAJoBAJIBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCCgCcAQCmAQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA + ;; sm:V74IAJoBAJoBAJIBAIQBALoBAM4BALoBAKwBATQF3AoAlgEAugEAxgEAogEAvAEA0gEAoAEAqgEAlAEAlgEAygEAsAEAbgDOAQD8BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMoIAJYBALoBAMgBAMgBALoBANIBATMNkgEBAA28BgC6AQDIAQBuAMgIAJwBAJoBAJwBAJoBAJQBAOQBANIBALgBANIBAQANtAQAWACkCQCUAQC6AQDGAQC4AQDSAQB6ANIBAHoA0gEAbgC8AQC-AQC-AQCCCgCcAQCmAQCYAQCUAQBmAJgBAGgAtAEA0gEBDAdgAQIBkAEBBgKKAQEFBewFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_effects.fnk b/src/passes/wasm/test_effects.fnk index 893be6e..2628f89 100644 --- a/src/passes/wasm/test_effects.fnk +++ b/src/passes/wasm/test_effects.fnk @@ -32,7 +32,7 @@ test 'set_ctx import + call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_114) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 31)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 31)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_ctx_0)) ) (func $test::v_81 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) diff --git a/src/passes/wasm/test_functions.fnk b/src/passes/wasm/test_functions.fnk index e4038fb..2bd3648 100644 --- a/src/passes/wasm/test_functions.fnk +++ b/src/passes/wasm/test_functions.fnk @@ -19,6 +19,7 @@ test 'user fn call', fn: (local.set $a_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $b_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 35)) (return_call $std/operators.fnk:op_plus (local.get $:ctx_param) (local.get $a_1) (local.get $b_2) (local.get $:ret_5)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -53,7 +54,7 @@ test 'user fn call', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_14) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_13) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_3) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 17)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 17)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -69,7 +70,7 @@ test 'user fn call', fn: (data $d_0 "test") (data $d_1 "add") ) - ;; sm:H4IFAJgBAJoBAJIBAJoBAJIBASIF8AsAnAEApgEAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABAIIBALQFAHoA5gEAjAEA + ;; sm:IIIFAJgBAJoBAJIBAJoBAJIBAIIBASIF8AsAnAEApgEAmAEAmAEAaAB6AM4BAJ4BAKoBAJQBAJYBAMoBALABARQBigEBBgGKAQBuAMIBAMIBAMABAIIBALQFAHoA5gEAjAEA test 'chained fn calls', fn: @@ -91,6 +92,7 @@ test 'chained fn calls', fn: (local.set $:ret_7 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 89)) (local.set $:lit_9 (struct.new $std/int.wat:I64 (i64.const 2))) (return_call $std/operators.fnk:op_mul (local.get $:ctx_param) (local.get $x_3) (local.get $:lit_9) (local.get $:ret_7)) ) @@ -101,6 +103,7 @@ test 'chained fn calls', fn: (local.set $:ret_15 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_4 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 83)) (local.set $:lit_17 (struct.new $std/int.wat:I64 (i64.const 1))) (return_call $std/operators.fnk:op_plus (local.get $:ctx_param) (local.get $x_4) (local.get $:lit_17) (local.get $:ret_15)) ) @@ -135,7 +138,7 @@ test 'chained fn calls', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:unwrap_x_68) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_70) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 30)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 30)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inc_69)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -189,7 +192,7 @@ test 'chained fn calls', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_23) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_65) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 34)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 34)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_double_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -211,7 +214,7 @@ test 'chained fn calls', fn: (data $d_2 "double") (data $d_3 "inc") ) - ;; sm:QYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQCCAQDKEQCcAQCmAQCYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BAIIBALoFAHoA5gEAjAEA + ;; sm:Q4gFAJgBAJoBAJIBAIIBASoBiAEBBwX6BQCaAQCaAQCSAQCCAQEwAYoBAQcF3AwAlgEAugEAzgEAugEAzgEAugEAxAEAngEAogEAlAEAlgEAxgEAsAEArAEAbgDMAQDCAQCCAQDKEQCcAQCmAQCYAQCeAQB0AJgBAGgAlAEAYAB6AM4BAKQBALYBAJQBAJYBANABAHoA0AEAoAEAqgEAlAEAlgEAygEAjAIA0AEAvAEBJAGKAQBuAMIBAL4BAIIBALoFAHoA5gEAjAEA test 'pipe unary', fn: @@ -232,6 +235,7 @@ test 'pipe unary', fn: (local.set $:ret_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 79)) (local.set $:lit_8 (struct.new $std/int.wat:I64 (i64.const 2))) (return_call $std/operators.fnk:op_mul (local.get $:ctx_param) (local.get $x_2) (local.get $:lit_8) (local.get $:ret_6)) ) @@ -242,6 +246,7 @@ test 'pipe unary', fn: (local.set $:ret_14 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 73)) (local.set $:lit_16 (struct.new $std/int.wat:I64 (i64.const 1))) (return_call $std/operators.fnk:op_plus (local.get $:ctx_param) (local.get $x_3) (local.get $:lit_16) (local.get $:ret_14)) ) @@ -330,7 +335,7 @@ test 'pipe unary', fn: (data $d_1 "double") (data $d_2 "inc") ) - ;; sm:NYgFAJgBAJoBAJIBASoBiAEBBwX6BQCaAQCaAQCSAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQDgEACcAQCmAQCYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQC6BQB6AOYBAIwBAA + ;; sm:N4gFAJgBAJoBAJIBAIIBASoBiAEBBwX6BQCaAQCaAQCSAQCCAQEwAYoBAQcF8AgAlgEAugEAzgEAugEAxAEAsAEAbgC-AQDCAQDgEACcAQCmAQCYAQCeAQB0AJgBAGgAegDOAQCkAQC2AQCUAQCWAQDQAQB6ANABAKABAKoBAJQBAJYBAMoBAOIBANABALwBAQ4BigEAbgDCAQC-AQC6BQB6AOYBAIwBAA test 'match literal first arm', fn: @@ -422,6 +427,7 @@ test 'match literal first arm', fn: (local.set $:fail_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 184)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_179 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_179) (local.get $:succ_3))) @@ -456,6 +462,7 @@ test 'match literal first arm', fn: (local.set $:fail_40 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_38 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 170)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_165 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -498,6 +505,7 @@ test 'match literal first arm', fn: (local.set $:ret_53 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_52 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_155 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_156 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -554,7 +562,7 @@ test 'match literal first arm', fn: ) (data $d_0 "test") ) - ;; sm:aogFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBALINAJwBAKYBAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA + ;; sm:bYgFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBALINAJwBAKYBAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA test 'match with binding', fn: @@ -647,6 +655,7 @@ test 'match with binding', fn: (local.set $:fail_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_4 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 197)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_192 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_192) (local.get $:succ_5))) @@ -686,6 +695,7 @@ test 'match with binding', fn: (local.set $:fail_42 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_40 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 181)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_176 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -728,6 +738,7 @@ test 'match with binding', fn: (local.set $:ret_57 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_56 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 173)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_166 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_167 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -800,7 +811,7 @@ test 'match with binding', fn: (data $d_0 "test") (data $d_1 "x") ) - ;; sm:dIgFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAMYQAJwBAKYBAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA + ;; sm:d4gFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAMYQAJwBAKYBAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA test 'simple recursion', fn: @@ -895,6 +906,7 @@ test 'simple recursion', fn: (local.set $:fail_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_6 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 231)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_226 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_226) (local.get $:succ_7))) @@ -924,7 +936,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_50) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_171) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 54)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 54)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_recurse_170)) ) (func $test::v_223 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -958,6 +970,7 @@ test 'simple recursion', fn: (local.set $:fail_44 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_42 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 213)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_208 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1000,6 +1013,7 @@ test 'simple recursion', fn: (local.set $:ret_64 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_63 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 205)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_198 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_199 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1031,6 +1045,7 @@ test 'simple recursion', fn: (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $n_1 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 245)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_240_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_240 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_240_raw))) @@ -1078,7 +1093,7 @@ test 'simple recursion', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_91) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_2) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 94)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 94)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_recurse_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1097,7 +1112,7 @@ test 'simple recursion', fn: (data $d_0 "test") (data $d_1 "recurse") ) - ;; sm:jgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCWCwCcAQCmAQCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA + ;; sm:kgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQCEAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBAIQBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCWCwCcAQCmAQCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA test 'mutual recursion — ping pong', fn: @@ -1119,6 +1134,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:ret_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 63)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_58_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_58 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_58_raw))) @@ -1126,7 +1142,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 11)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 11)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_pong_58)) ) (func $test::v_55 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1140,6 +1156,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:ret_14 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 55)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_50_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_50 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_50_raw))) @@ -1147,7 +1164,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $x_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_14) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 19)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 19)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_ping_50)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1194,7 +1211,7 @@ test 'mutual recursion — ping pong', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_22) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 25)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 25)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_ping_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1214,7 +1231,7 @@ test 'mutual recursion — ping pong', fn: (data $d_1 "ping") (data $d_2 "pong") ) - ;; sm:OPgHAJgBAJoBAJIBALoBAM4BALoBALIBAG4AugEAwAEAggEAzggAmgEAmgEAkgEAugEAzgEAugEAsgEAbgC6AQDCAQCCAQCkDwCcAQCmAQCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABAIIBALYFAHoA5gEAjAEA + ;; sm:OvgHAJgBAJoBAJIBAIIBALoBAM4BALoBALIBAG4AugEAwAEAggEAzggAmgEAmgEAkgEAggEAugEAzgEAugEAsgEAbgC6AQDCAQCCAQCkDwCcAQCmAQCYAQCaAQBsAJoBAGwAvAEAzgEAoAEArgEAlAEAlgEAzAEAvAEA0AEAogEArgEAlAEAlgEAzAEAtAEBWgGKAQBuAMIBAMABAIIBALYFAHoA5gEAjAEA test 'mutual recursion — is_even / is_odd', fn: @@ -1312,6 +1329,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_10 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_8 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 365)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_360 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_360) (local.get $:succ_9))) @@ -1341,7 +1359,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_52) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_305) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 56)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 56)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_odd_304)) ) (func $test::v_357 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1375,6 +1393,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_46 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_44 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 347)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_342 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1417,6 +1436,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_66 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_65 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 339)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_332 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_333 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1448,6 +1468,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $n_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 483)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_478_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_478 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_478_raw))) @@ -1547,6 +1568,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_97 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_95 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 461)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_456 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_456) (local.get $:succ_96))) @@ -1576,7 +1598,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_139) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_401) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 143)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 143)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_even_400)) ) (func $test::v_453 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1610,6 +1632,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_133 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_131 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 443)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_438 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1652,6 +1675,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_153 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_152 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 435)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_428 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_429 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1683,6 +1707,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_93 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $n_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 475)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_470_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_470 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_470_raw))) @@ -1745,7 +1770,7 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_180) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 183)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 183)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_is_even_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1769,7 +1794,7 @@ test 'mutual recursion — is_even / is_odd', fn: (data $d_1 "is_even") (data $d_2 "is_odd") ) - ;; sm:jgKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEArg8AnAEApgEAmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA + ;; sm:lgKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBAIQBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAhAEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBAIQBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAhAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQCEAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEArg8AnAEApgEAmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA test 'closure construction and call', fn: @@ -1789,6 +1814,7 @@ test 'closure construction and call', fn: (local.set $:ret_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $y_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 59)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $x_54 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (return_call $std/operators.fnk:op_plus (local.get $:ctx_param) (local.get $x_54) (local.get $y_3) (local.get $:ret_8)) @@ -1802,8 +1828,10 @@ test 'closure construction and call', fn: (local.set $:ret_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 79)) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $x_2))) (local.set $:v_7 (struct.new $rt/apply.wat:Closure (ref.func $test::v_59) (local.get $:caps_arg))) + (call $rt/trace.wat:trace_pop (i32.const 0) (i32.const 79)) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_7) (local.get $:args))) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:ret_6)) @@ -1835,7 +1863,7 @@ test 'closure construction and call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_22) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_67) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 25)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 25)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add1_66)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1874,7 +1902,7 @@ test 'closure construction and call', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_18) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_51) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 29)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 29)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_add_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -1893,7 +1921,7 @@ test 'closure construction and call', fn: (data $d_1 "add1") (data $d_2 "add") ) - ;; sm:Ou4FAJgBAJoBAJIBALoBAL4BASgFnAcAmAEAmgEAkgEArgEAzgEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEAggEAuA0AnAEApgEAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BAIIBALQFAHoA5gEAjAEA + ;; sm:Pe4FAJgBAJoBAJIBAIIBALoBAL4BASgFnAcAmAEAmgEAkgEAggEArgEAzgEAgAEAbgC8AQDuCgCWAQC6AQDOAQC6AQDEAQCeAQCuAQCUAQCWAQDMAQCyAQEwAYoBAG4AwgEAwgEAggEAuA0AnAEApgEAmAEAmAEAaACaAQBsAHoAzgEAngEAqgEAlAEAlgEAygEA5AEA0AEAsAEBDQGKAQBuAMIBAL4BAIIBALQFAHoA5gEAjAEA test 'self-recursive fn defined inside another fn', fn: @@ -1992,6 +2020,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:fail_12 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_10 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 248)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_243 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_243) (local.get $:succ_11))) @@ -2021,7 +2050,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_54) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_188) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 58)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 58)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inner_187)) ) (func $test::v_240 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2055,6 +2084,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:fail_48 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_46 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 230)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_225 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -2097,6 +2127,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:ret_68 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_67 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 222)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_215 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_216 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -2129,6 +2160,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:ret_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $n_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 266)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $x_259 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_260_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -2160,6 +2192,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:ret_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_1 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 272)) (local.set $:cell_inner_2 (struct.new $rt/apply.wat:Cell (ref.null any))) (global.set $test::inner_2 (local.get $:cell_inner_2)) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $x_1) (global.get $test::inner_2))) @@ -2170,7 +2203,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_95) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_6) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_inner_2)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2202,7 +2235,7 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_106) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_4) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 109)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 109)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_outer_0)) ) (func $test::host_wrapper (export "test") (type $test::Fn_host_wrapper) (param $:cont (ref null any)) @@ -2222,7 +2255,7 @@ test 'self-recursive fn defined inside another fn', fn: (data $d_0 "test") (data $d_1 "outer") ) - ;; sm:nwHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAKALAJwBAKYBAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA + ;; sm:pAHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQCEAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAIQBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAKALAJwBAKYBAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA # TODO, duplicate? @@ -2348,6 +2381,7 @@ test 'recursive list sum', fn: (local.set $:fail_11 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_9 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 410)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_405 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_405) (local.get $:succ_10))) @@ -2380,7 +2414,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_85) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $rest_307) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_306) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 89)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 89)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_sum_305)) ) (func $test::v_402 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2506,6 +2540,7 @@ test 'recursive list sum', fn: (local.set $:fail_54 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_52 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 392)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_387 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_387) (local.get $:succ_53))) @@ -2554,6 +2589,7 @@ test 'recursive list sum', fn: (local.set $:ret_111 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_110 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 384)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_377 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_378 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -2588,6 +2624,7 @@ test 'recursive list sum', fn: (local.set $items_1 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $c_2 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 466)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:slot_461_raw (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:slot_461 (ref.cast (ref null $rt/apply.wat:Cell) (local.get $:slot_461_raw))) @@ -2626,7 +2663,7 @@ test 'recursive list sum', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_151) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_149) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_422) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 154)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 154)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_sum_421)) ) (func $test::v_438 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -2737,7 +2774,7 @@ test 'recursive list sum', fn: (data $d_0 "test") (data $d_1 "sum") ) - ;; sm:-wHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQABogwAnAEApgEAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA + ;; sm:_wHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAhAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBAIQBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAhAEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQABogwAnAEApgEAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA @@ -2756,6 +2793,8 @@ test 'main returns exit code', fn: (local $:lit_4 (ref null any)) (local $:args (ref any)) (local.set $:ret_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 28)) + (call $rt/trace.wat:trace_pop (i32.const 0) (i32.const 28)) (local.set $:lit_4 (struct.new $std/int.wat:I64 (i64.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_4) (local.get $:args))) @@ -2802,4 +2841,4 @@ test 'main returns exit code', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:GYIFAJgBARoBiAEAbgDAAQC-CgCcAQCmAQCYAQCaAQBsAHoAzgEAoAEArgEAlAEAlgEAzAEAtAEAbgDQAQCmBQB6AOYBAIwBAA + ;; sm:G4IFAJgBAIIBAIABARoBiAEAbgDAAQC-CgCcAQCmAQCYAQCaAQBsAHoAzgEAoAEArgEAlAEAlgEAzAEAtAEAbgDQAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_io.fnk b/src/passes/wasm/test_io.fnk index f5ae018..45f1076 100644 --- a/src/passes/wasm/test_io.fnk +++ b/src/passes/wasm/test_io.fnk @@ -31,7 +31,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_82) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stderr_198) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_197) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 86)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 86)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $write_196)) ) (func $test::v_219 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -89,7 +89,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_73) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stdout_226) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_163) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 92)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 92)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $write_222)) ) (func $test::v_249 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -165,7 +165,7 @@ test 'std io import handling', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_66) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $stdin_2) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_169) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 98)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 98)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $read_3)) ) (func $test::v_265 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) diff --git a/src/passes/wasm/test_linking.fnk b/src/passes/wasm/test_linking.fnk index 06287cf..2cd55b7 100644 --- a/src/passes/wasm/test_linking.fnk +++ b/src/passes/wasm/test_linking.fnk @@ -28,7 +28,7 @@ test 'multi module import', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_114) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 31)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 31)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $shrub_0)) ) (func $./test.fnk::v_81 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -157,12 +157,13 @@ test 'multi module import', fn: (local.set $:ret_30 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $ham_3 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 1) (i32.const 100)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $foo_95 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $ham_3) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_30) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 1) (i32.const 35)) + (call $rt/trace.wat:trace_mark (i32.const 1) (i32.const 35)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $foo_95)) ) (func $./test_link/simple.fnk::v_146 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -320,6 +321,7 @@ test 'multi module import', fn: (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $ni_1 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 2) (i32.const 31)) (local.set $:lit_6 (struct.new $std/int.wat:I64 (i64.const 2))) (return_call $std/operators.fnk:op_mul (local.get $:ctx_param) (local.get $ni_1) (local.get $:lit_6) (local.get $:ret_4)) ) @@ -372,7 +374,7 @@ test 'multi module import', fn: (data $d_7 "./test_link/foobar/spam.fnk") (data $d_8 "foo") ) - ;; sm:tAHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAPwIAJ4BAKYBAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAugEAwgEAbgC-AQDCAQCCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQCGCgCeAQCmAQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBASgBiAEBCQaUCwCeAQCmAQCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA + ;; sm:tgHmCwCWAQC6AQDGAQECBVgBXgKMAQBuAMIBAMQBAIIBAIIHAJYBAJoBAJYBALoBAMYBAG4AvgEAzggAlgEAugEAxgEAxgEAuAEA3AEBXymSAQEAKcIGALoBAMYBAG4AzggAmgEAmgEAmgEAmgEAlAEA4AEA3AEAtgEA3AEBACnABABYALAJAJQBALoBAMYBALgBAN4BAHoA3gEAegDeAQBuALwBAL4BAL4BAPwIAJ4BAKYBAJgBALQBAN4BAJYBAIIBAJoCAIgGAHoA8gEAjgEAogcAmgEAmgEAlgEAhAEAugEAwgEAbgC-AQDCAQCCAQCQCwCWAQC6AQDGAQECA1QAsgEA9gEAyAEA1gEAlgEAlgEAzgEA3AEAbgDSAQCgBwCWAQCaAQCWAQC6AQDIAQBuAL4BAO4IAJYBALoBAMgBAMgBALoBAPYBAQEikgEBACLgBgC6AQDIAQBuAOwIAJwBAJoBAJwBAJoBAJQBAOQBAPYBALgBAPYBAQAi2AQAWADICQCUAQC6AQDGAQC4AQD2AQB6APYBAHoA9gEAbgC8AQC-AQC-AQCGCgCeAQCmAQCYAQCcAQCUAQC0AQD2AQCWAQCCAQCkAgDQBgB6AIoCAI4BAIIGAJgBAJoBAJQBAIIBASgBiAEBCQaUCwCeAQCmAQCYAQCYAQCWAQB6APwBAMwBANgBAJYBAJYBAMoBAN4BAG4AzgEAsAYAegCUAgCOAQA --- diff --git a/src/passes/wasm/test_sets.fnk b/src/passes/wasm/test_sets.fnk index b60240f..542798e 100644 --- a/src/passes/wasm/test_sets.fnk +++ b/src/passes/wasm/test_sets.fnk @@ -33,7 +33,7 @@ test 'set import + construction', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_29) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_28) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_116) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 33)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 33)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_83 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -185,7 +185,7 @@ test 'set spread', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_36) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_107) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 40)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 40)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_106)) ) (func $test::v_123 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -490,6 +490,7 @@ test 'set destructure empty', fn: (local.set $:fail_34 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_32 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 304)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_299 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_299) (local.get $:succ_33))) @@ -524,6 +525,7 @@ test 'set destructure empty', fn: (local.set $:fail_77 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_75 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 290)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_285 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -566,6 +568,7 @@ test 'set destructure empty', fn: (local.set $:ret_90 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_89 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 282)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_275 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_276 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -636,7 +639,7 @@ test 'set destructure empty', fn: (local.set $:v_198 (struct.new $rt/apply.wat:Closure (ref.func $test::v_318) (local.get $:caps_arg))) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_198) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 118)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 118)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_326 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -769,7 +772,7 @@ test 'set destructure empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:wgGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCaCwCcAQCmAQCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA + ;; sm:xQGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCaCwCcAQCmAQCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA test 'set destructure non-empty', fn: @@ -893,6 +896,7 @@ test 'set destructure non-empty', fn: (local.set $:fail_37 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_35 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 307)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_302 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_302) (local.get $:succ_36))) @@ -927,6 +931,7 @@ test 'set destructure non-empty', fn: (local.set $:fail_80 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_78 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 293)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_288 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -969,6 +974,7 @@ test 'set destructure non-empty', fn: (local.set $:ret_93 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_92 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 285)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_278 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_279 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1048,7 +1054,7 @@ test 'set destructure non-empty', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_30) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_29) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_201) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 121)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 121)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_329 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1181,7 +1187,7 @@ test 'set destructure non-empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:yAGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:ywGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure peel one', fn: @@ -1305,6 +1311,7 @@ test 'set destructure peel one', fn: (local.set $:fail_38 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_36 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 400)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_395 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_395) (local.get $:succ_37))) @@ -1418,6 +1425,7 @@ test 'set destructure peel one', fn: (local.set $:fail_81 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_79 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 386)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_381 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_381) (local.get $:succ_80))) @@ -1466,6 +1474,7 @@ test 'set destructure peel one', fn: (local.set $:ret_125 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_124 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 378)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_371 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_372 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1545,7 +1554,7 @@ test 'set destructure peel one', fn: (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_31) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:lit_30) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:v_252) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 153)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 153)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $set_0)) ) (func $test::v_422 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -1678,5 +1687,5 @@ test 'set destructure peel one', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:9AGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:9wGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBAIQBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_strings.fnk b/src/passes/wasm/test_strings.fnk index e7fde9d..c0c31af 100644 --- a/src/passes/wasm/test_strings.fnk +++ b/src/passes/wasm/test_strings.fnk @@ -218,6 +218,8 @@ test 'str tagged template', fn: (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $parts_1 (local.get $:params)) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 51)) + (call $rt/trace.wat:trace_pop (i32.const 0) (i32.const 51)) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $parts_1) (local.get $:args))) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:ret_4)) @@ -239,7 +241,7 @@ test 'str tagged template', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_12) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_39) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 16)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 16)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_foo_38)) ) (func $test::fink_module (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -288,7 +290,7 @@ test 'str tagged template', fn: (data $d_1 "foo") (data $d_2 "1\\n2") ) - ;; sm:JoQFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBAIAMAJwBAKYBAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA + ;; sm:KIQFAJgBAJoBAFwAggEAgAEAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBAIAMAJwBAKYBAJgBAJgBAGgAegDOAQCeAQCqAQCUAQCWAQDKAQDiAQDQAQE4BJIBAQcJcgEACdAFAHoA5gEAjAEA test 'str tagged template escape handling', fn: @@ -306,6 +308,8 @@ test 'str tagged template escape handling', fn: (local.set $:ret_5 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $parts_2 (local.get $:params)) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 101)) + (call $rt/trace.wat:trace_pop (i32.const 0) (i32.const 101)) (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $parts_2) (local.get $:args))) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:ret_5)) @@ -327,7 +331,7 @@ test 'str tagged template escape handling', fn: (local.set $:args (call $rt/apply.wat:args_empty)) (local.set $:args (call $rt/apply.wat:args_concat (local.get $:v_20) (local.get $:args))) (local.set $:args (call $rt/apply.wat:args_prepend (local.get $:ret_67) (local.get $:args))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 24)) + (call $rt/trace.wat:trace_mark (i32.const 0) (i32.const 24)) (return_call $rt/apply.wat:apply_3 (local.get $:args) (local.get $:ctx_param) (local.get $:unwrap_foo_66)) ) (func $test::v_83 (type $rt/apply.wat:Fn3) (param $:caps_param (ref null any)) (param $:ctx_param (ref null any)) (param $:params (ref null any)) @@ -437,7 +441,7 @@ test 'str tagged template escape handling', fn: (data $d_3 "bar") (data $d_4 "\\b\\v\\$\\'\\\\\\xC3\\xA9\\u{8A_9E}") ) - ;; sm:QoYFAJgBAJoBAFwAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALroPAJwBAKYBAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA + ;; sm:RIYFAJgBAJoBAFwAhAEAggEAbgDCAQC-CACWAQC6AQDOAQC6AQDEAQCwAQBuALwBAMIBAIIBALwJAJYBALoBAM4BALoBAMQBAOIBANABAUgIkgEBBy6aCwCWAQC6AQDOAQC6AQDEAQDOAQC6AQDiAQDQAQCwAQEALroPAJwBAKYBAJgBAJgBAGgAmAEAaAB6ANABAJ4BAKoBAJQBAJYBAMoBAQ8DhgEAoAEAqgEAlAEAlgEAygEAkAIA0AEBNBuUAQEjLnIBAC7QBQB6AOYBAIwBAA test 'str implicit formatting handling', fn: @@ -633,6 +637,7 @@ test 'match empty string', fn: (local.set $:fail_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_6 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 203)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_198 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_198) (local.get $:succ_7))) @@ -667,6 +672,7 @@ test 'match empty string', fn: (local.set $:fail_44 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_42 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 189)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_184 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -709,6 +715,7 @@ test 'match empty string', fn: (local.set $:ret_57 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_56 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 181)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_174 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_175 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -737,6 +744,7 @@ test 'match empty string', fn: (local.set $:ret_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $x_1 (call $rt/apply.wat:args_head (local.get $:params))) + (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 215)) (local.set $:caps_arg (ref.null $rt/apply.wat:Captures)) (local.set $:v_29 (struct.new $rt/apply.wat:Closure (ref.func $test::v_209) (local.get $:caps_arg))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 1 (local.get $:v_29))) @@ -793,7 +801,7 @@ test 'match empty string', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:eYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAvAoAnAEApgEAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA + ;; sm:fYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAhAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBAIQBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAhAEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAvAoAnAEApgEAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA test 'empty string eq template', fn: @@ -860,3 +868,5 @@ test 'str eq', fn: ) ;; sm:Cu4FAJwBAKYBAJgBAQAHkAEBFgeQAQEVEtYFAHoA5gEAjAEA + + diff --git a/src/runner/wasmtime_runner.rs b/src/runner/wasmtime_runner.rs index 87cf5f2..067f042 100644 --- a/src/runner/wasmtime_runner.rs +++ b/src/runner/wasmtime_runner.rs @@ -79,6 +79,14 @@ pub fn run( let exit_state: Arc> = Arc::new(Mutex::new(ExitState::default())); let cli_args = Arc::new(args); + // (module_id, cps_id) -> source line, built from the debug marks. Lets + // the trace's `get_loc` resolve a frame's (mid, cid) to a source line. + let loc_map: Arc> = Arc::new( + wasm.marks.iter() + .map(|m| ((m.module_id.0, m.cps_id.0), m.source.start.line)) + .collect(), + ); + let mut linker = Linker::new(&engine); for import in module.imports() { if import.module() == "env" @@ -102,6 +110,18 @@ pub fn run( Ok(()) }).map_err(|e| e.to_string())?; } + "host_resolve_loc" => { + // (module_id, cps_id) -> source line (0 if unknown). Backs the + // trace's get_loc; resolves a frame to a source location. + let lm = loc_map.clone(); + linker.func_new("env", &name, ft, move |_caller, params, results| { + let mid = params[0].unwrap_i32() as u32; + let cid = params[1].unwrap_i32() as u32; + let line = lm.get(&(mid, cid)).copied().unwrap_or(0); + results[0] = Val::I32(line as i32); + Ok(()) + }).map_err(|e| e.to_string())?; + } "host_read_sync" => { let input = stdin.clone(); linker.func_new("env", &name, ft, move |mut caller, params, results| { diff --git a/src/runtime/interop/js/interop.wat b/src/runtime/interop/js/interop.wat index 44b7f0f..dde5d04 100644 --- a/src/runtime/interop/js/interop.wat +++ b/src/runtime/interop/js/interop.wat @@ -76,11 +76,15 @@ (param $args (ref null any)) (param $ctx (ref null any)) (param $callee (ref null any)))) - ;; Keep rt/trace.wat in the link and trace_push alive: user fragments - ;; call it at every call site, but no runtime module references it. - ;; (get_trace is kept alive via std/trace.fnk's fink-level import.) + ;; Keep rt/trace.wat's instrumentation primitives in the link and alive: + ;; user fragments call them from lowered code, but no runtime module + ;; references them. (get_trace is kept alive via std/trace.fnk's import.) (import "rt/trace.wat" "trace_push" (func $trace_push (param i32) (param i32))) + (import "rt/trace.wat" "trace_mark" + (func $trace_mark (param i32) (param i32))) + (import "rt/trace.wat" "trace_pop" + (func $trace_pop (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" (func $empty_ctx_inner (result (ref any)))) (import "rt/apply.wat" "set_ctx" diff --git a/src/runtime/interop/rust/interop.wat b/src/runtime/interop/rust/interop.wat index be7daf1..e242a29 100644 --- a/src/runtime/interop/rust/interop.wat +++ b/src/runtime/interop/rust/interop.wat @@ -61,11 +61,15 @@ (param $args (ref null any)) (param $ctx (ref null any)) (param $callee (ref null any)))) - ;; Keep rt/trace.wat in the link and trace_push alive: user fragments - ;; call it at every call site, but no runtime module references it. - ;; (get_trace is kept alive via std/trace.fnk's fink-level import.) + ;; Keep rt/trace.wat's instrumentation primitives in the link and alive: + ;; user fragments call them from lowered code, but no runtime module + ;; references them. (get_trace is kept alive via std/trace.fnk's import.) (import "rt/trace.wat" "trace_push" (func $trace_push (param i32) (param i32))) + (import "rt/trace.wat" "trace_mark" + (func $trace_mark (param i32) (param i32))) + (import "rt/trace.wat" "trace_pop" + (func $trace_pop (param i32) (param i32))) (import "rt/apply.wat" "empty_ctx" (func $empty_ctx (result (ref any)))) (import "rt/apply.wat" "set_ctx" diff --git a/src/runtime/rt/trace.wat b/src/runtime/rt/trace.wat index 4ab5242..4946515 100644 --- a/src/runtime/rt/trace.wat +++ b/src/runtime/rt/trace.wat @@ -1,26 +1,33 @@ -;; Trace buffer -- a fixed-size ring of recent user-fn call sites. +;; Trace buffer -- a bounded stack of userland function activations. ;; -;; Every user-function call site emits a trace_push before dispatching. -;; The push records the call site into a ring in linear memory, -;; overwriting the oldest entry once full. Because Fink compiles every -;; call to a tail call, there is no native wasm call stack to walk; this -;; ring is the portable substitute -- it lives in linear memory so a host -;; can read it even after a hard trap, on any runtime, not just the -;; wasmtime debugger. +;; This is a real backtrace, not a recency log. Each frame is one userland +;; function activation; the live stack of frames is the current call chain. +;; Because Fink compiles every call to a tail call, there is no native wasm +;; call stack to walk; this stack is the portable substitute -- it lives in +;; linear memory so a host can read it even after a hard trap, on any +;; runtime, not just the wasmtime debugger. ;; -;; Layout: the ring occupies the reserved region at the bottom of linear -;; memory, [0, trace_len*8). emit.rs owns the linear-memory map and keeps -;; this region clear of the literal data pool. Each slot is two i32s -- -;; module_id then cps_id. Together they identify a call site package-wide -;; -- cps_id is only unique per module. +;; Three primitives drive it (all carry the full (mid, cid) pair; the +;; redundancy is a dev-time balance check, removable later): +;; trace_push(mid, cid) -- enter a userland fn defined at (mid, cid): +;; push a frame stamped with that identity. +;; trace_mark(mid, cid) -- a call site (mid, cid) within the current fn: +;; update the top frame's current-call-site fields. +;; trace_pop(mid, cid) -- leave fn (mid, cid): pop the top frame. ;; -;; trace_next is the slot index of the next write; it wraps at trace_len. -;; The reader derives the valid range from it. Slot count and base are -;; compile-time constants here -- clarity over micro-opt for now; an -;; optimizer can inline/specialise later. +;; Frame = 4 x i32 = 16 bytes: { fn_mid, fn_cid, call_mid, call_cid }. +;; fn_* -- the function's identity (stamped by push). +;; call_* -- where in the function we currently are (set by mark; 0 until +;; the first call). ;; -;; The user fragment brings memory 0; this module doesn't declare its -;; own, matching interop.wat. +;; Bounded window of TRACE_CAP frames. trace_depth is the logical depth and +;; may exceed TRACE_CAP; storage is a ring of TRACE_CAP frames indexed by +;; (depth mod TRACE_CAP), so a push when full overwrites the oldest (bottom, +;; main-ward) frame and a pop at depth 0 is a no-op. The window size is all +;; that bounds how deep the backtrace goes. +;; +;; The user fragment brings memory 0; this module doesn't declare its own, +;; matching interop.wat. (module @@ -53,101 +60,124 @@ (import "std/int.wat" "_int_ival" (func $int_ival (param (ref $Int)) (result i64))) - ;; Ring capacity in slots. 64 frames. - (global $trace_len i32 (i32.const 64)) - ;; Byte offset of the ring region (bottom of memory). + ;; Host resolves (module_id, cps_id) -> source line (0 if unknown), via + ;; the compiled debug marks. Backs the fink-callable get_loc. + (import "env" "host_resolve_loc" + (func $host_resolve_loc (param i32) (param i32) (result i32))) + + ;; Window capacity in frames. + (global $TRACE_CAP i32 (i32.const 64)) + ;; Bytes per frame: 4 x i32 = { fn_mid, fn_cid, call_mid, call_cid }. + (global $FRAME_BYTES i32 (i32.const 16)) + ;; Byte offset of the frame region (bottom of memory). (global $trace_base i32 (i32.const 0)) - ;; Slot index of the next write. Wraps at trace_len. - (global $trace_next (mut i32) (i32.const 0)) + ;; Logical stack depth. May exceed TRACE_CAP; storage wraps mod TRACE_CAP. + (global $trace_depth (mut i32) (i32.const 0)) - ;; Record a call site into the ring at trace_next, then advance - ;; trace_next modulo trace_len. Args: module_id, cps_id. + ;; Byte address of the frame at logical index `idx` (idx mod TRACE_CAP). + (func $frame_addr (param $idx i32) (result i32) + (i32.add + (global.get $trace_base) + (i32.mul + (i32.rem_u (local.get $idx) (global.get $TRACE_CAP)) + (global.get $FRAME_BYTES)))) + + ;; Enter a userland fn defined at (mid, cid): push a frame stamped with + ;; that identity, call site cleared. depth++ (storage wraps when full, + ;; dropping the oldest frame). (func $trace_push (@pub) - (param $module_id i32) - (param $cps_id i32) - (local $slot_addr i32) - - ;; slot_addr = trace_base + trace_next * 8 - (local.set $slot_addr - (i32.add - (global.get $trace_base) - (i32.mul (global.get $trace_next) (i32.const 8)))) - - ;; mem[slot_addr] = module_id - (i32.store (local.get $slot_addr) (local.get $module_id)) - ;; mem[slot_addr+4] = cps_id - (i32.store - (i32.add (local.get $slot_addr) (i32.const 4)) - (local.get $cps_id)) - - ;; trace_next = (trace_next + 1) mod trace_len - (global.set $trace_next - (i32.rem_u - (i32.add (global.get $trace_next) (i32.const 1)) - (global.get $trace_len)))) - - ;; Read up to `depth` most-recent call sites as a fink list of - ;; [module_id, cps_id] pairs. Walks back from trace_next (the most - ;; recent write) toward older entries, stopping at the first unwritten - ;; slot (cps_id == 0) or after `depth` entries. Each frame is prepended - ;; as it is read, so the resulting list runs oldest-to-newest (the - ;; newest call site is the last element). Raw i32 worker; the fink- - ;; callable entry is the Fn3 wrapper below. + (param $fn_mid i32) + (param $fn_cid i32) + (local $addr i32) + (local.set $addr (call $frame_addr (global.get $trace_depth))) + (i32.store (local.get $addr) (local.get $fn_mid)) + (i32.store offset=4 (local.get $addr) (local.get $fn_cid)) + (i32.store offset=8 (local.get $addr) (i32.const 0)) ;; call_mid + (i32.store offset=12 (local.get $addr) (i32.const 0)) ;; call_cid + (global.set $trace_depth (i32.add (global.get $trace_depth) (i32.const 1)))) + + ;; A call site (mid, cid) within the current fn: update the top frame's + ;; current-call-site fields. No-op if the stack is empty. + (func $trace_mark (@pub) + (param $call_mid i32) + (param $call_cid i32) + (local $addr i32) + (if (i32.eqz (global.get $trace_depth)) + (then (return))) + (local.set $addr + (call $frame_addr (i32.sub (global.get $trace_depth) (i32.const 1)))) + (i32.store offset=8 (local.get $addr) (local.get $call_mid)) + (i32.store offset=12 (local.get $addr) (local.get $call_cid))) + + ;; Leave fn (mid, cid): pop the top frame. No-op at depth 0 (a pop of a + ;; frame that aged out of the bounded window). The (mid, cid) args are + ;; carried for a future balance assert; unused for now. + (func $trace_pop (@pub) + (param $fn_mid i32) + (param $fn_cid i32) + (if (i32.eqz (global.get $trace_depth)) + (then (return))) + (global.set $trace_depth (i32.sub (global.get $trace_depth) (i32.const 1)))) + + ;; Read up to `depth` innermost frames as a fink list of + ;; [call_mid, call_cid] pairs -- the current call site of each live + ;; function, newest (innermost) first. Walks the stack top-down. A frame + ;; whose call site is still 0 (entered, not yet at a call) is emitted as + ;; [fn_mid, fn_cid] instead, so the innermost frame always carries a + ;; useful location. (func $read_trace (param $depth i32) (result (ref $List)) (local $n i32) + (local $avail i32) (local $i i32) - (local $slot i32) - (local $slot_addr i32) + (local $addr i32) (local $mid i32) (local $cid i32) (local $result (ref $List)) (local $frame (ref $List)) - ;; n = min(depth, trace_len) + ;; avail = min(trace_depth, TRACE_CAP); n = min(depth, avail). + (local.set $avail + (select (global.get $trace_depth) (global.get $TRACE_CAP) + (i32.le_u (global.get $trace_depth) (global.get $TRACE_CAP)))) (local.set $n - (select - (local.get $depth) - (global.get $trace_len) - (i32.le_u (local.get $depth) (global.get $trace_len)))) + (select (local.get $depth) (local.get $avail) + (i32.le_u (local.get $depth) (local.get $avail)))) (local.set $result (call $list_empty)) - ;; Walk back from the newest write. The i-th-newest slot is - ;; (trace_next - 1 - i) mod trace_len. Add trace_len before the rem to - ;; keep the operand non-negative. + ;; Walk bottom-up over the window so that prepending leaves the + ;; newest (innermost) frame at the head - conventional backtrace order + ;; (get_trace's own call site first, callers after). The oldest + ;; in-window frame is logical index (trace_depth - n); the i-th walked + ;; is (trace_depth - n + i). (local.set $i (i32.const 0)) (block $done (loop $next (br_if $done (i32.ge_u (local.get $i) (local.get $n))) - (local.set $slot - (i32.rem_u + (local.set $addr + (call $frame_addr (i32.add - (i32.sub (global.get $trace_next) (i32.const 1)) - (i32.sub (global.get $trace_len) (local.get $i))) - (global.get $trace_len))) - - (local.set $slot_addr - (i32.add - (global.get $trace_base) - (i32.mul (local.get $slot) (i32.const 8)))) - - (local.set $mid (i32.load (local.get $slot_addr))) - (local.set $cid (i32.load (i32.add (local.get $slot_addr) (i32.const 4)))) + (i32.sub (global.get $trace_depth) (local.get $n)) + (local.get $i)))) - ;; Stop at the first unwritten slot (cps_id == 0). - (br_if $done (i32.eqz (local.get $cid))) + ;; Prefer the current call site; fall back to fn identity if no call + ;; has been marked yet (call_cid == 0). + (local.set $cid (i32.load offset=12 (local.get $addr))) + (if (i32.eqz (local.get $cid)) + (then + (local.set $mid (i32.load (local.get $addr))) + (local.set $cid (i32.load offset=4 (local.get $addr)))) + (else + (local.set $mid (i32.load offset=8 (local.get $addr))))) - ;; frame = [module_id, cps_id] (local.set $frame (call $list_prepend (call $box_i64 (i64.extend_i32_u (local.get $mid))) (call $list_prepend (call $box_i64 (i64.extend_i32_u (local.get $cid))) (call $list_empty)))) - ;; prepend frame; walking newest-first means the result ends up - ;; oldest-to-newest. (local.set $result (call $list_prepend (local.get $frame) (local.get $result))) @@ -157,8 +187,8 @@ (local.get $result)) ;; Fink-callable entry: `get_trace depth`. - ;; CPS-lowered args = [k_caller, depth]. `depth` arrives as a boxed - ;; $Int; unbox it, read the ring, tail-call k_caller with the list. + ;; CPS-lowered args = [k_caller, depth]. `depth` arrives as a boxed $Int; + ;; unbox it, read the stack, tail-call k_caller with the list. (elem declare func $get_trace_apply) (func $get_trace_apply (type $Fn3) @@ -195,4 +225,49 @@ (func $get_trace (@pub) (result (ref any)) (global.get $get_trace_closure)) + + ;; Fink-callable entry: `get_loc mid, cid` -> source line (0 if unknown). + ;; CPS-lowered args = [k_caller, mid, cid], both boxed $Int. + (elem declare func $get_loc_apply) + + (func $get_loc_apply (type $Fn3) + (param $_caps (ref null any)) + (param $ctx (ref null any)) + (param $args (ref null any)) + (local $k_caller (ref any)) + (local $rest (ref null any)) + (local $mid (ref null any)) + (local $cid (ref null any)) + (local $line i32) + (local $k_args (ref any)) + + (local.set $k_caller (ref.as_non_null (call $args_head (local.get $args)))) + (local.set $rest (call $args_tail (local.get $args))) + (local.set $mid (call $args_head (local.get $rest))) + (local.set $rest (call $args_tail (local.get $rest))) + (local.set $cid (call $args_head (local.get $rest))) + + (local.set $line + (call $host_resolve_loc + (i32.wrap_i64 (call $int_ival (ref.cast (ref $Int) (local.get $mid)))) + (i32.wrap_i64 (call $int_ival (ref.cast (ref $Int) (local.get $cid)))))) + + (local.set $k_args (call $args_empty)) + (local.set $k_args + (call $args_prepend + (call $box_i64 (i64.extend_i32_u (local.get $line))) + (local.get $k_args))) + (return_call $apply_3 + (local.get $k_args) + (local.get $ctx) + (local.get $k_caller))) + + (global $get_loc_closure (ref $Closure) + (struct.new $Closure + (ref.func $get_loc_apply) + (ref.null $Captures))) + + (func $get_loc (@pub) + (result (ref any)) + (global.get $get_loc_closure)) ) From 53299f42a96232a4021b9af353cd1a958231bbd5 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Sat, 13 Jun 2026 08:34:43 +0100 Subject: [PATCH 5/7] fix(trace): gate trace-push on source-level fns Synth match-block functions (m_0/mp_N) are classified CpsFunction but are not user-authored, so pushing trace frames for them injected 2-3 :0 frames between a match call site and the match body, eating the backtrace window and hiding the real frame. Gate the push on a new is_source_fn check (origin resolves to NodeKind::Fn), mirroring the existing is_source_apply gate; synth CpsFunctions inherit the enclosing frame like a CpsClosure. Re-bless the match/recursion/ set-destructure snapshots whose synth trace_push lines now drop. --- src/passes/wasm/lower.rs | 31 +++++++++++++++++++++------- src/passes/wasm/test_functions.fnk | 33 ++++++------------------------ src/passes/wasm/test_sets.fnk | 15 +++----------- src/passes/wasm/test_strings.fnk | 5 +---- 4 files changed, 34 insertions(+), 50 deletions(-) diff --git a/src/passes/wasm/lower.rs b/src/passes/wasm/lower.rs index e743cbd..172e183 100644 --- a/src/passes/wasm/lower.rs +++ b/src/passes/wasm/lower.rs @@ -60,6 +60,19 @@ fn is_source_apply(cps: &CpsResult, ast: &Ast<'_>, id: CpsId) -> bool { matches!(ast.nodes.get(*ast_id).kind, crate::ast::NodeKind::Apply { .. }) } +/// True iff this CpsId's source origin is a `Fn` AST node — i.e. a +/// function the user actually wrote, not a desugar-synthesised +/// `CpsFunction` (e.g. the `m_0`/`mp_N` match-block wrappers, whose +/// origin is the surrounding `Match` node). Used to gate trace-frame +/// pushes so the activation stack reflects only source-level functions; +/// synth `CpsFunction`s route through the no-push/inherit path like a +/// `CpsClosure`, keeping push/pop balanced and the trace free of `:0` +/// synth frames. +fn is_source_fn(cps: &CpsResult, ast: &Ast<'_>, id: CpsId) -> bool { + let Some(Some(ast_id)) = cps.origin.try_get(id) else { return false }; + matches!(ast.nodes.get(*ast_id).kind, crate::ast::NodeKind::Fn { .. }) +} + /// Lower a lifted CPS result to an unlinked wasm IR `Fragment`. /// /// `fqn_prefix` is the module's fully-qualified URL prefix (e.g. @@ -213,8 +226,9 @@ pub fn lower(cps: &CpsResult, ast: &Ast<'_>, fqn_prefix: &str, module_id: Module let display = format!("{}{}", lcx.fqn_prefix, raw_display); use crate::passes::cps::ir::CpsFnKind; let trace = match fn_kind { - CpsFnKind::CpsFunction => TraceFrame::entry(name.id), - CpsFnKind::CpsClosure => TraceFrame::cont(None), // top-level: no enclosing + CpsFnKind::CpsFunction if is_source_fn(lcx.cps, lcx.ast, name.id) => + TraceFrame::entry(name.id), + _ => TraceFrame::cont(None), // synth/closure: no frame, no enclosing }; let fn_sym = lower_fn( &mut lcx, @@ -800,13 +814,16 @@ fn lower_expr( // module's FQN prefix so cross-fragment merges stay collision-free. let raw_display = cps_ident_for_bind(lcx.cps, lcx.ast, name); let display = format!("{}{}", lcx.fqn_prefix, raw_display); - // A CpsFunction is a real userland fn (push its own frame); a - // CpsClosure is a lifted continuation (no push; its ret-cont pops - // the enclosing fn, inherited via ctx.trace_fn_id). + // A source-level CpsFunction is a real userland fn (push its own + // frame); a CpsClosure is a lifted continuation (no push; its + // ret-cont pops the enclosing fn, inherited via ctx.trace_fn_id). + // Synth CpsFunctions (e.g. the m_0/mp_N match-block wrappers) + // inherit too — they are not source-level activations. use crate::passes::cps::ir::CpsFnKind; let trace = match fn_kind { - CpsFnKind::CpsFunction => TraceFrame::entry(name.id), - CpsFnKind::CpsClosure => TraceFrame::cont(ctx.trace_fn_id), + CpsFnKind::CpsFunction if is_source_fn(lcx.cps, lcx.ast, name.id) => + TraceFrame::entry(name.id), + _ => TraceFrame::cont(ctx.trace_fn_id), }; let fn_sym = lower_fn( lcx, diff --git a/src/passes/wasm/test_functions.fnk b/src/passes/wasm/test_functions.fnk index 2bd3648..b38d861 100644 --- a/src/passes/wasm/test_functions.fnk +++ b/src/passes/wasm/test_functions.fnk @@ -427,7 +427,6 @@ test 'match literal first arm', fn: (local.set $:fail_4 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_2 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 184)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_179 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_179) (local.get $:succ_3))) @@ -462,7 +461,6 @@ test 'match literal first arm', fn: (local.set $:fail_40 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_38 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 170)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_165 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -505,7 +503,6 @@ test 'match literal first arm', fn: (local.set $:ret_53 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_52 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 162)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_155 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_156 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -562,7 +559,7 @@ test 'match literal first arm', fn: ) (data $d_0 "test") ) - ;; sm:bYgFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBALINAJwBAKYBAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA + ;; sm:aogFAJoBARwCjAEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAwgwAmgEAmgEAmgEAmgEAlAEA4AEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQDIBQCaAQEWAowBAG4AwgEAxAcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBALINAJwBAKYBAJgBAHoA0gEAsgEA0gEAegDSAQCyAQDSAQDYAQDSAQEfAYgBAG4AwAEAwAEApAUAegDmAQCMAQA test 'match with binding', fn: @@ -655,7 +652,6 @@ test 'match with binding', fn: (local.set $:fail_6 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_4 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 197)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_192 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_192) (local.get $:succ_5))) @@ -695,7 +691,6 @@ test 'match with binding', fn: (local.set $:fail_42 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_40 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 181)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_176 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -738,7 +733,6 @@ test 'match with binding', fn: (local.set $:ret_57 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_56 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 173)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_166 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_167 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -811,7 +805,7 @@ test 'match with binding', fn: (data $d_0 "test") (data $d_1 "x") ) - ;; sm:d4gFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAMYQAJwBAKYBAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA + ;; sm:dIgFAJoBASgBigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAxAwAmgEAmgEAnAEAmgEAlAEA4gEA1AEBBQGKAQEAAdYKAJoBAJoBAJoBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDCAQC-AQCKCACaAQC6AQDQAQC-AQCwAQEcAYoBAQcFiAgAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAMYQAJwBAKYBAJgBAJQBAGABNQGCAQCYAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBALYBANIBALIBANIBANgBANIBAKgBAG4AygEAwAEApAUAegDmAQCMAQA test 'simple recursion', fn: @@ -906,7 +900,6 @@ test 'simple recursion', fn: (local.set $:fail_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_6 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 231)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_226 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_226) (local.get $:succ_7))) @@ -970,7 +963,6 @@ test 'simple recursion', fn: (local.set $:fail_44 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_42 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 213)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_208 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1013,7 +1005,6 @@ test 'simple recursion', fn: (local.set $:ret_64 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_63 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 205)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_198 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_199 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1112,7 +1103,7 @@ test 'simple recursion', fn: (data $d_0 "test") (data $d_1 "recurse") ) - ;; sm:kgGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQCEAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQCEAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBAIQBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCWCwCcAQCmAQCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA + ;; sm:jwGIBQCaAQFEAowBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8AMgMAJwBAJoBAJwBAJoBAJYBAOQBANQBAQUBigEBAAHYCgCaAQCaAQCaAQCaAQCUAQC6AQDCAQDeAQDSAQB6ANIBAG4AvAEAwgEAvgEAzggAlgEAugEA0AEAvgEAxgEAvAEAbgC-AQDEAQCCAQDOCQCaAQC6AQDQAQC-AQDAAQDkAQDUAQEyAYoBAQcF-AcAnAEAmgEAnAEAmgEAlgEAugEAwgEAbgDEAQCABABYAIQHALoBAMIBAMYBAMIBAHoA1AEAbgDAAQDAAQDEAQD0CACaAQCaAQCWAQC6AQDCAQDCAQCEAgDUAQBuAL4BAMABAMIBAPYOAJgBAJoBAJIBAIQBALoBANABAL4BAHoA0gEAsgEA0gEA3AEA0gEAsgEA0gEA2AEA0gEAbgC6AQDAAQCWCwCcAQCmAQCYAQCgAQB4AMIBANABAKYBALoBAJQBAJYBANIBAMABARwBigEAbgDCAQDAAQCCAQC8BQB6AOYBAIwBAA test 'mutual recursion — ping pong', fn: @@ -1329,7 +1320,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_10 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_8 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 365)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_360 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_360) (local.get $:succ_9))) @@ -1393,7 +1383,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_46 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_44 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 347)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_342 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1436,7 +1425,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_66 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_65 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 339)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_332 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_333 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1568,7 +1556,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_97 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_95 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 461)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_456 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_456) (local.get $:succ_96))) @@ -1632,7 +1619,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:fail_133 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_131 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 443)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_438 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -1675,7 +1661,6 @@ test 'mutual recursion — is_even / is_odd', fn: (local.set $:ret_153 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_152 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 435)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_428 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_429 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1794,7 +1779,7 @@ test 'mutual recursion — is_even / is_odd', fn: (data $d_1 "is_even") (data $d_2 "is_odd") ) - ;; sm:lgKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBAIQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBAIQBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAhAEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBAIQBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAhAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQCEAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEArg8AnAEApgEAmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA + ;; sm:kAKIBQCaAQFEBGIAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBQGKAQEAAdoKAJoBAJoBAJwBAJoBAJQBALoBAMIBAN4BANIBAHoA0gEAbgC8AQDEAQC-AQDMCACWAQC6AQDQAQC-AQDGAQC6AQBuAL4BAMQBAIIBAMwJAJoBALoBANABAL4BAMABAOQBANQBATQBigEBBwX4BwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEA9g4AmAEAmgEAkgEAhAEAugEA0AEAvgEAegDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAMwFAJwBAU4FZABuAMQBALoGALoBAMIBAMgBAG4AxgEAtAgAmAEAugEAyAEAyAEAiAEAfADODACeAQCaAQCeAQCaAQCWAQDoAQDUAQEFAYwBAQAB5AoAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDUAQBuAL4BAMQBAMABANIIAJgBALoBANABAL4BAMYBALwBAG4AwAEAxAEAhAEA0gkAnAEAugEA0AEAvgEAwAEA5gEA1AEBOAGMAQEHBYAIAJ4BAJoBAJ4BAJoBAJgBALoBAMIBAG4AxgEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA-AgAnAEAmgEAmAEAugEAwgEAwgEAiAIA1AEAbgDAAQDAAQDEAQCCDwCaAQCaAQCSAQCEAQC6AQDQAQC-AQB6ANQBALQBANQBANwBANQBALQBANQBANwBANQBAG4AugEAwgEArg8AnAEApgEAmAEAoAEAeACeAQB0AMABANABAKYBALoBAJQBAJYBANIBAMIBANIBAKYBALYBAJQBAJYBANABAMABARwBjAEAbgDEAQDAAQCEAQC8BQB6AOYBAIwBAA test 'closure construction and call', fn: @@ -2020,7 +2005,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:fail_12 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_10 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 248)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_243 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_243) (local.get $:succ_11))) @@ -2084,7 +2068,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:fail_48 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_46 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 230)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_225 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -2127,7 +2110,6 @@ test 'self-recursive fn defined inside another fn', fn: (local.set $:ret_68 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_67 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 222)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_215 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_216 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -2255,7 +2237,7 @@ test 'self-recursive fn defined inside another fn', fn: (data $d_0 "test") (data $d_1 "outer") ) - ;; sm:pAHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQCEAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAIQBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAKALAJwBAKYBAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA + ;; sm:oQHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfADIDACcAQCaAQCcAQCaAQCWAQDkAQDUAQFiAYoBAQAB3goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA0gEAegDSAQBuAL4BAMQBAL4BAMoIAJYBALoBANABAL4BAMYBALgBAG4AvgEAxAEAggEAygkAmgEAugEA0AEAvgEAwAEA5AEA1AEBMAGKAQEHBfgHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQC6DwCYAQCaAQCSAQCEAQC6AQDAAQDQAQC-AQCyAQDSAQCyAQDSAQDcAQDSAQCyAQDSAQDYAQDSAQBuALoBAMABAIQJAJgBAJoBAJIBAIQBAJwBAHYA5gEA0AEAqAEAvgEBHAGKAQBuAMIBAMABAIIBAKALAJwBAKYBAJgBAJwBAHAAegDQAQCiAQCyAQCUAQCWAQDOAQC4AQESAo4BAG4AxAEAwAEAhAEAuAUAegDmAQCMAQA # TODO, duplicate? @@ -2381,7 +2363,6 @@ test 'recursive list sum', fn: (local.set $:fail_11 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_9 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 410)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_405 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_405) (local.get $:succ_10))) @@ -2540,7 +2521,6 @@ test 'recursive list sum', fn: (local.set $:fail_54 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_52 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 392)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_387 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_387) (local.get $:succ_53))) @@ -2589,7 +2569,6 @@ test 'recursive list sum', fn: (local.set $:ret_111 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_110 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 384)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_377 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_378 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -2774,7 +2753,7 @@ test 'recursive list sum', fn: (data $d_0 "test") (data $d_1 "sum") ) - ;; sm:_wHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAhAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBAIQBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAhAEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQABogwAnAEApgEAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA + ;; sm:_AHuBQCaAQC6AQDAAQBuAL4BALgGALoBAMIBAMgBAG4AxgEAsggAlgEAugEAyAEAyAEAhgEAfACyDQCWAQC6AQDIAQDIAQFMAlQA6AEA1AEBAAL8BQC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAC5goAnAEAmgEAnAEAmgEAlAEAugEAwgEA4AEA0gEAegDSAQBuALwBAMQBAL4BAJAJAJYBALoBANABAL4BAMYBAMYBALQBAG4AvgEAxAEAxAEAggEAhAoAmgEAmgEAkgEAmgEAmAEAugEA0AEAvgEAwAEAjAIA1AEBQgXwCACWAQCaAQCWAQC6AQDCAQDIAQErAVABCgRWAG4AvgEAvgEAxgEAvAcAlgEAmgEAlgEAugEAyAEBCwtUAG4AvgEAvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAAuUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAL6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEAwg8AmAEAmgEAmgEAmgEAkgEAhAEAugEA0AEAvgEArgEA0gEAsgEA0gEA3AEA0gEAsgEA1AEA2gEA1AEAbgDCAQDAAQCUCQCYAQC6AQDQAQC-AQDGAQC0AQFgAYwBAG4AxAEAwAEAxAEAhAEAzAkAmAEAugEA0AEAvgEAxgEA5gEA1AEBGQGMAQEAAeYJAJgBALoBANABAL4BAMYBAOYBANQBAQYBjAEBAAHmCQCYAQC6AQDQAQC-AQDGAQDmAQDUAQEGAYwBAQABogwAnAEApgEAmAEAmAEAaAC6AQDQAQCeAQCqAQCUAQCWAQDKAQDiAQDUAQEGAYwBARMMdAEUAdYFAHoA5gEAjAEA diff --git a/src/passes/wasm/test_sets.fnk b/src/passes/wasm/test_sets.fnk index 542798e..440355b 100644 --- a/src/passes/wasm/test_sets.fnk +++ b/src/passes/wasm/test_sets.fnk @@ -490,7 +490,6 @@ test 'set destructure empty', fn: (local.set $:fail_34 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_32 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 304)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_299 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_299) (local.get $:succ_33))) @@ -525,7 +524,6 @@ test 'set destructure empty', fn: (local.set $:fail_77 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_75 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 290)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_285 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -568,7 +566,6 @@ test 'set destructure empty', fn: (local.set $:ret_90 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_89 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 282)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_275 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_276 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -772,7 +769,7 @@ test 'set destructure empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:xQGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCaCwCcAQCmAQCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA + ;; sm:wgGKBgCaAQFsAYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCuCACWAQC6AQDGAQF3A1QAuAEA1AEAbgDAAQCEAQD2BgCWAQCaAQCWAQC6AQDIAQBuAL4BAMwIAJYBALoBAMgBAMgBALoBANQBAQEckgEBABy-BgC6AQDIAQBuAMoIAJoBAJoBAJwBAJoBAJQBAOIBANQBALgBANQBAQAcuAQAWACoCQCUAQC6AQDGAQC4AQDUAQB6ANIBAHoA1AEAbgC8AQDAAQDAAQCaCwCcAQCmAQCYAQCUAQBgALQBANQBAGQAbACcAQCGAgBuAMQBAKYFAHoA5gEAjAEA test 'set destructure non-empty', fn: @@ -896,7 +893,6 @@ test 'set destructure non-empty', fn: (local.set $:fail_37 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_35 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 307)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_302 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_302) (local.get $:succ_36))) @@ -931,7 +927,6 @@ test 'set destructure non-empty', fn: (local.set $:fail_80 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_78 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 293)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_288 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -974,7 +969,6 @@ test 'set destructure non-empty', fn: (local.set $:ret_93 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_92 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 285)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_278 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_279 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1187,7 +1181,7 @@ test 'set destructure non-empty', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:ywGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBAIQBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAhAEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:yAGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEAyAUAmgEBFgGKAQBuAMIBAMQHAJwBAJoBAJwBAJoBAJYBALoBAMIBAG4AxAEAgAQAWACEBwC6AQDCAQDGAQDCAQB6ANQBAG4AwAEAwAEAxAEA9AgAmgEAmgEAlgEAugEAwgEAwgEAhAIA1AEAbgC-AQDAAQDCAQDyDwCWAQC6AQDGAQCcAQCiAQCUAQCWAQDGAQB6ANIBALIBANIBAHoA0gEAsgEA0gEA2AEA1AEAqAEAbgDKAQDEAQCGCgCWAQC6AQDGAQGDAQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDKCACaAQCaAQCcAQCaAQCUAQDiAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA test 'set destructure peel one', fn: @@ -1311,7 +1305,6 @@ test 'set destructure peel one', fn: (local.set $:fail_38 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_36 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 400)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_395 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_395) (local.get $:succ_37))) @@ -1425,7 +1418,6 @@ test 'set destructure peel one', fn: (local.set $:fail_81 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_79 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 386)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_381 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_381) (local.get $:succ_80))) @@ -1474,7 +1466,6 @@ test 'set destructure peel one', fn: (local.set $:ret_125 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_124 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 378)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_371 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_372 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -1687,5 +1678,5 @@ test 'set destructure peel one', fn: (data $d_1 "s") (data $d_2 "set") ) - ;; sm:9wGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAhAEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBAIQBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA + ;; sm:9AGKBgCaAQF4AYoBAG4AwgEAuAYAugEAwgEAyAEAbgDGAQCyCACWAQC6AQDIAQDIAQCGAQB8ALINAJYBALoBAMgBAMgBAQcCVADoAQDUAQEAAvwFALoBAMgBAG4AzggAnAEAmgEAnAEAmgEAlgEA5AEA1AEAuAEA1AEBAALoCgCcAQCaAQCcAQCaAQCWAQC6AQDCAQDgAQDSAQB6ANIBAG4AvgEAxAEAvgEA0gUAnAEAmgEAkgEBKgOQAQEHB_AHAJYBALoBAMIBAMgBAQ8BUABuAL4BAMYBAPgGAJYBAJoBAJYBALoBAMgBAG4AvgEAhAgAlgEAugEAyAEAyAEAugEA1AEBAQeUBgC6AQDIAQBuAM4IAJwBAJoBAJwBAJoBAJYBAOQBANQBALgBANQBAQAH6goAnAEAmgEAnAEAmgEAlgEAugEAwgEA4AEA1AEAegDSAQBuAL4BAMQBAMABAP4DAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPgIAJwBAJoBAJgBALoBAMIBAMIBAIgCANQBAG4AwAEAwAEAxAEA9g8AlgEAugEAxgEAnAEAogEAlAEAlgEAxgEAegDSAQCyAQDSAQB6ANQBALQBANQBANoBANQBAKgBAG4AygEAxAEAhgoAlgEAugEAxgEBfQNUALgBANQBAUgBigEBBgGKAQEGAYoBAG4AwgEAwgEAwgEAwAEAhAEA9gYAlgEAmgEAlgEAugEAyAEAbgC-AQDMCACWAQC6AQDIAQDIAQC6AQDUAQFVHJIBAQAcvgYAugEAyAEAbgDMCACcAQCaAQCcAQCaAQCUAQDkAQDUAQC4AQDUAQEAHLgEAFgAqAkAlAEAugEAxgEAuAEA1AEAegDSAQB6ANQBAG4AvAEAwAEAwAEAmgsAnAEApgEAmAEAlAEAYAC0AQDUAQBkAGwAnAEAhgIAbgDEAQCmBQB6AOYBAIwBAA diff --git a/src/passes/wasm/test_strings.fnk b/src/passes/wasm/test_strings.fnk index c0c31af..48d6ad4 100644 --- a/src/passes/wasm/test_strings.fnk +++ b/src/passes/wasm/test_strings.fnk @@ -637,7 +637,6 @@ test 'match empty string', fn: (local.set $:fail_8 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_6 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 203)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_198 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:caps_arg (array.new_fixed $rt/apply.wat:Captures 2 (local.get $:v_198) (local.get $:succ_7))) @@ -672,7 +671,6 @@ test 'match empty string', fn: (local.set $:fail_44 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_42 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 189)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_184 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:args (call $rt/apply.wat:args_empty)) @@ -715,7 +713,6 @@ test 'match empty string', fn: (local.set $:ret_57 (call $rt/apply.wat:args_head (local.get $:params))) (local.set $:params (call $rt/apply.wat:args_tail (local.get $:params))) (local.set $:v_56 (call $rt/apply.wat:args_head (local.get $:params))) - (call $rt/trace.wat:trace_push (i32.const 0) (i32.const 181)) (local.set $:caps_cast (ref.cast (ref $rt/apply.wat:Captures) (local.get $:caps_param))) (local.set $:v_174 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 0))) (local.set $:v_175 (array.get $rt/apply.wat:Captures (local.get $:caps_cast) (i32.const 1))) @@ -801,7 +798,7 @@ test 'match empty string', fn: (data $d_0 "test") (data $d_1 "main") ) - ;; sm:fYgFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAhAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQCEAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBAIQBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAhAEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAvAoAnAEApgEAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA + ;; sm:eogFAJoBAUABigEAbgDCAQC4BgC6AQDCAQDIAQBuAMYBALIIAJYBALoBAMgBAMgBAIYBAHwAyAwAnAEAmgEAnAEAmgEAlgEA5AEA1AEBBwJuAQAC2AoAmgEAmgEAmgEAmgEAlAEAugEAwgEA3gEA0gEAegDSAQBuALwBAMIBAL4BAMgFAJoBARoBigEAbgDCAQDEBwCcAQCaAQCcAQCaAQCWAQC6AQDCAQBuAMQBAIAEAFgAhAcAugEAwgEAxgEAwgEAegDUAQBuAMABAMABAMQBAPQIAJoBAJoBAJYBALoBAMIBAMIBAIQCANQBAG4AvgEAwAEAwgEAzgwAmAEAmgEAkgEAhAEAegDSAQCyAQDSAQB6ANIBALIBANIBANgBANIBAG4AugEAwAEAvAoAnAEApgEAmAEAmgEAbAB6ANABAKABAK4BAJQBAJYBAMwBALQBAG4A0AEApgUAegDmAQCMAQA test 'empty string eq template', fn: From ba6a0414c91dd63689d0767d3c6b3de26aa566f4 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Sat, 13 Jun 2026 08:34:48 +0100 Subject: [PATCH 6/7] feat(js-interop): stub host_resolve_loc in JS host rt/trace.wat is always linked and unconditionally imports env.host_resolve_loc; the wasm+js host did not provide it, so every module failed to instantiate under Node with a LinkError. Stub it to return 0 (the import's documented "unknown" sentinel) like the host's other unsupported imports. Source-line resolution in JS needs the compiled debug-mark map shipped into the artifact -- a follow-up. --- src/runtime/interop/js/fink.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/runtime/interop/js/fink.js b/src/runtime/interop/js/fink.js index 108f81f..941c60a 100644 --- a/src/runtime/interop/js/fink.js +++ b/src/runtime/interop/js/fink.js @@ -267,6 +267,10 @@ export const init_wasm = async (bytes, host = {}) => { host_write, host_read_sync: (_fd, _size, _ptr) => 0, host_invoke_cont: (resolver, args, ctx) => resolver(args, ctx), + // Trace source-line resolution needs the compiled debug marks, which + // the wasm+js artifact does not carry. Return 0 (the import's + // "unknown" sentinel) so get_loc yields no line in the JS host. + host_resolve_loc: (_mid, _cid) => 0, }; const { instance } = await WebAssembly.instantiate(bytes, { env }); From b5e70346e03f0bfa0c0482b6c971da497a945911 Mon Sep 17 00:00:00 2001 From: Jan Klaas Kollhof Date: Sat, 13 Jun 2026 08:34:55 +0100 Subject: [PATCH 7/7] feat(trace): userland trace wrappers and test-runner backtraces Add std/trace.fnk (get_trace/get_module_url/get_loc wrappers over the runtime trace buffer) and std/trace.test.fnk. Wire trace.test.fnk into std/all.test.fnk, and integrate backtraces into the fink-native test runner: equals/fail now render a Traceback from get_trace so a failing assertion shows its source call chain. --- std/all.test.fnk | 1 + std/testing.fnk | 22 ++++++++++++++++++---- std/trace.fnk | 10 ++++++++++ std/trace.test.fnk | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 std/trace.fnk create mode 100644 std/trace.test.fnk diff --git a/std/all.test.fnk b/std/all.test.fnk index 98e3231..b69ec5e 100644 --- a/std/all.test.fnk +++ b/std/all.test.fnk @@ -5,6 +5,7 @@ import './tasks.test.fnk' import './channels.test.fnk' import './effects.test.fnk' import './io.test.fnk' +import './trace.test.fnk' diff --git a/std/testing.fnk b/std/testing.fnk index c4deafd..30f7979 100644 --- a/std/testing.fnk +++ b/std/testing.fnk @@ -1,6 +1,7 @@ {write, stderr} = import 'std/io.fnk' -{suspend, unique, init_ctx} = import 'std/effects.fnk' +{suspend, init_ctx} = import 'std/effects.fnk' +{get_trace, get_module_url, get_loc} = import 'std/trace.fnk' test = fn name, body: @@ -17,7 +18,7 @@ upd_curr_test = fn upd_fn: set_curr_test = fn test_case: - upd_tests fn ctx: + upd_tests fn _: [test_case, {curr: test_case}] @@ -48,7 +49,20 @@ run_test = fn test_case: true -fail = fn failure: +trace_to_str = fn t, s: + match t: + []: s + [[mid, cid], ..rest]: + murl = get_module_url mid + trace_to_str rest, '${s}\n ${murl}:${get_loc mid, cid} (${mid}:${cid})' + + + +fail = fn msg: + trace = get_trace 5 + + failure = trace_to_str trace, '${msg}\nTraceback:' + abort = upd_curr_test fn {abort}: [abort, {result: {failure}}] @@ -81,7 +95,7 @@ test_all = fn: equals = fn actual, expected: match actual == expected: true: true - false: fail '${actual}\n !=\n ${expected}' + false: fail 'act: ${actual}\n !=\n exp: ${expected}' diff --git a/std/trace.fnk b/std/trace.fnk new file mode 100644 index 0000000..4556965 --- /dev/null +++ b/std/trace.fnk @@ -0,0 +1,10 @@ +{get_module_url: rt_get_module_url} = import 'rt/modules.wat' +{get_trace: rt_get_trace, get_loc: rt_get_loc} = import 'rt/trace.wat' + + +get_loc = rt_get_loc + +get_trace = rt_get_trace + + +get_module_url = rt_get_module_url \ No newline at end of file diff --git a/std/trace.test.fnk b/std/trace.test.fnk new file mode 100644 index 0000000..b1728af --- /dev/null +++ b/std/trace.test.fnk @@ -0,0 +1,41 @@ +{test, equals} = import 'std/testing.fnk' + +{get_trace, get_module_url, get_loc} = import 'std/trace.fnk' + + + +trace_to_str = fn t, s: + match t: + []: s + [[mid, cid], ..rest]: + murl = get_module_url mid + trace_to_str rest, '${s}\n ${murl}:${get_loc mid, cid}' + + + +# test 'foooooobar', fn: +# equals +# 41 +# 42 + + +test 'get_trace', fn: + bar = fn depth: + get_trace depth + + [_, ..foo_t] = get_trace 4 + [_, _, ..bar_t] = bar 5 + + equals + trace_to_str foo_t, '' + trace_to_str bar_t, '' + + + + +test 'get_module_url', fn: + [[mod_id, _]] = get_trace 1 + + equals + get_module_url mod_id + './trace.test.fnk'