src/share/vm/runtime/thread.cpp

Print this page




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