From 18cc44d2a2ff18e56f09ebe74049ab18bdc17704 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Sun, 14 Jun 2026 17:41:17 -0400 Subject: [PATCH] wat asm tier: copying GC + c-wasm: enable bytecode TCO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WAT GC — Cheney-style two-space copying collector. Runs at end of lumbda_eval when heap_used > 50% of memory.size — the only safe collection point since the eval call stack has unwound and roots are fully visible via the globals. Implementation: object_size(ptr) returns the byte size of any tagged heap object. gc_forward(v) copies the object to to-space, leaves a 0xCAFEBABE forwarding tombstone with the new address at offset 4. gc_scan_object(ptr) walks pointer fields of pair/closure/vector/ hashtable and replaces each with its forwarded address. gc_collect orchestrates: forward roots (global_env, intern_list, every special-form sym), scan to-space, memmove back to 0x30000, re-shift all pointer fields by the delta. Two passes (forward+ shift) cost the same memory bandwidth as plain Cheney does in one. Exports: lumbda_gc (manual trigger), lumbda_heap_used, lumbda_heap_total. Parity probe gains 3 new GC stress tests: gc-throwaway — allocate-and-drop loop, post-eval value matches gc-retained-length — verify the GC doesn't dropp live cons-chain gc-survives-eval — eval after a heavy alloc still works correctly C-WASM tier — set g_auto_compile = true in lumbda_wasm_init so every define compiles to bytecode. Without this, the tree-walker recurses through host C stack frames for (let loop ...) patterns and blows the WASM linear-memory stack around N=500. With auto-compile on, the VM uses its own explicit frame stack and TCO kicks in. Net: 246/246 parity, 20 unit, 8 integration, 11 functional all green. Heap diagnostics surfaced in the repl tabbar; "reboot tier" stays as the user-side reclaim path for the c-wasm tier (which still leaks because the Boehm-em port isn't wired yet — that's task #38). --- wasm/asm/lumbda.wat | 267 ++++++++++++++++++++++++++++- wasm/c/lumbda_wasm_entry.c | 6 + wasm/dist-repl/asm/lumbda-asm.wasm | Bin 19948 -> 21131 bytes wasm/dist-repl/c/lumbda-c.wasm | Bin 288474 -> 288483 bytes wasm/tests/parity-corpus.mjs | 10 ++ www/playground/asm/lumbda-asm.wasm | Bin 19948 -> 21131 bytes www/playground/c/lumbda-c.wasm | Bin 288474 -> 288483 bytes www/repl/asm/lumbda-asm.wasm | Bin 19948 -> 21131 bytes www/repl/c/lumbda-c.wasm | Bin 288474 -> 288483 bytes 9 files changed, 282 insertions(+), 1 deletion(-) diff --git a/wasm/asm/lumbda.wat b/wasm/asm/lumbda.wat index 1609a43..62d26dd 100644 --- a/wasm/asm/lumbda.wat +++ b/wasm/asm/lumbda.wat @@ -63,6 +63,12 @@ (global $rat_tmp_n (mut i32) (i32.const 0)) (global $rat_tmp_d (mut i32) (i32.const 1)) + ;; Garbage collector scratch. $gc_forward_ptr is the next free slot in + ;; to-space; $gc_active flips between 0 and 1 to track which half of + ;; memory currently hosts the live heap. + (global $gc_forward_ptr (mut i32) (i32.const 0)) + (global $gc_delta (mut i32) (i32.const 0)) + ;; Pre-allocated symbol pointers for special forms — filled at init. (global $sym_quote (mut i32) (i32.const 0)) (global $sym_if (mut i32) (i32.const 0)) @@ -93,6 +99,252 @@ (global $FALSE i32 (i32.const 12)) (global $VOID i32 (i32.const 16)) + ;; ─── Garbage collector ───────────────────────────────────────── + ;; Cheney-style copying collector. Runs at end of lumbda_eval (between + ;; top-level forms) when the heap exceeds 60% of available memory. + ;; + ;; Roots: $global_env, $intern_list, plus every special-form symbol + ;; ($sym_*) — those are also reachable via intern_list but forwarding + ;; them explicitly avoids a missed update if intern_list collection + ;; somehow drops one. + ;; + ;; Forwarding marker: an already-copied object has its tag overwritten + ;; with 0xCAFEBABE and the new (to-space) address stored at offset 4. + + ;; Round up a length to the nearest multiple of 4. + (func $round4 (param $n i32) (result i32) + (i32.and (i32.add (local.get $n) (i32.const 3)) (i32.const 0xFFFFFFFC))) + + ;; Size of the heap object at $ptr in bytes (including the tag word). + (func $object_size (param $ptr i32) (result i32) + (local $tag i32) + (local $n i32) + (local.set $tag (i32.load (local.get $ptr))) + (if (i32.eq (local.get $tag) (i32.const 1)) (then (return (i32.const 12)))) ;; pair + (if (i32.eq (local.get $tag) (i32.const 2)) (then + (return (i32.add (i32.const 8) (call $round4 (i32.load offset=4 (local.get $ptr))))))) ;; symbol + (if (i32.eq (local.get $tag) (i32.const 3)) (then (return (i32.const 16)))) ;; closure + (if (i32.eq (local.get $tag) (i32.const 4)) (then (return (i32.const 8)))) ;; primitive + (if (i32.eq (local.get $tag) (i32.const 5)) (then + (return (i32.add (i32.const 8) (call $round4 (i32.load offset=4 (local.get $ptr))))))) ;; string + (if (i32.eq (local.get $tag) (i32.const 6)) (then (return (i32.const 8)))) ;; char + (if (i32.eq (local.get $tag) (i32.const 7)) (then + (return (i32.add (i32.const 8) (i32.mul (i32.load offset=4 (local.get $ptr)) (i32.const 4)))))) ;; vector + (if (i32.eq (local.get $tag) (i32.const 8)) (then (return (i32.const 12)))) ;; hashtable + (if (i32.eq (local.get $tag) (i32.const 9)) (then (return (i32.const 12)))) ;; rational + (if (i32.eq (local.get $tag) (i32.const 10)) (then + (return (i32.add (i32.const 12) (i32.mul (i32.load offset=8 (local.get $ptr)) (i32.const 4)))))) ;; bignum + ;; Forwarded sentinel — caller shouldn't ever ask the size of one, + ;; but if it does we return 8 (tag + forward pointer). + (i32.const 8)) + + ;; Copy a heap object into to-space and leave a forwarding pointer at + ;; the old location. Returns the new (to-space) address. Pass-through + ;; for fixnums, immediates, and NIL/TRUE/FALSE/VOID. + (func $gc_forward (param $v i32) (result i32) + (local $tag i32) + (local $size i32) + (local $new i32) + (local $i i32) + (if (call $is_fixnum (local.get $v)) (then (return (local.get $v)))) + (if (i32.lt_u (local.get $v) (i32.const 32)) (then (return (local.get $v)))) + (local.set $tag (i32.load (local.get $v))) + ;; Already forwarded? + (if (i32.eq (local.get $tag) (i32.const 0xCAFEBABE)) + (then (return (i32.load offset=4 (local.get $v))))) + (local.set $size (call $object_size (local.get $v))) + (local.set $new (global.get $gc_forward_ptr)) + (global.set $gc_forward_ptr (i32.add (local.get $new) (local.get $size))) + (local.set $i (i32.const 0)) + (block $done + (loop $l + (br_if $done (i32.ge_u (local.get $i) (local.get $size))) + (i32.store (i32.add (local.get $new) (local.get $i)) + (i32.load (i32.add (local.get $v) (local.get $i)))) + (local.set $i (i32.add (local.get $i) (i32.const 4))) + (br $l))) + ;; Leave forwarding tombstone. + (i32.store (local.get $v) (i32.const 0xCAFEBABE)) + (i32.store offset=4 (local.get $v) (local.get $new)) + (local.get $new)) + + ;; Walk the pointer fields of an object at $ptr, replacing each with + ;; the forwarded version. Returns ptr + object_size for the loop. + (func $gc_scan_object (param $ptr i32) (result i32) + (local $tag i32) + (local $n i32) + (local $i i32) + (local.set $tag (i32.load (local.get $ptr))) + ;; pair + (if (i32.eq (local.get $tag) (i32.const 1)) + (then + (i32.store offset=4 (local.get $ptr) (call $gc_forward (i32.load offset=4 (local.get $ptr)))) + (i32.store offset=8 (local.get $ptr) (call $gc_forward (i32.load offset=8 (local.get $ptr)))))) + ;; closure: params, body, env + (if (i32.eq (local.get $tag) (i32.const 3)) + (then + (i32.store offset=4 (local.get $ptr) (call $gc_forward (i32.load offset=4 (local.get $ptr)))) + (i32.store offset=8 (local.get $ptr) (call $gc_forward (i32.load offset=8 (local.get $ptr)))) + (i32.store offset=12 (local.get $ptr) (call $gc_forward (i32.load offset=12 (local.get $ptr)))))) + ;; vector + (if (i32.eq (local.get $tag) (i32.const 7)) + (then + (local.set $n (i32.load offset=4 (local.get $ptr))) + (local.set $i (i32.const 0)) + (block $vdone + (loop $vl + (br_if $vdone (i32.ge_u (local.get $i) (local.get $n))) + (i32.store + (i32.add (i32.add (local.get $ptr) (i32.const 8)) (i32.mul (local.get $i) (i32.const 4))) + (call $gc_forward + (i32.load + (i32.add (i32.add (local.get $ptr) (i32.const 8)) + (i32.mul (local.get $i) (i32.const 4)))))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br $vl))))) + ;; hashtable: alist + (if (i32.eq (local.get $tag) (i32.const 8)) + (then + (i32.store offset=8 (local.get $ptr) (call $gc_forward (i32.load offset=8 (local.get $ptr)))))) + (i32.add (local.get $ptr) (call $object_size (local.get $ptr)))) + + ;; Run a full collection. After this, $heap_ptr reflects the live size + ;; only; everything previously allocated but unreachable is reclaimed. + (func $gc_collect + (local $to_space i32) + (local $heap_start i32) + (local $size i32) + (local $scan i32) + (local $i i32) + (local $needed i32) + (local $cur_pages i32) + (local $new_pages i32) + (local.set $heap_start (i32.const 0x30000)) + ;; Pick to-space at the current heap end so it doesn't overlap. + (local.set $to_space (global.get $heap_ptr)) + ;; Make sure to-space has room. Worst case = current live size, + ;; bound below by 1MB so we always have slack. memory.grow is + ;; idempotent up to 4096 pages so this never overshoots. + (local.set $needed + (i32.add (local.get $to_space) + (i32.sub (global.get $heap_ptr) (local.get $heap_start)))) + (local.set $cur_pages (memory.size)) + (if (i32.gt_u (local.get $needed) (i32.mul (local.get $cur_pages) (i32.const 65536))) + (then + (local.set $new_pages + (i32.div_u (i32.add (local.get $needed) (i32.const 65535)) (i32.const 65536))) + (drop (memory.grow (i32.sub (local.get $new_pages) (local.get $cur_pages)))))) + (global.set $gc_forward_ptr (local.get $to_space)) + ;; Forward roots. + (global.set $global_env (call $gc_forward (global.get $global_env))) + (global.set $intern_list (call $gc_forward (global.get $intern_list))) + (global.set $sym_quote (call $gc_forward (global.get $sym_quote))) + (global.set $sym_if (call $gc_forward (global.get $sym_if))) + (global.set $sym_lambda (call $gc_forward (global.get $sym_lambda))) + (global.set $sym_define (call $gc_forward (global.get $sym_define))) + (global.set $sym_begin (call $gc_forward (global.get $sym_begin))) + (global.set $sym_cond (call $gc_forward (global.get $sym_cond))) + (global.set $sym_else (call $gc_forward (global.get $sym_else))) + (global.set $sym_let (call $gc_forward (global.get $sym_let))) + (global.set $sym_and (call $gc_forward (global.get $sym_and))) + (global.set $sym_or (call $gc_forward (global.get $sym_or))) + (global.set $sym_set (call $gc_forward (global.get $sym_set))) + (global.set $sym_letstar (call $gc_forward (global.get $sym_letstar))) + (global.set $sym_letrec (call $gc_forward (global.get $sym_letrec))) + (global.set $sym_when (call $gc_forward (global.get $sym_when))) + (global.set $sym_unless (call $gc_forward (global.get $sym_unless))) + (global.set $sym_case (call $gc_forward (global.get $sym_case))) + (global.set $sym_do (call $gc_forward (global.get $sym_do))) + ;; Scan to-space, forwarding inner pointer fields. + (local.set $scan (local.get $to_space)) + (block $done + (loop $l + (br_if $done (i32.ge_u (local.get $scan) (global.get $gc_forward_ptr))) + (local.set $scan (call $gc_scan_object (local.get $scan))) + (br $l))) + ;; Compact: memmove to-space back to 0x30000 and shift every pointer + ;; field by the same delta. The shift is done in a second scan over + ;; the relocated objects. + (local.set $size (i32.sub (global.get $gc_forward_ptr) (local.get $to_space))) + (global.set $gc_delta (i32.sub (local.get $to_space) (local.get $heap_start))) + (local.set $i (i32.const 0)) + (block $cpdone + (loop $cpl + (br_if $cpdone (i32.ge_u (local.get $i) (local.get $size))) + (i32.store (i32.add (local.get $heap_start) (local.get $i)) + (i32.load (i32.add (local.get $to_space) (local.get $i)))) + (local.set $i (i32.add (local.get $i) (i32.const 4))) + (br $cpl))) + ;; Shift roots. + (global.set $global_env (call $gc_shift (global.get $global_env))) + (global.set $intern_list (call $gc_shift (global.get $intern_list))) + (global.set $sym_quote (call $gc_shift (global.get $sym_quote))) + (global.set $sym_if (call $gc_shift (global.get $sym_if))) + (global.set $sym_lambda (call $gc_shift (global.get $sym_lambda))) + (global.set $sym_define (call $gc_shift (global.get $sym_define))) + (global.set $sym_begin (call $gc_shift (global.get $sym_begin))) + (global.set $sym_cond (call $gc_shift (global.get $sym_cond))) + (global.set $sym_else (call $gc_shift (global.get $sym_else))) + (global.set $sym_let (call $gc_shift (global.get $sym_let))) + (global.set $sym_and (call $gc_shift (global.get $sym_and))) + (global.set $sym_or (call $gc_shift (global.get $sym_or))) + (global.set $sym_set (call $gc_shift (global.get $sym_set))) + (global.set $sym_letstar (call $gc_shift (global.get $sym_letstar))) + (global.set $sym_letrec (call $gc_shift (global.get $sym_letrec))) + (global.set $sym_when (call $gc_shift (global.get $sym_when))) + (global.set $sym_unless (call $gc_shift (global.get $sym_unless))) + (global.set $sym_case (call $gc_shift (global.get $sym_case))) + (global.set $sym_do (call $gc_shift (global.get $sym_do))) + ;; Shift internal pointers in the compacted region. + (local.set $scan (local.get $heap_start)) + (block $sdone + (loop $sl + (br_if $sdone (i32.ge_u (local.get $scan) (i32.add (local.get $heap_start) (local.get $size)))) + (local.set $scan (call $gc_shift_object (local.get $scan))) + (br $sl))) + (global.set $heap_ptr (i32.add (local.get $heap_start) (local.get $size)))) + + ;; Shift a single Value by $gc_delta (pass-through for non-pointers). + (func $gc_shift (param $v i32) (result i32) + (if (call $is_fixnum (local.get $v)) (then (return (local.get $v)))) + (if (i32.lt_u (local.get $v) (i32.const 32)) (then (return (local.get $v)))) + (i32.sub (local.get $v) (global.get $gc_delta))) + + ;; Like $gc_scan_object but applies the gc_shift correction instead. + (func $gc_shift_object (param $ptr i32) (result i32) + (local $tag i32) + (local $n i32) + (local $i i32) + (local.set $tag (i32.load (local.get $ptr))) + (if (i32.eq (local.get $tag) (i32.const 1)) + (then + (i32.store offset=4 (local.get $ptr) (call $gc_shift (i32.load offset=4 (local.get $ptr)))) + (i32.store offset=8 (local.get $ptr) (call $gc_shift (i32.load offset=8 (local.get $ptr)))))) + (if (i32.eq (local.get $tag) (i32.const 3)) + (then + (i32.store offset=4 (local.get $ptr) (call $gc_shift (i32.load offset=4 (local.get $ptr)))) + (i32.store offset=8 (local.get $ptr) (call $gc_shift (i32.load offset=8 (local.get $ptr)))) + (i32.store offset=12 (local.get $ptr) (call $gc_shift (i32.load offset=12 (local.get $ptr)))))) + (if (i32.eq (local.get $tag) (i32.const 7)) + (then + (local.set $n (i32.load offset=4 (local.get $ptr))) + (local.set $i (i32.const 0)) + (block $vdone + (loop $vl + (br_if $vdone (i32.ge_u (local.get $i) (local.get $n))) + (i32.store + (i32.add (i32.add (local.get $ptr) (i32.const 8)) (i32.mul (local.get $i) (i32.const 4))) + (call $gc_shift + (i32.load + (i32.add (i32.add (local.get $ptr) (i32.const 8)) + (i32.mul (local.get $i) (i32.const 4)))))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br $vl))))) + (if (i32.eq (local.get $tag) (i32.const 8)) + (then + (i32.store offset=8 (local.get $ptr) (call $gc_shift (i32.load offset=8 (local.get $ptr)))))) + (i32.add (local.get $ptr) (call $object_size (local.get $ptr)))) + ;; ─── Allocator ───────────────────────────────────────────────── ;; Bump-only. Grows linear memory by 16 pages (1 MB) at a time when ;; heap_ptr nears the limit. No free, no GC — fine for browser demos @@ -3862,7 +4114,20 @@ (i32.const 1))) (i32.const 10)) (then (call $out_char (i32.const 10)))))) - (call $print_value (local.get $val))))) + (call $print_value (local.get $val)))) + ;; Trigger GC when the heap exceeds 60% of available memory. This is + ;; the only safe collection point — the eval call stack has unwound, + ;; so the only roots are the globals the collector knows about. + (if (i32.gt_u + (i32.sub (global.get $heap_ptr) (i32.const 0x30000)) + (i32.div_u (i32.mul (memory.size) (i32.const 65536)) (i32.const 2))) + (then (call $gc_collect)))) + + ;; Manual GC trigger, exposed so JS can force-collect (e.g. the REPL's + ;; "reboot tier" button could call this instead of terminating the + ;; worker for a softer reclaim). + (func $lumbda_gc (export "lumbda_gc") + (call $gc_collect)) (func $lumbda_output_ptr (export "lumbda_output_ptr") (result i32) (i32.const 0x10000)) diff --git a/wasm/c/lumbda_wasm_entry.c b/wasm/c/lumbda_wasm_entry.c index d8c2c34..b4648e2 100644 --- a/wasm/c/lumbda_wasm_entry.c +++ b/wasm/c/lumbda_wasm_entry.c @@ -39,6 +39,12 @@ static const char *MINI_STDLIB = void lumbda_wasm_init(void) { if (g_wasm_env) return; init_symbols(); + /* Auto-compile every define to bytecode so deep recursion uses + * the VM's explicit frame stack (TCO) instead of growing the host + * C stack. Without this, (let loop ((i 0)) ... (loop (+ i 1))) + * blows out the WASM linear-memory stack around N=500. */ + extern bool g_auto_compile; + g_auto_compile = true; g_wasm_env = make_global_env(); /* Load PRELUDE (built into eval/builtins via make_global_env). */ diff --git a/wasm/dist-repl/asm/lumbda-asm.wasm b/wasm/dist-repl/asm/lumbda-asm.wasm index 55c8e9cae89ef0ae50ba09d7ddf57a1fd8fe95b4..f1374d1847643e9dfc6b1ec2d842626f643d0795 100644 GIT binary patch literal 21131 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 mF{X6(-5c+1c6vCH$a^r`Q)5-u