Last night, just in time for FOSDEM, I got working assembly code
out of gcjx for the first time. It was a do-nothing program, of
course, but nevertheless this is a big milestone. In particular this
means that a fair amount of tree lowering works; the driver works;
various lang hooks and interconnects with GCC work; and gcjx can write
out Class
objects, vtables, and other forms of metadata.
So, what remains on this front is a long debugging war. Along the
way I’ll need to fix up some details; e.g. the current class format
needs an upgrade to understand the new forms of metadata.
glibc wish
In Java it is possible to use class loaders to define multiple
classes from a given representation of a class — you can just pass
the same bytes around; each class loader essentially has its own
universe of types.
This doesn’t translate too well to gcj at the moment, since
dlopen()
doesn’t do what we want when you try to open a
library more than once.
What would be cool (and I’ve heard that Solaris has this) is to be
able to create new “dlopen contexts” that would allow us to load a
given library once per context. Then in libgcj we could simply
associate a context with each class loader, and avoid the nasty hack
we have to do right now.
Be the first to leave a comment. Don’t be shy.