Setting JVMTI Capabilities when VM is in "Live Phase"
Leela Mohan
leelamohan.venati at gmail.com
Wed Aug 17 04:13:51 UTC 2016
Thanks for correcting it, David.
On Tue, Aug 16, 2016 at 8:01 PM, David Holmes <david.holmes at oracle.com>
wrote:
> On 17/08/2016 6:57 AM, Leela Mohan wrote:
>
>> Your thoughts on this will be helpful.
>>
>> Thanks,
>> Leela
>>
>> [ Removed "serviceability-dev at openjdk.net" mailing alias added
>> "hotspot-dev" since i am getting failed mail delivery notification ]
>>
>
> Added back - it is openjdk.java.net, not openjdk.net
>
> David
> -----
>
> On Fri, Aug 12, 2016 at 4:33 PM, Daniel D. Daugherty <
>> daniel.daugherty at oracle.com> wrote:
>>
>> On 8/12/16 5:27 PM, Leela Mohan wrote:
>>>
>>> Hi Daniel,
>>>
>>> Actually, I was thinking about the case where compiler choose not to
>>> have
>>> complete "de-opt" state. For ex: Local pruning. I can also think of other
>>> cases which need callback events like, posting exceptions to the agent.
>>>
>>> JVMTI requests for examining/changing the stack frame would
>>> conservatively
>>> de-optimize the compile methods but not all de-optimizable locations can
>>> restore the java state user expect.
>>>
>>> What are the expectations for VM for these cases ?
>>>
>>>
>>> I think we'll have to wait for someone more current in how the compilers
>>> interact with JVM/TI to chime in here. I stopped actively working on
>>> JVM/TI back in 2010 or so... :-)
>>>
>>> Dan
>>>
>>>
>>>
>>> Thanks,
>>> Leela
>>>
>>> On Fri, Aug 12, 2016 at 4:04 PM, Daniel D. Daugherty <
>>> daniel.daugherty at oracle.com> wrote:
>>>
>>> On 8/12/16 4:21 PM, Leela Mohan wrote:
>>>>
>>>> Hi experts,
>>>>>
>>>>> It looks like, we don't disallow setting capabilities when VM is in
>>>>> "JVMTI_PHASE_LIVE". And, I notice, for every new compilation of method,
>>>>> ciEnv caches the JVMTI state and expects those assumptions to be true
>>>>> during the compilation. Otherwise, dump the compiled method.
>>>>>
>>>>> However, we don't seem to do anything with the methods which were
>>>>> compiled
>>>>> before setting the capability.
>>>>>
>>>>> What is the understanding?
>>>>>
>>>>> Thanks,
>>>>> Leela
>>>>>
>>>>>
>>>> Hi Leela,
>>>>
>>>> I'm guessing that you are talking about this capability:
>>>>
>>>> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.ht
>>>> ml#jvmtiCapabilities.can_generate_compiled_method_load_events
>>>>
>>>> and this event:
>>>>
>>>> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.ht
>>>> ml#CompiledMethodLoad
>>>>
>>>>
>>>> The can_generate_compiled_method_load_events capability needs to be
>>>> added
>>>> in order to generate CompiledMethodLoad events. Capabilities are added
>>>> via
>>>> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.ht
>>>> ml#AddCapabilities
>>>> which can be called from different JVM/TI phases. Different VM
>>>> implementations
>>>> can require that certain capabilities can only be added in certain
>>>> JVM/TI
>>>> phases.
>>>> However, if AddCapabilities() does not return a JVM/TI error when a
>>>> capability
>>>> is added in a phase, e.g., the live phase, then you can safely assume
>>>> that
>>>> the capability has been added.
>>>>
>>>>
>>>> In your example, it sounds like the capability is added in the live
>>>> phase
>>>> because you are seeing events generated for newly compiled methods. In
>>>> order
>>>> to see synthetic events for methods that were compiled before you added
>>>> the
>>>> capability, your agent needs to use a different function:
>>>>
>>>> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.ht
>>>> ml#GenerateEvents
>>>>
>>>> The documentation for Compiled Method Load has this line:
>>>>
>>>> These events can be sent after their initial occurrence with
>>>>>
>>>> GenerateEvents.
>>>>
>>>> and that sounds just like your situation.
>>>>
>>>> Hope this helps.
>>>>
>>>> Dan
>>>>
>>>>
>>>>
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20160816/701125a3/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list