diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 | 
| commit | f3fbd1c0586ff6ec7895991e6c28f61a503c36a8 (patch) | |
| tree | 48d008fd3df8c0e73271a4b18474e0aac6dbfe33 /source/Symbol/CompileUnit.cpp | |
| parent | 2fc5d2d1dfaf623ce4e24cd8590565902f8c557c (diff) | |
Notes
Diffstat (limited to 'source/Symbol/CompileUnit.cpp')
| -rw-r--r-- | source/Symbol/CompileUnit.cpp | 63 | 
1 files changed, 39 insertions, 24 deletions
diff --git a/source/Symbol/CompileUnit.cpp b/source/Symbol/CompileUnit.cpp index 50eda8806375..259a450b7165 100644 --- a/source/Symbol/CompileUnit.cpp +++ b/source/Symbol/CompileUnit.cpp @@ -17,36 +17,40 @@  using namespace lldb;  using namespace lldb_private; -CompileUnit::CompileUnit (const lldb::ModuleSP &module_sp, void *user_data, const char *pathname, const lldb::user_id_t cu_sym_id, lldb::LanguageType language, bool is_optimized) : -    ModuleChild(module_sp), -    FileSpec (pathname, false), -    UserID(cu_sym_id), -    m_user_data (user_data), -    m_language (language), -    m_flags (0), -    m_functions (), -    m_support_files (), -    m_line_table_ap (), -    m_variables(), -    m_is_optimized (is_optimized) +CompileUnit::CompileUnit(const lldb::ModuleSP &module_sp, void *user_data, const char *pathname, +                         const lldb::user_id_t cu_sym_id, lldb::LanguageType language, +                         lldb_private::LazyBool is_optimized) +    : ModuleChild(module_sp), +      FileSpec(pathname, false), +      UserID(cu_sym_id), +      m_user_data(user_data), +      m_language(language), +      m_flags(0), +      m_functions(), +      m_support_files(), +      m_line_table_ap(), +      m_variables(), +      m_is_optimized(is_optimized)  {      if (language != eLanguageTypeUnknown)          m_flags.Set(flagsParsedLanguage);      assert(module_sp);  } -CompileUnit::CompileUnit (const lldb::ModuleSP &module_sp, void *user_data, const FileSpec &fspec, const lldb::user_id_t cu_sym_id, lldb::LanguageType language, bool is_optimized) : -    ModuleChild(module_sp), -    FileSpec (fspec), -    UserID(cu_sym_id), -    m_user_data (user_data), -    m_language (language), -    m_flags (0), -    m_functions (), -    m_support_files (), -    m_line_table_ap (), -    m_variables(), -    m_is_optimized (is_optimized) +CompileUnit::CompileUnit(const lldb::ModuleSP &module_sp, void *user_data, const FileSpec &fspec, +                         const lldb::user_id_t cu_sym_id, lldb::LanguageType language, +                         lldb_private::LazyBool is_optimized) +    : ModuleChild(module_sp), +      FileSpec(fspec), +      UserID(cu_sym_id), +      m_user_data(user_data), +      m_language(language), +      m_flags(0), +      m_functions(), +      m_support_files(), +      m_line_table_ap(), +      m_variables(), +      m_is_optimized(is_optimized)  {      if (language != eLanguageTypeUnknown)          m_flags.Set(flagsParsedLanguage); @@ -468,6 +472,17 @@ CompileUnit::ResolveSymbolContext  bool  CompileUnit::GetIsOptimized ()  { +    if (m_is_optimized == eLazyBoolCalculate) +    { +        m_is_optimized = eLazyBoolNo; +        if (SymbolVendor *symbol_vendor = GetModule()->GetSymbolVendor()) +        { +            SymbolContext sc; +            CalculateSymbolContext(&sc); +            if (symbol_vendor->ParseCompileUnitIsOptimized(sc)) +                m_is_optimized = eLazyBoolYes; +        } +    }      return m_is_optimized;  }  | 
