Direct Implementation of Shift and Reset
in the MinCaml Compiler
Although delimited control operators are becoming one of the useful
tools to manipulate flow of programs, their direct and compiled
implementation in a low-level language has not been proposed so far.
The only direct and low-level implementations available are Gasbichler
and Sperber's implementation in the Scheme 48 virtual machine and
Kiselyov's implementation in the OCaml bytecode. Even though these
implementations do provide an insight into how stack frames are
composed, they are not directly portable to compiled implementation at
the assembly language. This paper presents a direct implementation of
delimited control operators shift and reset in the MinCaml compiler.
It shows all the details of how composable continuations can be
implemented in the PowerPC microprocessor using the stack strategy.
We also show an implementation that copies the stack frames lazily.
To our knowledge, this is the first implementation of shift/reset in
the assembly language. It makes clear at the assembly language level
what we have informally described so far, such as "copying and
composing stack frames" and "inserting a reset mark when captured
continuations are called". We demonstrate various benchmarks to show
the performance of the direct implementation and discuss its pros and
cons.