in core/src/main/java/com/jetbrains/sa/jdi/ThreadReferenceImpl.java [100:121]
public int status() {
int state = OopUtilities.threadOopGetThreadStatus(ref());
// refer to map2jdwpThreadStatus in util.c (back-end)
if ((state & JVMTI_THREAD_STATE_ALIVE) == 0) {
if ((state & JVMTI_THREAD_STATE_TERMINATED) != 0) {
return ThreadReference.THREAD_STATUS_ZOMBIE;
} else {
return ThreadReference.THREAD_STATUS_NOT_STARTED;
}
} else {
if ((state & JVMTI_THREAD_STATE_SLEEPING) != 0) {
return ThreadReference.THREAD_STATUS_SLEEPING;
} else if ((state & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
return ThreadReference.THREAD_STATUS_MONITOR;
} else if ((state & JVMTI_THREAD_STATE_WAITING) != 0) {
return ThreadReference.THREAD_STATUS_WAIT;
} else if ((state & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
return ThreadReference.THREAD_STATUS_RUNNING;
}
}
return ThreadReference.THREAD_STATUS_UNKNOWN;
}