Take responsibility for translating thread states for managed code.
Using switch lets the compiler take responsibility for keeping things in sync.
Change-Id: If0b4becd9c84901937a39045e373e0ef0ec48406
diff --git a/src/debugger.cc b/src/debugger.cc
index 569ea81..5a9a462 100644
--- a/src/debugger.cc
+++ b/src/debugger.cc
@@ -1388,17 +1388,16 @@
// TODO: if we're in Thread.sleep(long), we should return TS_SLEEPING,
// even if it's implemented using Object.wait(long).
switch (thread->GetState()) {
- case Thread::kTerminated: *pThreadStatus = JDWP::TS_ZOMBIE; break;
- case Thread::kRunnable: *pThreadStatus = JDWP::TS_RUNNING; break;
- case Thread::kTimedWaiting: *pThreadStatus = JDWP::TS_WAIT; break;
- case Thread::kBlocked: *pThreadStatus = JDWP::TS_MONITOR; break;
- case Thread::kWaiting: *pThreadStatus = JDWP::TS_WAIT; break;
- case Thread::kStarting: *pThreadStatus = JDWP::TS_ZOMBIE; break;
- case Thread::kNative: *pThreadStatus = JDWP::TS_RUNNING; break;
- case Thread::kVmWait: *pThreadStatus = JDWP::TS_WAIT; break;
- case Thread::kSuspended: *pThreadStatus = JDWP::TS_RUNNING; break;
- default:
- LOG(FATAL) << "Unknown thread state " << thread->GetState();
+ case Thread::kTerminated: *pThreadStatus = JDWP::TS_ZOMBIE; break;
+ case Thread::kRunnable: *pThreadStatus = JDWP::TS_RUNNING; break;
+ case Thread::kTimedWaiting: *pThreadStatus = JDWP::TS_WAIT; break;
+ case Thread::kBlocked: *pThreadStatus = JDWP::TS_MONITOR; break;
+ case Thread::kWaiting: *pThreadStatus = JDWP::TS_WAIT; break;
+ case Thread::kStarting: *pThreadStatus = JDWP::TS_ZOMBIE; break;
+ case Thread::kNative: *pThreadStatus = JDWP::TS_RUNNING; break;
+ case Thread::kVmWait: *pThreadStatus = JDWP::TS_WAIT; break;
+ case Thread::kSuspended: *pThreadStatus = JDWP::TS_RUNNING; break;
+ // Don't add a 'default' here so the compiler can spot incompatible enum changes.
}
*pSuspendStatus = (thread->IsSuspended() ? JDWP::SUSPEND_STATUS_SUSPENDED : JDWP::SUSPEND_STATUS_NOT_SUSPENDED);