BC ABI (was "Re: [fedora-java] Re: Java OpenGL on FC4")

Andrew Haley aph at redhat.com
Thu Aug 18 08:54:23 UTC 2005


John M. Gabriele writes:
 > 
 > --- Bryce McKinlay <mckinlay at redhat.com> wrote:
 > 
 > Thanks for the reply Bryce. I used much of it to update the
 > beginning of:
 > http://gcc.gnu.org/wiki/How%20to%20BC%20compile%20with%20GCJ
 > 
 > It sounds like, to be able to mix interpreted and natively
 > compiled code at runtime, you need to have compiled your .jars
 > with the -findirect-dispatch option, right?
 > 
 > If so, why isn't -findirect-dispatch simply the default
 > compilation mode?

Its a bit slower, it's newer, and it doesn't work when compiling from
Java source.  

I'm not sure when exactly -findirect-dispatch should become the
default, but not until compiling from source works.  That's not
particularly difficult to do, but it really requires some
rearrangement of the code in the compiler and we've been concentrating
on maximizing compatibility.  

Longer term, I'd like to recover the performance losses with
-findirect-dispatch, and then we can make that the default with a
clear conscience.

 > > On the other hand, if you compile an application using the old
 > > style "C++ ABI", it will break as soon as any changes to the
 > > public APIs of dependent class libraries are made.
 > 
 > Right -- since the Java runtime should be smart enough to use
 > the lib as long as the signatures of the methods _it wants to
 > use_ match up, correct?
 > 
 > What does it mean to compile code with the "old style 'C++ ABI'"?
 > (Is that referred to as the "standard ABI"?) Does that just simply
 > mean to *not* use the -findirect-dispatch option?

It does, yes.

Andrew.




More information about the fedora-devel-java-list mailing list