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_"),