< prev index next >

src/hotspot/share/prims/jvmtiImpl.cpp

Print this page
rev 47287 : Port 09.17.Thread_SMR_logging_update from JDK9 to JDK10
rev 47289 : eosterlund, stefank CR - refactor code into threadSMR.cpp and threadSMR.hpp
rev 47292 : stefank, coleenp CR - refactor most JavaThreadIterator usage to use JavaThreadIteratorWithHandle.


 864 
 865 bool JvmtiSuspendControl::resume(JavaThread *java_thread) {
 866   // external suspend should have caught resuming a thread twice
 867   assert(java_thread->is_being_ext_suspended(), "thread should be suspended");
 868 
 869   // resume thread
 870   {
 871     // must always grab Threads_lock, see JVM_SuspendThread
 872     MutexLocker ml(Threads_lock);
 873     java_thread->java_resume();
 874   }
 875 
 876   return true;
 877 }
 878 
 879 
 880 void JvmtiSuspendControl::print() {
 881 #ifndef PRODUCT
 882   LogStreamHandle(Trace, jvmti) log_stream;
 883   log_stream.print("Suspended Threads: [");
 884   ThreadsListHandle tlh;
 885   JavaThreadIterator jti(tlh.list());
 886   for (JavaThread *thread = jti.first(); thread != NULL; thread = jti.next()) {
 887 #ifdef JVMTI_TRACE
 888     const char *name   = JvmtiTrace::safe_get_thread_name(thread);
 889 #else
 890     const char *name   = "";
 891 #endif /*JVMTI_TRACE */
 892     log_stream.print("%s(%c ", name, thread->is_being_ext_suspended() ? 'S' : '_');
 893     if (!thread->has_last_Java_frame()) {
 894       log_stream.print("no stack");
 895     }
 896     log_stream.print(") ");
 897   }
 898   log_stream.print_cr("]");
 899 #endif
 900 }
 901 
 902 JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_load_event(
 903     nmethod* nm) {
 904   JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_LOAD);
 905   event._event_data.compiled_method_load = nm;
 906   // Keep the nmethod alive until the ServiceThread can process




 864 
 865 bool JvmtiSuspendControl::resume(JavaThread *java_thread) {
 866   // external suspend should have caught resuming a thread twice
 867   assert(java_thread->is_being_ext_suspended(), "thread should be suspended");
 868 
 869   // resume thread
 870   {
 871     // must always grab Threads_lock, see JVM_SuspendThread
 872     MutexLocker ml(Threads_lock);
 873     java_thread->java_resume();
 874   }
 875 
 876   return true;
 877 }
 878 
 879 
 880 void JvmtiSuspendControl::print() {
 881 #ifndef PRODUCT
 882   LogStreamHandle(Trace, jvmti) log_stream;
 883   log_stream.print("Suspended Threads: [");
 884   for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thread = jtiwh.next(); ) {


 885 #ifdef JVMTI_TRACE
 886     const char *name   = JvmtiTrace::safe_get_thread_name(thread);
 887 #else
 888     const char *name   = "";
 889 #endif /*JVMTI_TRACE */
 890     log_stream.print("%s(%c ", name, thread->is_being_ext_suspended() ? 'S' : '_');
 891     if (!thread->has_last_Java_frame()) {
 892       log_stream.print("no stack");
 893     }
 894     log_stream.print(") ");
 895   }
 896   log_stream.print_cr("]");
 897 #endif
 898 }
 899 
 900 JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_load_event(
 901     nmethod* nm) {
 902   JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_LOAD);
 903   event._event_data.compiled_method_load = nm;
 904   // Keep the nmethod alive until the ServiceThread can process


< prev index next >