CPS
The cool thing about using a CPS for function calls is that it makes taking a continuation much, much easier. When taking a continuation, you only have to take a snapshot of the current function/sub’s lexicals and control stack—you don’t have to care at all about the function’s caller, or the whole stack or anything.