< prev index next >

src/hotspot/share/prims/jvmtiEnv.cpp

Print this page




1286   }
1287   delete owned_monitors_list;
1288 
1289   return err;
1290 } /* end GetOwnedMonitorStackDepthInfo */
1291 
1292 
1293 // Threads_lock NOT held, java_thread not protected by lock
1294 // java_thread - pre-checked
1295 // monitor_ptr - pre-checked for NULL
1296 jvmtiError
1297 JvmtiEnv::GetCurrentContendedMonitor(JavaThread* java_thread, jobject* monitor_ptr) {
1298   jvmtiError err = JVMTI_ERROR_NONE;
1299   JavaThread* calling_thread  = JavaThread::current();
1300 
1301   // It is only safe to perform the direct operation on the current
1302   // thread. All other usage needs to use a vm-safepoint-op for safety.
1303   if (java_thread == calling_thread) {
1304     err = get_current_contended_monitor(calling_thread, java_thread, monitor_ptr);
1305   } else {
1306     // get contended monitor information at safepoint.
1307     VM_GetCurrentContendedMonitor op(this, calling_thread, java_thread, monitor_ptr);
1308     VMThread::execute(&op);
1309     err = op.result();
1310   }
1311   return err;
1312 } /* end GetCurrentContendedMonitor */
1313 
1314 
1315 // Threads_lock NOT held
1316 // thread - NOT pre-checked
1317 // proc - pre-checked for NULL
1318 // arg - NULL is a valid value, must be checked
1319 jvmtiError
1320 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) {
1321   JavaThread* current_thread = JavaThread::current();
1322 
1323   JavaThread* java_thread = NULL;
1324   oop thread_oop = NULL;
1325   ThreadsListHandle tlh(current_thread);
1326   jvmtiError err = JvmtiExport::cv_external_thread_to_JavaThread(tlh.list(), thread, &java_thread, &thread_oop);
1327   if (err != JVMTI_ERROR_NONE) {
1328     // We got an error code so we don't have a JavaThread *, but




1286   }
1287   delete owned_monitors_list;
1288 
1289   return err;
1290 } /* end GetOwnedMonitorStackDepthInfo */
1291 
1292 
1293 // Threads_lock NOT held, java_thread not protected by lock
1294 // java_thread - pre-checked
1295 // monitor_ptr - pre-checked for NULL
1296 jvmtiError
1297 JvmtiEnv::GetCurrentContendedMonitor(JavaThread* java_thread, jobject* monitor_ptr) {
1298   jvmtiError err = JVMTI_ERROR_NONE;
1299   JavaThread* calling_thread  = JavaThread::current();
1300 
1301   // It is only safe to perform the direct operation on the current
1302   // thread. All other usage needs to use a vm-safepoint-op for safety.
1303   if (java_thread == calling_thread) {
1304     err = get_current_contended_monitor(calling_thread, java_thread, monitor_ptr);
1305   } else {
1306     // get contended monitor information with handshake.
1307     GetOneCurrentContendedMonitor op(this, calling_thread, monitor_ptr);
1308     Handshake::execute(&op, java_thread);
1309     err = op.result();
1310   }
1311   return err;
1312 } /* end GetCurrentContendedMonitor */
1313 
1314 
1315 // Threads_lock NOT held
1316 // thread - NOT pre-checked
1317 // proc - pre-checked for NULL
1318 // arg - NULL is a valid value, must be checked
1319 jvmtiError
1320 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) {
1321   JavaThread* current_thread = JavaThread::current();
1322 
1323   JavaThread* java_thread = NULL;
1324   oop thread_oop = NULL;
1325   ThreadsListHandle tlh(current_thread);
1326   jvmtiError err = JvmtiExport::cv_external_thread_to_JavaThread(tlh.list(), thread, &java_thread, &thread_oop);
1327   if (err != JVMTI_ERROR_NONE) {
1328     // We got an error code so we don't have a JavaThread *, but


< prev index next >