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) {
|