Jeff Clites <[EMAIL PROTECTED]> wrote:

> Just to clarify: This is the approach wherein each frame gets a fresh
> set of registers, and function call and return (or continuation
> invocation) copy the relevant registers between the register sets?

Yes. Function arguments and return values get copied as well as the
interpreter context. Its basically the same as was in, until around
0.0.3, except that we had 4 register frame pointers and 4 stacks. I
really want to have just one register frame pointer now. It avoids 3/4th
of the stack push/pop overhead and mappes nicely to run loops, including
JIT.

> ... And
> this isn't quite the scheme from the "towards a new call scheme"
> thread, in which we'd be duplicating the interpreter context for each
> frame, right? (And the latter was what you did in "Proof of concept -
> hack_42 (was: the whole and everything)", right?)

Yep. That scheme was a bit too error prone during implementation
attempts and it didn't perform well for recursive functions. Changing
the interpreter pointer, or having an indirection fot the access to the
interpreter, isn't really simple.

> JEff

leo

Reply via email to