[gambit-list] PICOBIT and continuation-next?
Marc Feeley
feeley at iro.umontreal.ca
Sun Mar 4 11:02:13 EST 2012
On 2012-02-21, at 7:17 AM, Andrew Lentvorski wrote:
> So, I was looking at the PICOBIT papers. I noted that the
> representation of continuations has a "parent" field. Presumably this
> is to allow something like "continuation-next" from the Better API for
> First Class Continuations paper.
>
> However, I don't see any corresponding virtual machine instructions to
> manipulate continuations.
Continuations are handled implicitly by the picobit VM's CALL and CALL_TOPLEVEL and RETURN instructions. In picobit-vm.c look at the C function "save_cont" to see how continuations are created, and the very end of the C function "interpreter" to see how the RETURN instruction is implemented.
If "cont" is a reference to a continuation, then "ram_get_field2 (cont)" will extract the parent continuation. You could easily add a "continuation-next" primitive to the VM and compiler implemented as "ram_get_field2 (cont)". Also take a look at the "show" function in picobit-vm.c, which can dump a textual representation of various objects including continuations.
> At that point, I presumed that some form of CPS conversion was going on
> that was wiping out continuations, so I looked at the 90 Minute Scheme
> to C compiler stuff. Unfortunately, I don't see how to get
> "continuation-next" in the context of purely CPS conversion.
>
> Anybody have suggestions as to what I am missing and where to look?
>
> Obviously, I can look through the full PICOBIT source, but doing so
> without some landmarks is suboptimal.
Picobit does not use CPS conversion.
Marc
More information about the Gambit-list
mailing list