Interesting paper on Supporting Binary Compatibility with Static Compilation

Bryce McKinlay bryce@waitaki.otago.ac.nz
Sun Aug 18 20:50:00 GMT 2002


Jeff Sturm wrote:
>>Also, one of the great advantages of ahead-of-time compilation is fast
>>startup; we don't want to lose too much of that either.
>>>>>>It should improve, actually. Same for memory footprint. Right
>now gcj does quite poorly on both, especially for DSOs.
>>For example: -findirect-dispatch defers vtable construction, eliminating a
>good number of symbolic relocations per class. But unfortunately the
>offset table adds even more absolute relocations. So the improvement is
>marginal, if any.
>>That isn't hard to fix for indirect dispatch, because the vtable is part
>of the ABI, whereas the offset table isn't. Just choose another otable
>layout that doesn't require linking pointers.
>
Its actually sort of the opposite for indirect dispatch. The otable 
becomes part of the ABI because the otable compiled into each 
application must match what libgcj is expecting when it loads/links a 
class. Because vtables are constructed at run time, the layout of 
vtables could be changed if all object files in the application were 
compiled with --indirect-dispatch.
I'd be interested in any suggestions for a better otable design that 
doesn't require pointers, without sacrificing too much space. The 
current design is fairly compact because the class/method/signature 
strings are uniqued/merged automatically with any other instances in the 
same .so, including the reflection data. Its also fairly simple and easy 
to work with!
regards
Bryce.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /