change of libgcj soname for gcc-3.2?

Adam Megacz
Mon Jul 29 18:33:00 GMT 2002

Bryce McKinlay <> writes:
> simple evolution of classes  breaks binary compatibility with the 
> current ABI.

This was a source of much frustration for me early on.

I take it that at compile time, virtual method invocations generate a
CALL(symbol_for_vtable + N * sizeof(void*)) where N is the numerical
index of the member function being invoked. Of course, small changes
to .java files can result in N changing, and Java dependency analysis
is pretty difficult.

Have there been any suggestions on how to deal with stuff like this?
Does the indirect dispatch stuff solve this problem? If so, I'll start
using it; the small decrease in performance would be well worth the
headaches I'd save.

Actually, I wonder if it's feasible to delay writing CALL addresses
until class initialization time. Are code pages write-protected in
memory, or could ClassLoader::loadClass() do something similar to what
ldd does (ie runtime fixups)?

  - a

Sick of HTML user interfaces?

Some people don't care if the pie is smaller, so long as they still
get all of it.

More information about the Java mailing list