diff options
author | Jim Ingham <jingham@apple.com> | 2010-09-23 17:40:12 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2010-09-23 17:40:12 +0000 |
commit | e4284b719ccbe8c2028dfd3eb82c64e50355de54 (patch) | |
tree | 3aa04677d7ab4074a376f2c120dc03258e79199b | |
parent | a45bbb96282456b11be82c092ea93a31c264e637 (diff) | |
download | bcm5719-llvm-e4284b719ccbe8c2028dfd3eb82c64e50355de54.tar.gz bcm5719-llvm-e4284b719ccbe8c2028dfd3eb82c64e50355de54.zip |
Add GetSP to the StackFrame.
llvm-svn: 114674
-rw-r--r-- | lldb/include/lldb/Target/StackFrame.h | 3 | ||||
-rw-r--r-- | lldb/include/lldb/Target/StackFrameList.h | 3 | ||||
-rw-r--r-- | lldb/include/lldb/Target/Thread.h | 3 | ||||
-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 |
6 files changed, 40 insertions, 0 deletions
diff --git a/lldb/include/lldb/Target/StackFrame.h b/lldb/include/lldb/Target/StackFrame.h index 66a2c1d5de2..797a117ce7a 100644 --- a/lldb/include/lldb/Target/StackFrame.h +++ b/lldb/include/lldb/Target/StackFrame.h @@ -143,6 +143,9 @@ public: virtual void Calculate (ExecutionContext &exe_ctx); + + lldb::StackFrameSP + GetSP (); protected: friend class StackFrameList; diff --git a/lldb/include/lldb/Target/StackFrameList.h b/lldb/include/lldb/Target/StackFrameList.h index 888a959665e..f0ab6047078 100644 --- a/lldb/include/lldb/Target/StackFrameList.h +++ b/lldb/include/lldb/Target/StackFrameList.h @@ -58,6 +58,9 @@ public: void Dump (Stream *s); + + lldb::StackFrameSP + GetStackFrameSPForStackFramePtr (StackFrame *stack_frame_ptr); protected: diff --git a/lldb/include/lldb/Target/Thread.h b/lldb/include/lldb/Target/Thread.h index 627a899cdf0..3aad792236a 100644 --- a/lldb/include/lldb/Target/Thread.h +++ b/lldb/include/lldb/Target/Thread.h @@ -611,6 +611,9 @@ public: virtual void Calculate (ExecutionContext &exe_ctx); + + lldb::StackFrameSP + GetStackFrameSPForStackFramePtr (StackFrame *stack_frame_ptr); protected: 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); +} |