// 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:
}
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;
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;