RFR: 8248362: JVMTI frame operations should use Thread-Local Handshake

Yasumasa Suenaga suenaga at oss.nttdata.com
Thu Jul 23 03:13:35 UTC 2020


Hi David,

Thanks for your comment!

On 2020/07/23 11:01, David Holmes wrote:
> Hi Yasumasa,
> 
> On 23/07/2020 12:38 am, Yasumasa Suenaga wrote:
>> Hi all,
>>
>> Please review this change:
>>
>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8248362
>>    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8248362/webrev.00/
>>
>> Migrate JVMTI frame operations to Thread-Local Handshakes from VM Operations.
>>
>>      - VM_GetFrameCount
>>      - VM_GetFrameLocation
>>
>> They affects both GetFrameCount() and GetFrameLocation() JVMTI functions.
> 
> Your changes all seem fine.
> 
> But I'm a bit confused about the existing code. In JvmtiEnv::GetFrameLocation we have:
> 
>     if (java_thread == JavaThread::current()) {
>       err = get_frame_location(java_thread, depth, method_ptr, location_ptr);
> 
> but then in get_frame_location we have:
> 
>     assert((SafepointSynchronize::is_at_safepoint() ||
>             java_thread->is_thread_fully_suspended(false, &debug_bits)),
>             "at safepoint or target thread is suspended");
> 
> and that assert must surely fire if called by the current thread for itself! ???

is_thread_fully_suspended() returns true when it calles from current thread, so this assert would not fire.


Yasumasa


> Thanks,
> David
> 
>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8248362-20200722-1249-12859056), and vmTestbase/nsk/{jdi,jdw,jvmti}, serviceability/{jdwp,jvmti} .
>>
>>
>> Thanks,
>>
>> Yasumasa


More information about the serviceability-dev mailing list