[Lldb-commits] [lldb] 9f9c1f9 - [lldb][nfc] Split the constructor of ThreadPlanStepOut (#136160)
via lldb-commits
lldb-commits at lists.llvm.org
Thu Apr 17 12:53:29 PDT 2025
Author: Felipe de Azevedo Piovezan
Date: 2025-04-17T12:53:25-07:00
New Revision: 9f9c1f93819d441c561d18a73a55bcb6d8a692df
URL: https://github.com/llvm/llvm-project/commit/9f9c1f93819d441c561d18a73a55bcb6d8a692df
DIFF: https://github.com/llvm/llvm-project/commit/9f9c1f93819d441c561d18a73a55bcb6d8a692df.diff
LOG: [lldb][nfc] Split the constructor of ThreadPlanStepOut (#136160)
A subsequent commit will create a new constructor for ThreadPlanStepOut,
which needs to reuse much of the same logic of the existing constructor.
This commit places all of that reusable logic into a separate function.
Added:
Modified:
lldb/include/lldb/Target/ThreadPlanStepOut.h
lldb/source/Target/ThreadPlanStepOut.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/Target/ThreadPlanStepOut.h b/lldb/include/lldb/Target/ThreadPlanStepOut.h
index 013c675afc33d..e414a6e0a2d49 100644
--- a/lldb/include/lldb/Target/ThreadPlanStepOut.h
+++ b/lldb/include/lldb/Target/ThreadPlanStepOut.h
@@ -82,6 +82,10 @@ class ThreadPlanStepOut : public ThreadPlan, public ThreadPlanShouldStopHere {
LazyBool step_out_avoids_code_without_debug_info);
void SetupAvoidNoDebug(LazyBool step_out_avoids_code_without_debug_info);
+
+ void SetupReturnAddress(lldb::StackFrameSP return_frame_sp,
+ lldb::StackFrameSP immediate_return_from_sp,
+ uint32_t frame_idx, bool continue_to_next_branch);
// Need an appropriate marker for the current stack so we can tell step out
// from step in.
diff --git a/lldb/source/Target/ThreadPlanStepOut.cpp b/lldb/source/Target/ThreadPlanStepOut.cpp
index 26c1abe710319..f2606403016a6 100644
--- a/lldb/source/Target/ThreadPlanStepOut.cpp
+++ b/lldb/source/Target/ThreadPlanStepOut.cpp
@@ -79,6 +79,13 @@ ThreadPlanStepOut::ThreadPlanStepOut(
ComputeTargetFrame(thread, frame_idx, m_stepped_past_frames);
StackFrameSP immediate_return_from_sp(thread.GetStackFrameAtIndex(frame_idx));
+ SetupReturnAddress(return_frame_sp, immediate_return_from_sp, frame_idx,
+ continue_to_next_branch);
+}
+
+void ThreadPlanStepOut::SetupReturnAddress(
+ StackFrameSP return_frame_sp, StackFrameSP immediate_return_from_sp,
+ uint32_t frame_idx, bool continue_to_next_branch) {
if (!return_frame_sp || !immediate_return_from_sp)
return; // we can't do anything here. ValidatePlan() will return false.
@@ -94,8 +101,8 @@ ThreadPlanStepOut::ThreadPlanStepOut(
// First queue a plan that gets us to this inlined frame, and when we get
// there we'll queue a second plan that walks us out of this frame.
m_step_out_to_inline_plan_sp = std::make_shared<ThreadPlanStepOut>(
- thread, nullptr, false, stop_others, eVoteNoOpinion, eVoteNoOpinion,
- frame_idx - 1, eLazyBoolNo, continue_to_next_branch);
+ GetThread(), nullptr, false, m_stop_others, eVoteNoOpinion,
+ eVoteNoOpinion, frame_idx - 1, eLazyBoolNo, continue_to_next_branch);
static_cast<ThreadPlanStepOut *>(m_step_out_to_inline_plan_sp.get())
->SetShouldStopHereCallbacks(nullptr, nullptr);
m_step_out_to_inline_plan_sp->SetPrivate(true);
More information about the lldb-commits
mailing list