From: Bruno H. <br...@cl...> - 2008-01-22 22:46:58
|
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 |