2853 #ifdef ASSERT 2854 // early safepoints can hit while current thread does not yet have TLS 2855 if (!SafepointSynchronize::is_at_safepoint()) { 2856 Thread *cur = Thread::current(); 2857 if (!(cur->is_Java_thread() && cur == this)) { 2858 // Current JavaThreads are allowed to get their own name without 2859 // the Threads_lock. 2860 assert_locked_or_safepoint(Threads_lock); 2861 } 2862 } 2863 #endif // ASSERT 2864 return get_thread_name_string(); 2865 } 2866 2867 // Returns a non-NULL representation of this thread's name, or a suitable 2868 // descriptive string if there is no set name 2869 const char* JavaThread::get_thread_name_string(char* buf, int buflen) const { 2870 const char* name_str; 2871 oop thread_obj = threadObj(); 2872 if (thread_obj != NULL) { 2873 typeArrayOop name = java_lang_Thread::name(thread_obj); 2874 if (name != NULL) { 2875 if (buf == NULL) { 2876 name_str = UNICODE::as_utf8((jchar*) name->base(T_CHAR), 2877 name->length()); 2878 } else { 2879 name_str = UNICODE::as_utf8((jchar*) name->base(T_CHAR), 2880 name->length(), buf, buflen); 2881 } 2882 } else if (is_attaching_via_jni()) { // workaround for 6412693 - see 6404306 2883 name_str = "<no-name - thread is attaching>"; 2884 } else { 2885 name_str = Thread::name(); 2886 } 2887 } else { 2888 name_str = Thread::name(); 2889 } 2890 assert(name_str != NULL, "unexpected NULL thread name"); 2891 return name_str; 2892 } 2893 2894 2895 const char* JavaThread::get_threadgroup_name() const { 2896 debug_only(if (JavaThread::current() != this) assert_locked_or_safepoint(Threads_lock);) 2897 oop thread_obj = threadObj(); 2898 if (thread_obj != NULL) { 2899 oop thread_group = java_lang_Thread::threadGroup(thread_obj); 2900 if (thread_group != NULL) { | 2853 #ifdef ASSERT 2854 // early safepoints can hit while current thread does not yet have TLS 2855 if (!SafepointSynchronize::is_at_safepoint()) { 2856 Thread *cur = Thread::current(); 2857 if (!(cur->is_Java_thread() && cur == this)) { 2858 // Current JavaThreads are allowed to get their own name without 2859 // the Threads_lock. 2860 assert_locked_or_safepoint(Threads_lock); 2861 } 2862 } 2863 #endif // ASSERT 2864 return get_thread_name_string(); 2865 } 2866 2867 // Returns a non-NULL representation of this thread's name, or a suitable 2868 // descriptive string if there is no set name 2869 const char* JavaThread::get_thread_name_string(char* buf, int buflen) const { 2870 const char* name_str; 2871 oop thread_obj = threadObj(); 2872 if (thread_obj != NULL) { 2873 oop name = java_lang_Thread::name(thread_obj); 2874 if (name != NULL) { 2875 if (buf == NULL) { 2876 name_str = java_lang_String::as_utf8_string(name); 2877 } else { 2878 name_str = java_lang_String::as_utf8_string(name, buf, buflen); 2879 } 2880 } else if (is_attaching_via_jni()) { // workaround for 6412693 - see 6404306 2881 name_str = "<no-name - thread is attaching>"; 2882 } else { 2883 name_str = Thread::name(); 2884 } 2885 } else { 2886 name_str = Thread::name(); 2887 } 2888 assert(name_str != NULL, "unexpected NULL thread name"); 2889 return name_str; 2890 } 2891 2892 2893 const char* JavaThread::get_threadgroup_name() const { 2894 debug_only(if (JavaThread::current() != this) assert_locked_or_safepoint(Threads_lock);) 2895 oop thread_obj = threadObj(); 2896 if (thread_obj != NULL) { 2897 oop thread_group = java_lang_Thread::threadGroup(thread_obj); 2898 if (thread_group != NULL) { |