Thanks for the links. Regardless of whether trace-based compilation is
right for Avian, it's something I definitely want to learn more about.
Anyway, based on the papers Mike references, it certainly looks like this
technique is suitable for Java. Here's a quote from one of them that
stands out to me:
"We have built a prototype just-in-time compiler based on our new
compilation method. In this paper, we present benchmarks showing that our
compiler generates code that is almost a s good as that generated by Sun's
Java HotSpot compiler. The latter is a CFG based compiler that is several
orders of magnitude larger and slower and is a mature product developed by
a large team of programmers over several years. Our compiler is a research
prototype developed by a single graduate student in under a year."
(http://www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-06-16.pdf)
I haven't read the rest of the paper yet to see how they back that up, but
I'm eager to do so.
As for Avian, I've already made enough progress on a new compiler that I
intend to follow though on it. My main goal at this point is to have a
compiler that supports various architectures equally well, and I think the
work I'm doing is the quickest way to achieve that. Later, when we've
proven we can generate decent code on both x86 and PowerPC, we can use
that as a baseline for future improvements. Those two architectures are
different enough that supporting both properly will help us avoid making
design decisions that might make future ports difficult.