need to focus on java performance?

Bryce McKinlay mckinlay@redhat.com
Wed May 24 02:11:00 GMT 2006


Andrew Haley wrote:
> That would be nice.  It's fairly easy to patch call sites (that's what
> ld.so does) to remove all the Jv_initClass calls but hard to do it
> portable because of problems with locking.
>   
ld.so doesn't patch call sites themselves, just the PLT entries.

It should to be possible for libgcj's linker to make atable entries 
initially point to trampolines. The trampoline would call _Jv_InitClass, 
and _Jv_InitClass would update all the atable entries for that class, 
substituting the trampolines for real functions. Because class 
initialization acquires the class lock, there shouldn't be any locking 
issues except perhaps on arch's with very weak memory ordering. It 
wouldn't be harmful if another thread invoked a trampoline, even if the 
class were already initialized.

This would eliminate the vast majority of InitClass calls, at the cost 
of some additional startup overhead and memory consumption - might be 
worth some experimentation here.

Bryce



More information about the Java mailing list