Tue May 3 10:13:10 EDT 2011

Towards abstract code

I've got all code ops abstracted:

/* Read a number from the code stream. */
#define NEXT_NUM  NPOP(c) 

/* Read a structured data item from the stream: try to avoid this as
   it hinders abstraction.  Replace with other typed reads.  */
#define NEXT_ADDR   POP(c)         // read abstract code address
#define NEXT_DATA   POP(c)         // read constant data
#define NEXT_VOID   (POP(c)->atom) // read full machine address

The next step is to make representation of code addresses abstract,
i.e. in the continuation stack.

Another point of attention is whether the code itself will be GC-able.
For embedded use (when `eval' is not defined on the target) this is
probably not the case.  Turning that upside down: of course it is not,
otherwise we would _have to_ use CELL representation!