01f61f13f42c153d67680dfcb84a2724e3f52d61
Ad-hoc verification (factorial via recursive CALL_LINK) surfaced a real defect: each exec_cell had its own private stack, but the design (and the doc contract) is that callees run on the SHARED data stack so a caller passes args by leaving them on the stack and reads the callee result there after RET. With per-frame stacks, a callee that popped its argument faulted with PcOutOfRange. - exec_cell now takes &mut Vec<u8> (the one shared stack) instead of owning a fresh one; run() owns it and threads it through recursion. - Added regression test shared_stack_passes_args_across_cube_edges (caller leaves 21, callee doubles it via Store/Load, caller sees 42) so the convention is locked by ./check, not just ad-hoc. The prior commit's unit tests didn't exercise cross-frame stack args, which is why the bug slipped through; suite is now 50 tests green (incl. 14 cubecode).
Description
No description provided
536 KiB
Languages
Rust
94.5%
Python
2.8%
Shell
2.7%