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)