< prev index next >

src/hotspot/share/prims/jvmtiImpl.cpp

Print this page




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

 884   LogStreamHandle(Trace, jvmti) log_stream;
 885   log_stream.print("Suspended Threads: [");
 886   for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thread = jtiwh.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) {




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


< prev index next >