LOG(INFO) << "Debugger is no longer active";
- // Suspend all threads and exclusively acquire the mutator lock. Set the state of the thread
- // to kRunnable to avoid scoped object access transitions. Remove the debugger as a listener
+ // Suspend all threads and exclusively acquire the mutator lock. Remove the debugger as a listener
// and clear the object registry.
Runtime* runtime = Runtime::Current();
Thread* self = Thread::Current();
gc::kGcCauseInstrumentation,
gc::kCollectorTypeInstrumentation);
ScopedSuspendAll ssa(__FUNCTION__);
- ThreadState old_state = self->SetStateUnsafe(kRunnable);
// Debugger may not be active at this point.
if (IsDebuggerActive()) {
{
}
gDebuggerActive = false;
}
- CHECK_EQ(self->SetStateUnsafe(old_state), kRunnable);
}
{
SHARED_REQUIRES(Locks::mutator_lock_);
// Avoid use, callers should use SetState. Used only by SignalCatcher::HandleSigQuit, ~Thread and
- // Dbg::Disconnected.
+ // Dbg::ManageDeoptimization.
ThreadState SetStateUnsafe(ThreadState new_state) {
ThreadState old_state = GetState();
if (old_state == kRunnable && new_state != kRunnable) {