Bruno Haible | 22 Jan 23:46 2008

Re: JIT with lightning

Reini Urban wrote:
> | So I'm also looking into JIT'ing and compiling clisp bytecode with the
> | GNU lightning library.
> |    http://en.wikipedia.org/wiki/GNU_lightning
> |   (i386, sparc and ppc only)

I would also look into the libjit used by the GNU pnet project.
  http://ftp.gnu.org/gnu/dotgnu/pnet/
  http://cvs.savannah.gnu.org/viewvc/libjit/?root=dotgnu-pnet

The main difference between lightning and libjit appears to be that libjit
is higher level:
  - lightning is some kind of portable in-memory assembler; it leaves you
    full control over registers.
  - libjit also contains register allocation and a connection to the type
    system.

(Apologies if you already considered it.)

> | Does the CLISP VM uses only stack vars, no virtual registers? I've seen
> | none.

http://clisp.cons.org/impnotes/vm.html answers this: The main virtual
registers are mv_count and value1. If you look into interpret_bytecode_,
you will see: There is also the "private_SP" area, used for creating
particular kinds of stack frames. And the closure being currently executed
also needs to be stored somewhere; IIRC this is used by the mechanism
that throws and catches conditions, and also by generic functions dispatch
code.

Bruno

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

Gmane