2009/2/15 Arnaud Bergeron abergeron@gmail.com:
2009/2/15 Marc Feeley feeley@iro.umontreal.ca:
On 15-Feb-09, at 12:47 AM, lowly coder wrote:
this is kinda off topic, -- but people here seem really smart, so I'll risk the occasional flames for good criticism + insight
i think the llvm/jvm projects are really cool, since so much work is put into jitting; and for one reason or another, I like llvm more than jvm
i'm curious about the possiblity of a high performance scheme (and perhaps gambit in particular) running on llvm; where the 'initial implementation' may not be all that fast ... but letting llvm jit it away
how does this sound? feasible for a scheme (but not gambit)? down the pipes planned for gambit? or totally stupid/crazy?
the 'main' advantage of this approach is that I _assume_ that the llvm guys are pretty good at hacking up interpreters / jit's ... so why not benefit from their constant progress :-D
I had a group of students implement a LLVM backend for Gambit in one of the courses I teach (compilers). I'm CCing them. Perhaps they can give you more information and add their code to the dumping grounds. I also had a student write a Scheme to CLR compiler which can bootstrap itself.
Marc
We did a partial back-end for Gambit using LLVM and were just a little bit faster for the benchmarks I tried. Although, in all cases the speed difference could well be credited to some part not being implemented properly and thus requiring less work.
I forgot to mention, but what we did was using LLVM 2.3. 2.5 is about to be released now and has a lot of improvements over 2.3.
I have some plans to take the implementation in another direction, to ease the expression of the various gambit back-end statements. I have not done any work on this yet. As for the code we did, it is incomplete, but I have no objection to it being posted on the dumping grounds, but I have no place to host it. I can send you the code if you are interested.
Also, the back-end we did was only for static compiling. Although once I get back in it and maybe get it to work solidly, it could be used for gsi too. Don't hold your breath for now though.
Arnaud