Fri Mar 2 16:33:47 GMT 2007
i'm trying to write an interpreter with these properties:
- proper tail calls (caller saves continuation)
- continuations can be invoked by 'RUN'
- direct threading.
in direct threading, threaded code is a list of pointers that points
to executable code, and a continuation is a pointer that points to a
list of such pointers. so yes, these constraints can be satisfied:
- composite = array of primitive
- continuation = composite
- a composite code can be wrapped in a primitive using a simple header
TBLPTR -> composite code
PC -> primitive code
see direct.f -- summary: the most important change is threaded code +
proper tail calls by moving the continuation saving to the caller.