<rdar://problem/10212450>
Don't parse function types all the time, only parse them lazily.
llvm-svn: 140842
diff --git a/lldb/source/Symbol/Function.cpp b/lldb/source/Symbol/Function.cpp
index 85c4839..f0b57f9 100644
--- a/lldb/source/Symbol/Function.cpp
+++ b/lldb/source/Symbol/Function.cpp
@@ -449,6 +449,27 @@
Type*
Function::GetType()
{
+ if (m_type == NULL)
+ {
+ SymbolContext sc;
+
+ CalculateSymbolContext (&sc);
+
+ if (!sc.module_sp)
+ return NULL;
+
+ SymbolVendor *sym_vendor = sc.module_sp->GetSymbolVendor();
+
+ if (sym_vendor == NULL)
+ return NULL;
+
+ SymbolFile *sym_file = sym_vendor->GetSymbolFile();
+
+ if (sym_file == NULL)
+ return NULL;
+
+ return sym_file->ResolveTypeUID(m_type_uid);
+ }
return m_type;
}