harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Tromey <tro...@redhat.com>
Subject Re: [arch] VM Candidate : JikesRVM http://jikesrvm.sourceforge.net/ (and some bla bla about compilers and stuff)
Date Fri, 20 May 2005 23:19:48 GMT
>>>>> "acoliver" == acoliver  <acoliver@apache.org> writes:

acoliver> RTL is Register Transfer Language I believe.

Yes.  But front ends don't generate RTL.

acoliver> Writing a GCC front end is actually rather non-trivial I'm
acoliver> afraid. While it does do a traditional AST tree more or less, its
acoliver> implemented with some rather complicated and undocumented macros (and
acoliver> from what I remember a few layers of them).

This is how it worked a few years ago.  Nowadays, with the new
infrastructure in GCC 4.0, writing a front end is like an order of
magnitude simpler.  It still isn't easy, but there is a lot more
documentation and the overall picture makes a lot more sense.

acoliver> On the other hand, I'm not convinced that GCC is
acoliver> an acceptable compiler for a JIT anyhow.  Allow me to demonstrate.
acoliver> Find a large C project (say 1000 sources).  Build the project on a
acoliver> fairly fast machine.

Have you tried gcj?

At startup you don't compile everything.  You compile it beforehand.
Startup time of the generated programs is one of gcj's strengths.

You can use gcj-as-jit right now, today, if you want, though it has
some scalability problems.  It isn't as slow as you might think if
you're used to the C compiler; compiling the typical .class file in
isolation is a fairly cheap operation.

acoliver> Its possible
acoliver> that you could rip pieces of GCC out and construct a more traditional
acoliver> JIT, but its really not what we want.

Probably more profitable to simply integrate a JIT into libgcj.

Tom

Mime
View raw message