Add Jvmti Suspend/ResumeThread functions
Enable the can_suspend jvmti capability and implement all required
functionality associated with it.
Test: ./test.py --host -j40
Bug: 34415266
Bug: 62821960
Bug: 63579748
Change-Id: I83b92de7f81622e1658114b034918e8295805b6e
diff --git a/runtime/debugger.cc b/runtime/debugger.cc
index b595112..7fcc28c 100644
--- a/runtime/debugger.cc
+++ b/runtime/debugger.cc
@@ -2480,7 +2480,8 @@
needs_resume = thread->GetDebugSuspendCount() > 0;
}
if (needs_resume) {
- Runtime::Current()->GetThreadList()->Resume(thread, SuspendReason::kForDebugger);
+ bool resumed = Runtime::Current()->GetThreadList()->Resume(thread, SuspendReason::kForDebugger);
+ DCHECK(resumed);
}
}
@@ -3721,7 +3722,9 @@
~ScopedDebuggerThreadSuspension() {
if (other_suspend_) {
- Runtime::Current()->GetThreadList()->Resume(thread_, SuspendReason::kForDebugger);
+ bool resumed = Runtime::Current()->GetThreadList()->Resume(thread_,
+ SuspendReason::kForDebugger);
+ DCHECK(resumed);
}
}
@@ -4043,7 +4046,8 @@
thread_list->UndoDebuggerSuspensions();
} else {
VLOG(jdwp) << " Resuming event thread only";
- thread_list->Resume(targetThread, SuspendReason::kForDebugger);
+ bool resumed = thread_list->Resume(targetThread, SuspendReason::kForDebugger);
+ DCHECK(resumed);
}
return JDWP::ERR_NONE;