RFR(10)(XS): JDK-8171365: nsk/jvmti/scenarios/events/EM04/em04t001: many errors for missed events

Chris Plummer chris.plummer at oracle.com
Fri Jun 2 18:54:14 UTC 2017


Hello,

[I'd like a compiler team member to comment on this, in addition to 
runtime or svc]

Please review the following:

https://bugs.openjdk.java.net/browse/JDK-8171365
http://cr.openjdk.java.net/~cjplummer/8171365/webrev.00/

The CR is closed, so I'll describe the issue here:

The test is making sure that all |JVMTI_EVENT_DYNAMIC_CODE_GENERATED| 
events that occur during the agent's OnLoad phase also occur when later 
GenerateEvents() is called. GenerateEvents() is generating some of the 
events, but most are not sent. The problem is CodeCache::blobs_do() is 
only iterating over NMethod code heaps, not all of the code heaps, so 
many code blobs are missed. I changed it to iterate over all the code 
heaps, and now all the |JVMTI_EVENT_DYNAMIC_CODE_GENERATED|events are sent.

Note there is another version of CodeCache::blobs_do() that takes a 
closure object instead of a function pointer. It is used by GC and I 
assume is working properly by only iterating over NMethod code heaps, so 
I did not change it. The version that takes a function pointer is only 
used by JVMTI for implementing GenerateEvents(), so this change should 
not impact any other part of the VM. However, I do wonder if these 
blobs_do() methods should be renamed to avoid confusion since they don't 
(and haven't in the past) iterated over the same set of code blobs.

thanks,

Chris

https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#DynamicCodeGenerated


More information about the hotspot-dev mailing list