@@ -1080,12 +1080,7 @@ JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread
1080
1080
ObjectMonitor *mon = target->current_waiting_monitor ();
1081
1081
if (mon != nullptr ) wait_obj = mon->object ();
1082
1082
} else {
1083
- assert (vthread != nullptr , " no vthread oop" );
1084
- oop cont = java_lang_VirtualThread::continuation (vthread);
1085
- assert (cont != nullptr , " vthread with no continuation" );
1086
- stackChunkOop chunk = jdk_internal_vm_Continuation::tail (cont);
1087
- assert (chunk != nullptr , " unmounted vthread should have a chunk" );
1088
- ObjectMonitor *mon = chunk->current_waiting_monitor ();
1083
+ ObjectMonitor *mon = java_lang_VirtualThread::current_waiting_monitor (vthread);
1089
1084
if (mon != nullptr ) wait_obj = mon->object ();
1090
1085
}
1091
1086
}
@@ -1099,12 +1094,7 @@ JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread
1099
1094
ObjectMonitor *mon = target->current_pending_monitor ();
1100
1095
if (mon != nullptr ) pending_obj = mon->object ();
1101
1096
} else {
1102
- assert (vthread != nullptr , " no vthread oop" );
1103
- oop cont = java_lang_VirtualThread::continuation (vthread);
1104
- assert (cont != nullptr , " vthread with no continuation" );
1105
- stackChunkOop chunk = jdk_internal_vm_Continuation::tail (cont);
1106
- assert (chunk != nullptr , " unmounted vthread should have a chunk" );
1107
- ObjectMonitor *mon = chunk->current_pending_monitor ();
1097
+ ObjectMonitor *mon = java_lang_VirtualThread::current_pending_monitor (vthread);
1108
1098
if (mon != nullptr ) pending_obj = mon->object ();
1109
1099
}
1110
1100
}
@@ -2569,12 +2559,9 @@ GetCurrentContendedMonitorClosure::do_thread(Thread *target) {
2569
2559
void
2570
2560
GetCurrentContendedMonitorClosure::do_vthread (Handle target_h) {
2571
2561
if (_target_jt == nullptr ) {
2572
- oop cont = java_lang_VirtualThread::continuation (target_h ());
2573
- assert (cont != nullptr , " vthread with no continuation" );
2574
- stackChunkOop chunk = jdk_internal_vm_Continuation::tail (cont);
2575
- assert (chunk != nullptr , " unmounted vthread should have a chunk" );
2576
- if (chunk->current_pending_monitor () != nullptr ) {
2577
- *_owned_monitor_ptr = JNIHandles::make_local (_calling_thread, chunk->current_pending_monitor ()->object ());
2562
+ ObjectMonitor *mon = java_lang_VirtualThread::current_pending_monitor (target_h ());
2563
+ if (mon != nullptr ) {
2564
+ *_owned_monitor_ptr = JNIHandles::make_local (_calling_thread, mon->object ());
2578
2565
}
2579
2566
_result = JVMTI_ERROR_NONE; // target virtual thread is unmounted
2580
2567
return ;
0 commit comments