need to focus on java performance?
Bryce McKinlay
mckinlay@redhat.com
Wed May 24 21:29:00 GMT 2006
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. Some threads might still see and call
the trampolines even after the class is initialized, but this is fine,
because _Jv_InitClass will lock. The trampolines themselves could be GC
allocated, so freeing them wouldn't be an issue.
Bryce
More information about the Java
mailing list