Make CheckJNI and JNI workarounds mutually exclusive...

...in the opposite direction; needing workarounds turns off CheckJNI.
This isn't necessarily a good idea, but I like the cleanup parts of
this change.

Change-Id: I708235ea3e5cc35ef90b01dd810e097e3ff9dd26
diff --git a/src/thread_list.cc b/src/thread_list.cc
index b2cf676..9cefc82 100644
--- a/src/thread_list.cc
+++ b/src/thread_list.cc
@@ -20,35 +20,10 @@
 
 #include "debugger.h"
 #include "scoped_heap_lock.h"
+#include "scoped_thread_list_lock.h"
 
 namespace art {
 
-ScopedThreadListLock::ScopedThreadListLock() {
-  // Avoid deadlock between two threads trying to SuspendAll
-  // simultaneously by going to kVmWait if the lock cannot be
-  // immediately acquired.
-  ThreadList* thread_list = Runtime::Current()->GetThreadList();
-  if (!thread_list->thread_list_lock_.TryLock()) {
-    Thread* self = Thread::Current();
-    if (self == NULL) {
-      // Self may be null during shutdown, but in that case there's no point going to kVmWait.
-      thread_list->thread_list_lock_.Lock();
-    } else {
-      Thread::State old_thread_state = self->SetState(Thread::kVmWait);
-      thread_list->thread_list_lock_.Lock();
-      // If we have the lock, by definition there's no GC in progress (though we
-      // might be taking the lock in order to start one). We avoid the suspend
-      // check here so we don't risk going to sleep on the thread suspend count lock
-      // while holding the thread list lock.
-      self->SetStateWithoutSuspendCheck(old_thread_state);
-    }
-  }
-}
-
-ScopedThreadListLock::~ScopedThreadListLock() {
-  Runtime::Current()->GetThreadList()->thread_list_lock_.Unlock();
-}
-
 ThreadList::ThreadList()
     : thread_list_lock_("thread list lock", kThreadListLock),
       thread_start_cond_("thread_start_cond_"),