Ok, here's my next attempt:  http://cr.openjdk.java.net/~kamg/6766644/webrev.02

This enqueues the compiled-method-unloaded events so that they the posting of load/unload will be in order. Other changes include locking the nmethod until after the compiled-method-load event is posted, and an alternate mechanism for enqueuing the compiled-method- unload events that are generated at safepoint.

--
- Keith

On Jan 26, 2011, at 5:07 PM, Daniel D. Daugherty wrote:

On 1/26/2011 2:52 PM, Tom Rodriguez wrote:

On Jan 26, 2011, at 1:39 PM, Daniel D. Daugherty wrote:

It also looks like there must be order between the load and unload events:

    CompiledMethodLoad for foo
    CompiledMethodUnload for foo
    CompiledMethodLoad for foo (again)


Do you mean we can't have multiple versions of compiled code for the same method? I don't think that's true or should be required. nmethod freeing is very lazy and there's no guarantee that we will have completed unloading of an nmethod before we've created a new variation of it. It would also be completely ok for a JVM to have multiple versions of the compiled code for a method. Obviously the load and unload for a particular nmethod must be properly ordered.


That last sentence is what I meant; load and unload for a specific
compiled version of foo (nmethod) must be in order.

Dan




which is going to mean coordination between the mechanisms for posting
of both CompiledMethodLoad and CompiledMethodUnload events.


Reply via email to