[Mono-list] gcc front-end and portability

Miguel de Icaza miguel@ximian.com
10 Jul 2001 20:03:05 -0400


>   I just want to emphasize that it's really, really, really, really hard
> to build a good, cross-platform optimizing JIT from scratch. In the 5-6
> years that Java has been around, no open source or academic project has
> managed to do it (Sable, OpenJIT, and LaTTe are all machine-specific and
> they typically lose to the Sun, MS, and IBM JVMs by a factor of 2 in
> benchmarks). I really don't se a reason to believe that Mono-CLI will do
> better unless it starts from a strong foundation.  But, hey, maybe I'm
> just too much of a cynic.

I have been doing some intense learning on the subject, and the
differentce really is that to write a JIT for Java you have to either
do some really good work on the bytecode analysis to prove that it
will not do anything strange (which most small projects wont be able
to do, hence them being slow) or you just to `macro expansion' of
opcodes.

The CIL is different from Java Byte Codes in that regard: there are
various assumptions that can be made on the input stream that are just
not possible to do with java (the state of the stack at invocation and
return points, and the type safety of the stack) that come into play.

Please read the links on the `Runtime' web page, I have updated them
with some really interesting links from Paolo (great article on the
guy who did LCC)