Figure 4 — LAMBDA vs. CALL Execution Paths

Side-by-side comparison of the two abstraction-entry mechanisms. LAMBDA is a lightweight, in-scope fast path (~3 cycles) that saves only the PC to machine status. CALL is the full domain-crossing mechanism (10+ cycles) with stack frame push, c-list switch, mLoad revalidation, and automatic B-bit clearing.

LAMBDA — Fast Path (~3 cycles) LAMBDA CRd   (X permission required on CRd) 1 X Permission Verify via mLoad Single permission check — no c-list traversal ~1 cyc 2 Save PC+NIA to Machine Status lambdaActive=true, lambdaReturnNIA=PC+4 ~1 cyc 3 Branch to Target Entry Point PC ← entry.location (same scope, same CRs, same DRs) ~1 cyc ... execute target code in same scope ... RETURN (LAMBDA fast path) lambdaActive? → PC = lambdaReturnNIA, clear flag No stack pop. No revalidation. ~1 cycle. What LAMBDA does NOT do: ✗ No call stack push/pop ✗ No c-list switch ✗ No B-bit clearing ✗ No domain crossing ✗ No CR/DR save/restore Total: ~3 cycles (entry + return) CALL — Full Path (10+ cycles) CALL CRd   (E permission required on CRd) 1 E Permission Verify via mLoad Full 7-stage mLoad pipeline on target GT ~2 cyc 2 Push Call Stack Frame Save PC, CRs, DRs, flags, LAMBDA state ~2 cyc 3 C-List Switch (Namespace Crossing) CR15 ← target's c-list root GT ~1 cyc 4 B-bit Auto-Clear on All Preserved CRs CR0-CR7: B ← 0 ("use it, don't keep it") ~1 cyc 5 Clear LAMBDA State lambdaActive ← false (saved in stack frame) ~0 cyc 6 Domain Crossing & PC Branch PC ← entry.location, enter new abstraction scope ~1 cyc ... execute in callee's scope ... RETURN (Full Stack Path) 7 Pop Call Stack Frame Restore PC, CRs, DRs, flags, LAMBDA state 8 mLoad Revalidation on Restored CRs Version, seal, bounds re-checked on CR6, CR14 9 C-List Restore & PC Resume CR15 ← caller's c-list, PC ← return address ~3+ cyc Total: 10+ cycles (entry + return) Comparison Summary Property LAMBDA CALL Permission Required X (Execute) E (Enter) Cycles (entry + return) ~3 10+ Call Stack Not used Push / Pop C-List / Namespace Same scope Switch to callee's B-bit Behavior Unchanged Auto-cleared to 0 Domain Crossing No Yes RETURN Revalidation None (PC restore) Full mLoad on CRs Nestable No (1 level only) Yes (stack depth) LAMBDA is ideal for macro-like code reuse and hot-path abstraction. CALL is required for domain isolation and capability delegation.
LAMBDA fast path (~3 cycles)
CALL full path (10+ cycles)
B-bit auto-clear (security)
Design rationale