diff options
Diffstat (limited to 'lldb/source/Target')
| -rw-r--r-- | lldb/source/Target/StackFrame.cpp | 6 | ||||
| -rw-r--r-- | lldb/source/Target/StackFrameList.cpp | 20 | ||||
| -rw-r--r-- | lldb/source/Target/Thread.cpp | 5 |
3 files changed, 31 insertions, 0 deletions
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp index bd9df621e6e..c7f2c040162 100644 --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -679,4 +679,10 @@ StackFrame::HasCachedData () const if (!m_disassembly.GetString().empty()) return true; return false; +} + +lldb::StackFrameSP +StackFrame::GetSP () +{ + return m_thread.GetStackFrameSPForStackFramePtr (this); }
\ No newline at end of file diff --git a/lldb/source/Target/StackFrameList.cpp b/lldb/source/Target/StackFrameList.cpp index 2e76d339a5e..c6ac2de0f0d 100644 --- a/lldb/source/Target/StackFrameList.cpp +++ b/lldb/source/Target/StackFrameList.cpp @@ -513,3 +513,23 @@ StackFrameList::Merge (std::auto_ptr<StackFrameList>& curr_ap, lldb::StackFrameL } + +lldb::StackFrameSP +StackFrameList::GetStackFrameSPForStackFramePtr (StackFrame *stack_frame_ptr) +{ + const_iterator pos; + const_iterator begin = m_frames.begin(); + const_iterator end = m_frames.end(); + lldb::StackFrameSP ret_sp; + + for (pos = begin; pos != end; ++pos) + { + if (pos->get() == stack_frame_ptr) + { + ret_sp = (*pos); + break; + } + } + return ret_sp; +} + diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index cd4f8247c3d..11273b180e1 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -1129,3 +1129,8 @@ Thread::ThreadSettingsController::instance_settings_table[] = { NULL, eSetVarTypeNone, NULL, NULL, 0, 0, NULL } }; +lldb::StackFrameSP +Thread::GetStackFrameSPForStackFramePtr (StackFrame *stack_frame_ptr) +{ + return GetStackFrameList().GetStackFrameSPForStackFramePtr (stack_frame_ptr); +} |

