Fix up the code in the FuncUnwinders class that

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
This commit is contained in:
Jason Molenda 2014-11-18 05:57:42 +00:00
parent b2115cf81a
commit ae3e40dd61
2 changed files with 16 additions and 16 deletions

View 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:

View 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())
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();
}
else if (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())
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();
}
else if (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;