diff options
Diffstat (limited to 'include/lldb/Target/Unwind.h')
-rw-r--r-- | include/lldb/Target/Unwind.h | 129 |
1 files changed, 53 insertions, 76 deletions
diff --git a/include/lldb/Target/Unwind.h b/include/lldb/Target/Unwind.h index 09ba87a42bbe..a50e8d4a7bdd 100644 --- a/include/lldb/Target/Unwind.h +++ b/include/lldb/Target/Unwind.h @@ -20,96 +20,73 @@ namespace lldb_private { -class Unwind -{ +class Unwind { protected: - //------------------------------------------------------------------ - // Classes that inherit from Unwind can see and modify these - //------------------------------------------------------------------ - Unwind(Thread &thread) : m_thread(thread), m_unwind_mutex() {} + //------------------------------------------------------------------ + // Classes that inherit from Unwind can see and modify these + //------------------------------------------------------------------ + Unwind(Thread &thread) : m_thread(thread), m_unwind_mutex() {} public: - virtual - ~Unwind() - { + virtual ~Unwind() {} + + void Clear() { + std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); + DoClear(); + } + + uint32_t GetFrameCount() { + std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); + return DoGetFrameCount(); + } + + uint32_t GetFramesUpTo(uint32_t end_idx) { + lldb::addr_t cfa; + lldb::addr_t pc; + uint32_t idx; + + for (idx = 0; idx < end_idx; idx++) { + if (!DoGetFrameInfoAtIndex(idx, cfa, pc)) { + break; + } } + return idx; + } - void - Clear() - { - std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); - DoClear(); - } + bool GetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, + lldb::addr_t &pc) { + std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); + return DoGetFrameInfoAtIndex(frame_idx, cfa, pc); + } - uint32_t - GetFrameCount() - { - std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); - return DoGetFrameCount(); - } + lldb::RegisterContextSP CreateRegisterContextForFrame(StackFrame *frame) { + std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); + return DoCreateRegisterContextForFrame(frame); + } - uint32_t - GetFramesUpTo (uint32_t end_idx) - { - lldb::addr_t cfa; - lldb::addr_t pc; - uint32_t idx; - - for (idx = 0; idx < end_idx; idx++) - { - if (!DoGetFrameInfoAtIndex (idx, cfa, pc)) - { - break; - } - } - return idx; - } + Thread &GetThread() { return m_thread; } - bool - GetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, lldb::addr_t &pc) - { - std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); - return DoGetFrameInfoAtIndex(frame_idx, cfa, pc); - } +protected: + //------------------------------------------------------------------ + // Classes that inherit from Unwind can see and modify these + //------------------------------------------------------------------ + virtual void DoClear() = 0; - lldb::RegisterContextSP - CreateRegisterContextForFrame(StackFrame *frame) - { - std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); - return DoCreateRegisterContextForFrame(frame); - } + virtual uint32_t DoGetFrameCount() = 0; - Thread & - GetThread() - { - return m_thread; - } + virtual bool DoGetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, + lldb::addr_t &pc) = 0; -protected: - //------------------------------------------------------------------ - // Classes that inherit from Unwind can see and modify these - //------------------------------------------------------------------ - virtual void - DoClear() = 0; - - virtual uint32_t - DoGetFrameCount() = 0; - - virtual bool - DoGetFrameInfoAtIndex (uint32_t frame_idx, - lldb::addr_t& cfa, - lldb::addr_t& pc) = 0; - - virtual lldb::RegisterContextSP - DoCreateRegisterContextForFrame (StackFrame *frame) = 0; - - Thread &m_thread; - std::recursive_mutex m_unwind_mutex; + virtual lldb::RegisterContextSP + DoCreateRegisterContextForFrame(StackFrame *frame) = 0; + + Thread &m_thread; + std::recursive_mutex m_unwind_mutex; private: - DISALLOW_COPY_AND_ASSIGN (Unwind); + DISALLOW_COPY_AND_ASSIGN(Unwind); }; } // namespace lldb_private -#endif // liblldb_Unwind_h_ +#endif // liblldb_Unwind_h_ |