equal
deleted
inserted
replaced
749 _thread_status = java_lang_Thread::RUNNABLE; |
749 _thread_status = java_lang_Thread::RUNNABLE; |
750 } else { |
750 } else { |
751 _blocker_object = obj(); |
751 _blocker_object = obj(); |
752 JavaThread* owner = ObjectSynchronizer::get_lock_owner(obj, false); |
752 JavaThread* owner = ObjectSynchronizer::get_lock_owner(obj, false); |
753 if ((owner == NULL && _thread_status == java_lang_Thread::BLOCKED_ON_MONITOR_ENTER) |
753 if ((owner == NULL && _thread_status == java_lang_Thread::BLOCKED_ON_MONITOR_ENTER) |
754 || (owner != NULL && owner->is_attaching())) { |
754 || (owner != NULL && owner->is_attaching_via_jni())) { |
755 // ownership information of the monitor is not available |
755 // ownership information of the monitor is not available |
756 // (may no longer be owned or releasing to some other thread) |
756 // (may no longer be owned or releasing to some other thread) |
757 // make this thread in RUNNABLE state. |
757 // make this thread in RUNNABLE state. |
758 // And when the owner thread is in attaching state, the java thread |
758 // And when the owner thread is in attaching state, the java thread |
759 // is not completely initialized. For example thread name and id |
759 // is not completely initialized. For example thread name and id |
897 if (!include_jvmti_agent_threads && jt->is_jvmti_agent_thread()) { |
897 if (!include_jvmti_agent_threads && jt->is_jvmti_agent_thread()) { |
898 continue; |
898 continue; |
899 } |
899 } |
900 |
900 |
901 // skip jni threads in the process of attaching |
901 // skip jni threads in the process of attaching |
902 if (!include_jni_attaching_threads && jt->is_attaching()) { |
902 if (!include_jni_attaching_threads && jt->is_attaching_via_jni()) { |
903 continue; |
903 continue; |
904 } |
904 } |
905 |
905 |
906 instanceHandle h(cur_thread, (instanceOop) jt->threadObj()); |
906 instanceHandle h(cur_thread, (instanceOop) jt->threadObj()); |
907 _threads_array->append(h); |
907 _threads_array->append(h); |