diff --git a/src/hotspot/share/prims/jvmtiEnv.cpp b/src/hotspot/share/prims/jvmtiEnv.cpp index 14030c1f8d3..ccccb5f1bda 100644 --- a/src/hotspot/share/prims/jvmtiEnv.cpp +++ b/src/hotspot/share/prims/jvmtiEnv.cpp @@ -158,7 +158,7 @@ JvmtiEnv::SetThreadLocalStorage(jthread thread, const void* data) { java_thread = current; state = java_thread->jvmti_thread_state(); } else { - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -207,7 +207,7 @@ JvmtiEnv::GetThreadLocalStorage(jthread thread, void** data_ptr) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -586,11 +586,12 @@ JvmtiEnv::SetEventNotificationMode(jvmtiEventMode mode, jvmtiEvent event_type, j JvmtiEventController::set_user_enabled(this, nullptr, (oop) nullptr, event_type, enabled); } else { // We have a specified event_thread. - ThreadsListHandle tlh; + JavaThread* current = JavaThread::current(); + ThreadsListHandle tlh(current); JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), event_thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), event_thread, current, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -861,7 +862,7 @@ JvmtiEnv::GetThreadState(jthread thread, jint* thread_state_ptr) { JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_oop); if (err != JVMTI_ERROR_NONE && err != JVMTI_ERROR_THREAD_NOT_ALIVE) { // We got an error code so we don't have a JavaThread*, but only // return an error from here if the error is not because the thread @@ -933,7 +934,7 @@ JvmtiEnv::SuspendThread(jthread thread) { JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + err = get_threadOop_and_JavaThread(tlh.list(), thread, current, &java_thread, &thread_oop); if (err != JVMTI_ERROR_NONE) { return err; } @@ -1075,11 +1076,12 @@ JvmtiEnv::SuspendAllVirtualThreads(jint except_count, const jthread* except_list jvmtiError JvmtiEnv::ResumeThread(jthread thread) { JvmtiVTMSTransitionDisabler disabler(true); - ThreadsListHandle tlh; + JavaThread* current = JavaThread::current(); + ThreadsListHandle tlh(current); JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current, &java_thread, &thread_oop); if (err != JVMTI_ERROR_NONE) { return err; } @@ -1183,7 +1185,7 @@ JvmtiEnv::StopThread(jthread thread, jobject exception) { NULL_CHECK(thread, JVMTI_ERROR_INVALID_THREAD); - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_oop); bool is_virtual = thread_oop != nullptr && thread_oop->is_a(vmClasses::BaseVirtualThread_klass()); @@ -1219,7 +1221,7 @@ JvmtiEnv::InterruptThread(jthread thread) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -1357,7 +1359,7 @@ JvmtiEnv::GetOwnedMonitorInfo(jthread thread, jint* owned_monitor_count_ptr, job JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, calling_thread, &java_thread, &thread_oop); if (err != JVMTI_ERROR_NONE) { delete owned_monitors_list; return err; @@ -1415,7 +1417,7 @@ JvmtiEnv::GetOwnedMonitorStackDepthInfo(jthread thread, jint* monitor_info_count JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, calling_thread, &java_thread, &thread_oop); if (err != JVMTI_ERROR_NONE) { delete owned_monitors_list; return err; @@ -1730,7 +1732,7 @@ JvmtiEnv::PopFrame(jthread thread) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); Handle thread_handle(current_thread, thread_obj); if (err != JVMTI_ERROR_NONE) { @@ -1781,16 +1783,16 @@ jvmtiError JvmtiEnv::NotifyFramePop(jthread thread, jint depth) { ResourceMark rm; JvmtiVTMSTransitionDisabler disabler(thread); - ThreadsListHandle tlh; + JavaThread* current = JavaThread::current(); + ThreadsListHandle tlh(current); JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } - JavaThread* current = JavaThread::current(); HandleMark hm(current); Handle thread_handle(current, thread_obj); JvmtiThreadState *state = JvmtiThreadState::state_for(java_thread, thread_handle); @@ -2047,7 +2049,7 @@ JvmtiEnv::GetLocalObject(jthread thread, jint depth, jint slot, jobject* value_p JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2088,7 +2090,7 @@ JvmtiEnv::GetLocalInstance(jthread thread, jint depth, jobject* value_ptr){ JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2130,7 +2132,7 @@ JvmtiEnv::GetLocalInt(jthread thread, jint depth, jint slot, jint* value_ptr) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2172,7 +2174,7 @@ JvmtiEnv::GetLocalLong(jthread thread, jint depth, jint slot, jlong* value_ptr) JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2214,7 +2216,7 @@ JvmtiEnv::GetLocalFloat(jthread thread, jint depth, jint slot, jfloat* value_ptr JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2256,7 +2258,7 @@ JvmtiEnv::GetLocalDouble(jthread thread, jint depth, jint slot, jdouble* value_p JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2297,7 +2299,7 @@ JvmtiEnv::SetLocalObject(jthread thread, jint depth, jint slot, jobject value) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2334,7 +2336,7 @@ JvmtiEnv::SetLocalInt(jthread thread, jint depth, jint slot, jint value) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2371,7 +2373,7 @@ JvmtiEnv::SetLocalLong(jthread thread, jint depth, jint slot, jlong value) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2408,7 +2410,7 @@ JvmtiEnv::SetLocalFloat(jthread thread, jint depth, jint slot, jfloat value) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -2445,7 +2447,7 @@ JvmtiEnv::SetLocalDouble(jthread thread, jint depth, jint slot, jdouble value) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; } @@ -3714,7 +3716,7 @@ JvmtiEnv::GetThreadCpuTime(jthread thread, jlong* nanos_ptr) { JavaThread* java_thread = nullptr; oop thread_oop = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_oop); if (thread_oop != nullptr && thread_oop->is_a(vmClasses::BaseVirtualThread_klass())) { // No support for virtual threads (yet). diff --git a/src/hotspot/share/prims/jvmtiEnvBase.cpp b/src/hotspot/share/prims/jvmtiEnvBase.cpp index 9186c0e0e58..276d1754315 100644 --- a/src/hotspot/share/prims/jvmtiEnvBase.cpp +++ b/src/hotspot/share/prims/jvmtiEnvBase.cpp @@ -1421,14 +1421,6 @@ JvmtiEnvBase::get_threadOop_and_JavaThread(ThreadsList* t_list, jthread thread, return JVMTI_ERROR_NONE; } -jvmtiError -JvmtiEnvBase::get_threadOop_and_JavaThread(ThreadsList* t_list, jthread thread, - JavaThread** jt_pp, oop* thread_oop_p) { - JavaThread* cur_thread = JavaThread::current(); - jvmtiError err = get_threadOop_and_JavaThread(t_list, thread, cur_thread, jt_pp, thread_oop_p); - return err; -} - // Check for JVMTI_ERROR_NOT_SUSPENDED and JVMTI_ERROR_OPAQUE_FRAME errors. // Used in PopFrame and ForceEarlyReturn implementations. jvmtiError @@ -2000,7 +1992,7 @@ JvmtiHandshake::execute(JvmtiUnitedHandshakeClosure* hs_cl, jthread target) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = JvmtiEnvBase::get_threadOop_and_JavaThread(tlh.list(), target, &java_thread, &thread_obj); + jvmtiError err = JvmtiEnvBase::get_threadOop_and_JavaThread(tlh.list(), target, current, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { hs_cl->set_result(err); return; @@ -2198,7 +2190,7 @@ JvmtiEnvBase::force_early_return(jthread thread, jvalue value, TosState tos) { JavaThread* java_thread = nullptr; oop thread_obj = nullptr; - jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_obj); + jvmtiError err = get_threadOop_and_JavaThread(tlh.list(), thread, current_thread, &java_thread, &thread_obj); if (err != JVMTI_ERROR_NONE) { return err; diff --git a/src/hotspot/share/prims/jvmtiEnvBase.hpp b/src/hotspot/share/prims/jvmtiEnvBase.hpp index d984cc8bd37..c6891fdeb1f 100644 --- a/src/hotspot/share/prims/jvmtiEnvBase.hpp +++ b/src/hotspot/share/prims/jvmtiEnvBase.hpp @@ -216,8 +216,6 @@ class JvmtiEnvBase : public CHeapObj { static jvmtiError get_threadOop_and_JavaThread(ThreadsList* t_list, jthread thread, JavaThread* cur_thread, JavaThread** jt_pp, oop* thread_oop_p); - static jvmtiError get_threadOop_and_JavaThread(ThreadsList* t_list, jthread thread, - JavaThread** jt_pp, oop* thread_oop_p); // Return true if java thread is a carrier thread with a mounted virtual thread. static bool is_cthread_with_mounted_vthread(JavaThread* jt);