This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: need to focus on java performance?


Andrew Haley wrote:
Bryce McKinlay writes:
> Andrew Haley wrote:
> > Once the class was initialized, you'd need to rewrite the
> > instructions in the trampolines to point to the static methods
> > that don't do class initialization. While all this was going on,
> > there still would be threads jumping to these trampolines.
> > However, these trampolines are not themseolves protected by
> > locks, and there's no guarantee that you can rewrite the
> > instructions atomically. So, you'd run the risk of a partially
> > rewritten instruction being executed. If you can rewrite the
> > trampolines atomically then I think you might be OK.
> > Why rewrite the trampolines? Once a class is initialized, its
> atable entries are updated to point to the real function. Swapping
> function pointers in the atable is atomic.


Ah, OK, you're fixing up the caller's pointers rather than anything in
the target. I can see that would work, but there are potentially many
atable entries in many classes pointing to a static method. Also,
you'd need a fast way to find the caller.
Only patch the caller when it traverses the atable entry. The atable entries that are never traversed don't matter, so you don't have to patch them.

The calling method's address is in the standard location (as specified by the ABI), we know how to find the class given this information. It would be nice if it were fast, but even if it isn't I think there would still be better performance, as you only patch each atable entry once.

David Daney


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]