diff options
Diffstat (limited to 'lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp')
-rw-r--r-- | lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp | 145 |
1 files changed, 63 insertions, 82 deletions
diff --git a/lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp b/lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp index b2383e4f122..0dae98f03ef 100644 --- a/lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp +++ b/lldb/source/Target/ThreadPlanCallOnFunctionExit.cpp @@ -12,108 +12,89 @@ using namespace lldb; using namespace lldb_private; -ThreadPlanCallOnFunctionExit::ThreadPlanCallOnFunctionExit(Thread &thread, - const Callback - &callback) : - ThreadPlan(ThreadPlanKind::eKindGeneric, "CallOnFunctionExit", - thread, - eVoteNoOpinion, eVoteNoOpinion // TODO check with Jim on these - ), - m_callback(callback) -{ - // We are not a user-generated plan. - SetIsMasterPlan(false); +ThreadPlanCallOnFunctionExit::ThreadPlanCallOnFunctionExit( + Thread &thread, const Callback &callback) + : ThreadPlan(ThreadPlanKind::eKindGeneric, "CallOnFunctionExit", thread, + eVoteNoOpinion, eVoteNoOpinion // TODO check with Jim on these + ), + m_callback(callback) { + // We are not a user-generated plan. + SetIsMasterPlan(false); } -void -ThreadPlanCallOnFunctionExit::DidPush() -{ - // We now want to queue the "step out" thread plan so it executes - // and completes. - - // Set stop vote to eVoteNo. - m_step_out_threadplan_sp = GetThread() - .QueueThreadPlanForStepOut(false, // abort other plans - nullptr, // addr_context - true, // first instruction - true, // stop other threads - eVoteNo, // do not say "we're stopping" - eVoteNoOpinion, // don't care about - // run state broadcasting - 0, // frame_idx - eLazyBoolCalculate // avoid code w/o debinfo - ); +void ThreadPlanCallOnFunctionExit::DidPush() { + // We now want to queue the "step out" thread plan so it executes + // and completes. + + // Set stop vote to eVoteNo. + m_step_out_threadplan_sp = GetThread().QueueThreadPlanForStepOut( + false, // abort other plans + nullptr, // addr_context + true, // first instruction + true, // stop other threads + eVoteNo, // do not say "we're stopping" + eVoteNoOpinion, // don't care about + // run state broadcasting + 0, // frame_idx + eLazyBoolCalculate // avoid code w/o debinfo + ); } // ------------------------------------------------------------------------- // ThreadPlan API // ------------------------------------------------------------------------- -void -ThreadPlanCallOnFunctionExit::GetDescription(Stream *s, lldb::DescriptionLevel - level) -{ - if (!s) - return; - s->Printf("Running until completion of current function, then making " - "callback."); +void ThreadPlanCallOnFunctionExit::GetDescription( + Stream *s, lldb::DescriptionLevel level) { + if (!s) + return; + s->Printf("Running until completion of current function, then making " + "callback."); } -bool -ThreadPlanCallOnFunctionExit::ValidatePlan(Stream *error) -{ - // We'll say we're always good since I don't know what would make this - // invalid. - return true; +bool ThreadPlanCallOnFunctionExit::ValidatePlan(Stream *error) { + // We'll say we're always good since I don't know what would make this + // invalid. + return true; } -bool -ThreadPlanCallOnFunctionExit::ShouldStop(Event *event_ptr) -{ - // If this is where we find out that an internal stop came in, then: - // Check if the step-out plan completed. If it did, then we want to - // run the callback here (our reason for living...) - if (m_step_out_threadplan_sp && - m_step_out_threadplan_sp->IsPlanComplete()) - { - m_callback(); +bool ThreadPlanCallOnFunctionExit::ShouldStop(Event *event_ptr) { + // If this is where we find out that an internal stop came in, then: + // Check if the step-out plan completed. If it did, then we want to + // run the callback here (our reason for living...) + if (m_step_out_threadplan_sp && m_step_out_threadplan_sp->IsPlanComplete()) { + m_callback(); - // We no longer need the pointer to the step-out thread plan. - m_step_out_threadplan_sp.reset(); + // We no longer need the pointer to the step-out thread plan. + m_step_out_threadplan_sp.reset(); - // Indicate that this plan is done and can be discarded. - SetPlanComplete(); + // Indicate that this plan is done and can be discarded. + SetPlanComplete(); - // We're done now, but we want to return false so that we - // don't cause the thread to really stop. - } + // We're done now, but we want to return false so that we + // don't cause the thread to really stop. + } - return false; + return false; } -bool -ThreadPlanCallOnFunctionExit::WillStop() -{ - // The code looks like the return value is ignored via ThreadList:: - // ShouldStop(). - // This is called when we really are going to stop. We don't care - // and don't need to do anything here. - return false; +bool ThreadPlanCallOnFunctionExit::WillStop() { + // The code looks like the return value is ignored via ThreadList:: + // ShouldStop(). + // This is called when we really are going to stop. We don't care + // and don't need to do anything here. + return false; } -bool -ThreadPlanCallOnFunctionExit::DoPlanExplainsStop (Event *event_ptr) -{ - // We don't ever explain a stop. The only stop that is relevant - // to us directly is the step_out plan we added to do the heavy lifting - // of getting us past the current method. - return false; +bool ThreadPlanCallOnFunctionExit::DoPlanExplainsStop(Event *event_ptr) { + // We don't ever explain a stop. The only stop that is relevant + // to us directly is the step_out plan we added to do the heavy lifting + // of getting us past the current method. + return false; } -lldb::StateType -ThreadPlanCallOnFunctionExit::GetPlanRunState() -{ - // This value doesn't matter - we'll never be the top thread plan, so - // nobody will ask us this question. - return eStateRunning; +lldb::StateType ThreadPlanCallOnFunctionExit::GetPlanRunState() { + // This value doesn't matter - we'll never be the top thread plan, so + // nobody will ask us this question. + return eStateRunning; } |