This is the mail archive of the
mailing list for the Java project.
current gcjx status
- From: Tom Tromey <tromey at redhat dot com>
- To: GCJ Hackers <java at gcc dot gnu dot org>
- Date: 26 Mar 2005 20:58:29 -0700
- Subject: current gcjx status
- Reply-to: tromey at redhat dot com
You've probably seen the gcjx patch floods I send periodically. I've
been doing most gcjx hacking on my laptop, keeping a local monotone
repository for commits, and then feeding them back to the public tree
when I find some time. This is more efficient for me as long as I'm
the only person really doing work on this branch.
Anyway, I thought I'd send a note about gcjx status, so you won't have
to read all those patches to see what is going on.
gcjx can parse all 1.4 and most 1.5 language features. There are
still some bugs in the 1.5 support, and generic methods remain
basically unimplemented. I did start work on the type inference code,
but that is just a skeleton and it isn't checked in.
There are still a few bugs in semantic analysis, for instance handling
of outer 'this' and 'super' probably needs to be redone. Still, gcjx
does pretty well on jacks -- much better than gcj. I think I counted
70 gcj front end PRs that are fixed in gcjx.
Bytecode generation basically works, though I think there is a bug or
two remaining. I've compiled Classpath to bytecode many times. gcjx
is a bit slow compared to other compilers, at the moment.
As of today, I can compile most of libjava using the tree back end (in
fact, gcjx caught a couple libjava errors... I'll send a patch).
There are a few weird compiler errors (relating to how class files are
read) and a couple remaining crashes. The code to lower bytecode to
trees is probably not complete (and is certainly buggy); the BC ABI
code also needs to be finished. The 1.5 support in the tree back end
isn't completed yet, either.
On the runtime side, until generic methods work in the compiler, there
doesn't seem to be much point in bringing over the classpath generics
branch, since we couldn't compile the result.
Once the verifiers are fully merged (the first work on this went in
today), I think we should be able to run 1.5 bytecode just fine (aside
from missing classes). The only addition, the new "ldc <class>"
operation, should already work given the way the interpreter and
linker are written -- the only issue is getting the verifier to pass
To fully support 1.5, we'll need to redesign Class a little to support
the new metadata. We've been needing this for a while, though... we
don't even fully support the required 1.2 metadata at the moment
(there is a PR for this).
I still hope to get this merged to the trunk sometime this year.
That may be optimistic.