diff options
author | Jason Molenda <jmolenda@apple.com> | 2014-05-23 01:42:56 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 2014-05-23 01:42:56 +0000 |
commit | 23a285d2d6e9d175e2f06344b39dd1d18a10c24a (patch) | |
tree | a06e75e973d9585ca05eb9653579d089689e261c | |
parent | 145050288c145d9ace20ab9ba92fb7cc560d2044 (diff) | |
download | bcm5719-llvm-23a285d2d6e9d175e2f06344b39dd1d18a10c24a.tar.gz bcm5719-llvm-23a285d2d6e9d175e2f06344b39dd1d18a10c24a.zip |
Revert r209488; Greg suggests a different approach.
llvm-svn: 209492
-rw-r--r-- | lldb/include/lldb/Symbol/FuncUnwinders.h | 3 | ||||
-rw-r--r-- | lldb/include/lldb/Symbol/UnwindTable.h | 6 | ||||
-rw-r--r-- | lldb/source/Symbol/FuncUnwinders.cpp | 20 | ||||
-rw-r--r-- | lldb/source/Symbol/UnwindTable.cpp | 12 |
4 files changed, 13 insertions, 28 deletions
diff --git a/lldb/include/lldb/Symbol/FuncUnwinders.h b/lldb/include/lldb/Symbol/FuncUnwinders.h index ad108d44e0c..7af06340228 100644 --- a/lldb/include/lldb/Symbol/FuncUnwinders.h +++ b/lldb/include/lldb/Symbol/FuncUnwinders.h @@ -31,7 +31,7 @@ public: // instructions are finished for migrating breakpoints past the // stack frame setup instructions when we don't have line table information. - FuncUnwinders (lldb_private::UnwindTable& unwind_table, AddressRange range); + FuncUnwinders (lldb_private::UnwindTable& unwind_table, const lldb::UnwindAssemblySP& assembly_profiler, AddressRange range); ~FuncUnwinders (); @@ -77,6 +77,7 @@ public: private: UnwindTable& m_unwind_table; + lldb::UnwindAssemblySP m_assembly_profiler; AddressRange m_range; Mutex m_mutex; diff --git a/lldb/include/lldb/Symbol/UnwindTable.h b/lldb/include/lldb/Symbol/UnwindTable.h index bd0bdc01e93..3a99eb463df 100644 --- a/lldb/include/lldb/Symbol/UnwindTable.h +++ b/lldb/include/lldb/Symbol/UnwindTable.h @@ -13,8 +13,7 @@ #include <map> -#include "lldb/lldb-private.h" -#include "lldb/Host/Mutex.h" +#include "lldb/lldb-private.h" namespace lldb_private { @@ -43,8 +42,6 @@ public: lldb::FuncUnwindersSP GetUncachedFuncUnwindersContainingAddress (const Address& addr, SymbolContext &sc); - lldb::UnwindAssemblySP GetUnwindAssemblyProfiler (lldb_private::Mutex::Locker &locker); - private: void Dump (Stream &s); @@ -61,7 +58,6 @@ private: bool m_initialized; // delay some initialization until ObjectFile is set up lldb::UnwindAssemblySP m_assembly_profiler; - Mutex m_assembly_mutex; DWARFCallFrameInfo* m_eh_frame; diff --git a/lldb/source/Symbol/FuncUnwinders.cpp b/lldb/source/Symbol/FuncUnwinders.cpp index bc93797d0db..2009c7ca687 100644 --- a/lldb/source/Symbol/FuncUnwinders.cpp +++ b/lldb/source/Symbol/FuncUnwinders.cpp @@ -28,9 +28,11 @@ using namespace lldb_private; FuncUnwinders::FuncUnwinders ( UnwindTable& unwind_table, + const lldb::UnwindAssemblySP& assembly_profiler, AddressRange range ) : m_unwind_table(unwind_table), + m_assembly_profiler(assembly_profiler), m_range(range), m_mutex (Mutex::eMutexTypeNormal), m_unwind_plan_call_site_sp (), @@ -112,12 +114,10 @@ FuncUnwinders::GetUnwindPlanAtNonCallSite (Thread& thread) if (m_tried_unwind_at_non_call_site == false && m_unwind_plan_non_call_site_sp.get() == nullptr) { m_tried_unwind_at_non_call_site = true; - Mutex::Locker assembly_locker; - UnwindAssemblySP assembly_profiler = m_unwind_table.GetUnwindAssemblyProfiler (assembly_locker); - if (assembly_profiler) + if (m_assembly_profiler) { m_unwind_plan_non_call_site_sp.reset (new UnwindPlan (lldb::eRegisterKindGeneric)); - if (!assembly_profiler->GetNonCallSiteUnwindPlanFromAssembly (m_range, thread, *m_unwind_plan_non_call_site_sp)) + if (!m_assembly_profiler->GetNonCallSiteUnwindPlanFromAssembly (m_range, thread, *m_unwind_plan_non_call_site_sp)) m_unwind_plan_non_call_site_sp.reset(); } } @@ -143,12 +143,10 @@ FuncUnwinders::GetUnwindPlanFastUnwind (Thread& thread) if (m_tried_unwind_fast == false && m_unwind_plan_fast_sp.get() == nullptr) { m_tried_unwind_fast = true; - Mutex::Locker assembly_locker; - UnwindAssemblySP assembly_profiler = m_unwind_table.GetUnwindAssemblyProfiler (assembly_locker); - if (assembly_profiler) + if (m_assembly_profiler) { m_unwind_plan_fast_sp.reset (new UnwindPlan (lldb::eRegisterKindGeneric)); - if (!assembly_profiler->GetFastUnwindPlan (m_range, thread, *m_unwind_plan_fast_sp)) + if (!m_assembly_profiler->GetFastUnwindPlan (m_range, thread, *m_unwind_plan_fast_sp)) m_unwind_plan_fast_sp.reset(); } } @@ -234,10 +232,8 @@ FuncUnwinders::GetFirstNonPrologueInsn (Target& target) if (m_first_non_prologue_insn.IsValid()) return m_first_non_prologue_insn; ExecutionContext exe_ctx (target.shared_from_this(), false); - Mutex::Locker assembly_locker; - UnwindAssemblySP assembly_profiler = m_unwind_table.GetUnwindAssemblyProfiler (assembly_locker); - if (assembly_profiler) - assembly_profiler->FirstNonPrologueInsn (m_range, exe_ctx, m_first_non_prologue_insn); + if (m_assembly_profiler) + m_assembly_profiler->FirstNonPrologueInsn (m_range, exe_ctx, m_first_non_prologue_insn); return m_first_non_prologue_insn; } diff --git a/lldb/source/Symbol/UnwindTable.cpp b/lldb/source/Symbol/UnwindTable.cpp index bbcc821cee8..60d919e4b3b 100644 --- a/lldb/source/Symbol/UnwindTable.cpp +++ b/lldb/source/Symbol/UnwindTable.cpp @@ -31,7 +31,6 @@ UnwindTable::UnwindTable (ObjectFile& objfile) : m_unwinds (), m_initialized (false), m_assembly_profiler (nullptr), - m_assembly_mutex (), m_eh_frame (nullptr) { } @@ -101,7 +100,7 @@ UnwindTable::GetFuncUnwindersContainingAddress (const Address& addr, SymbolConte } } - FuncUnwindersSP func_unwinder_sp(new FuncUnwinders(*this, range)); + FuncUnwindersSP func_unwinder_sp(new FuncUnwinders(*this, m_assembly_profiler, range)); m_unwinds.insert (insert_pos, std::make_pair(range.GetBaseAddress().GetFileAddress(), func_unwinder_sp)); // StreamFile s(stdout, false); // Dump (s); @@ -128,7 +127,7 @@ UnwindTable::GetUncachedFuncUnwindersContainingAddress (const Address& addr, Sym } } - FuncUnwindersSP func_unwinder_sp(new FuncUnwinders(*this, range)); + FuncUnwindersSP func_unwinder_sp(new FuncUnwinders(*this, m_assembly_profiler, range)); return func_unwinder_sp; } @@ -152,10 +151,3 @@ UnwindTable::GetEHFrameInfo () Initialize(); return m_eh_frame; } - -lldb::UnwindAssemblySP -UnwindTable::GetUnwindAssemblyProfiler (lldb_private::Mutex::Locker &locker) -{ - locker.Lock (m_assembly_mutex); - return m_assembly_profiler; -} |