Mon Dec 5 16:49:00 GMT 2005
Mark asked me to send a note to the list with an overview of current
* Front End
We can parse and analyze 1.4 code just fine. There are some bugs
(run against jacks to see) but so far they don't seem to be hit much
by real code.
There is one known parser bug for 1.5 -- with gcjx you can't
intermix annotations and other modifiers. (This is just a mistake
on my part.)
A lot of semantic analysis for 1.5 works. With a few ugly hacks I
can build the Classpath generics branch. Many error checks still
need to be written. The simpler 1.5 features work ok, the problems
are mostly with generics.
We could benefit greatly from comprehensive jacks tests for all the
new features. Some small number of tests do exist. At some point
I will make a systematic effort to write more.
* Bytecode generator
Aside from being slow gcjx is suitable for use as a 1.4 bytecode
compiler today. I don't know of any bugs in the 1.4 part of
bytecode generation. I've built Classpath and Mauve with it and run
these with JamVM. I've also built Classpath with the
verify-after-bytecode-creation flag, with good results. (So, it
could benefit from heavier testing.)
Much of the code needed for 1.5-style bytecode generation has been
written. We still don't generate bridge methods, but I have been
looking at that recently. The code to write enums, annotations,
etc, exists but is largely untested.
* Tree back end.
We can compile simple programs to object code and run them. My test
cases have been the little programs in testsuite/libjava.lang. I've
done this by building against a known-good libgcj.so, I haven't yet
gotten a purely-gcjx-built libgcj to work. Compiling from .class
does not work. I haven't done any work on 1.5 stuff here. I forget
whether I've tested BC ABI compilation or not.
* Merge requirements.
To merge I think gcjx needs to do what the current gcj does at least
as well. Most of the needed work is in the tree back end, but also
the parsing performance problem must be addressed, and the
replacement for jcf-dump must be merged in. After a couple more
generics-related tweaks I plan to focus on the tree back end.
More information about the Java