Fix up the code in the FuncUnwinders class that
authorJason Molenda <jmolenda@apple.com>
Tue, 18 Nov 2014 05:57:42 +0000 (05:57 +0000)
committerJason Molenda <jmolenda@apple.com>
Tue, 18 Nov 2014 05:57:42 +0000 (05:57 +0000)
retrieves the personality routine addr and the
LSDA addr.  Don't bother checking with the
"non-call site" unwind plan - this kind of
information is only going to come from the
call site unwind plan.

llvm-svn: 222226

lldb/include/lldb/Symbol/FuncUnwinders.h
lldb/source/Symbol/FuncUnwinders.cpp

index a3df7fb..c5a0808 100644 (file)
@@ -73,14 +73,14 @@ public:
     // If any of the UnwindPlans have the address of the LSDA region for this function,
     // this will return it.  
     Address
-    GetLSDAAddress () const;
+    GetLSDAAddress ();
 
     // A function may have a Personality Routine associated with it -- used in the
     // processing of throwing an exception.  If any of the UnwindPlans have the
     // address of the personality routine, this will return it.  Read the target-pointer
     // at this address to get the personality function address.
     Address
-    GetPersonalityRoutinePtrAddress () const;
+    GetPersonalityRoutinePtrAddress ();
 
 private:
 
index 2c47979..2075a21 100644 (file)
@@ -211,16 +211,16 @@ FuncUnwinders::GetUnwindAssemblyProfiler ()
 }
 
 Address
-FuncUnwinders::GetLSDAAddress () const
+FuncUnwinders::GetLSDAAddress ()
 {
     Address lsda_addr;
-    if (m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid())
-    {
-        lsda_addr = m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid();
-    }
-    else if (m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid())
+    Mutex::Locker locker (m_mutex);
+
+    GetUnwindPlanAtCallSite (-1);
+
+    if (m_unwind_plan_call_site_sp && m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid())
     {
-        lsda_addr = m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid();
+        lsda_addr = m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid();
     }
 
     return lsda_addr;
@@ -228,16 +228,16 @@ FuncUnwinders::GetLSDAAddress () const
 
 
 Address
-FuncUnwinders::GetPersonalityRoutinePtrAddress () const
+FuncUnwinders::GetPersonalityRoutinePtrAddress ()
 {
     Address personality_addr;
-    if (m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid())
-    {
-        personality_addr = m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid();
-    }
-    else if (m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid())
+    Mutex::Locker locker (m_mutex);
+
+    GetUnwindPlanAtCallSite (-1);
+
+    if (m_unwind_plan_call_site_sp && m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid())
     {
-        personality_addr = m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid();
+        personality_addr = m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid();
     }
 
     return personality_addr;