[BC ABI] gcj-abi-2-dev-branch created

Bryce McKinlay mckinlay@redhat.com
Fri Apr 16 16:50:00 GMT 2004


Vladimir Levin wrote:

> I am not familiar with this thread. Will the new ABI and related work 
> make it harder to use GCJ for embedded development? In particular, on 
> our board, we cannot put the entire libgcj.so on the flash. So far, 
> using gcc-3.2.3 the static executable size is about 2 MB (for hello 
> world)... But a base size larger than that becomes unacceptable...


Currently, the idea is that we'll maintain two ABIs - the "new", aka 
BC-ABI for dynamic shared library environments, and the existing ABI for 
static binaries. Aside from additional dispatch indirections and such, 
the main difference technically will be that under the BC-ABI, class 
descriptor structures, vtables, and the like are contructed at runtime 
from  pointer-free metadata, while under the old ABI these are 
pre-generated at compile time.

The old ABI will continue be more efficient in some respects for a 
statically-linked environment. However, there are some reasons why you 
may want to consider the BC-ABI even for static linking. eg: because it 
weakens the linkage between classes, it should be easier to remove 
unused classes and/or methods (ie those which are referenced somewhere 
but never actually called) from your image.

Regards

Bryce.



More information about the Java mailing list