void Symtab::AppendSymbolNamesToMap(const IndexCollection &indexes, bool add_demangled, bool add_mangled, NameToIndexMap &name_to_index_map) const { if (add_demangled || add_mangled) { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, "%s", LLVM_PRETTY_FUNCTION); std::lock_guard<std::recursive_mutex> guard(m_mutex); // Create the name index vector to be able to quickly search by name NameToIndexMap::Entry entry; const size_t num_indexes = indexes.size(); for (size_t i = 0; i < num_indexes; ++i) { entry.value = indexes[i]; assert(i < m_symbols.size()); const Symbol *symbol = &m_symbols[entry.value]; const Mangled &mangled = symbol->GetMangled(); if (add_demangled) { entry.cstring = mangled.GetDemangledName(symbol->GetLanguage()); if (entry.cstring) name_to_index_map.Append(entry); } if (add_mangled) { entry.cstring = mangled.GetMangledName(); if (entry.cstring) name_to_index_map.Append(entry); } } } }
void Symtab::AppendSymbolNamesToMap (const IndexCollection &indexes, bool add_demangled, bool add_mangled, NameToIndexMap &name_to_index_map) const { if (add_demangled || add_mangled) { Timer scoped_timer (__PRETTY_FUNCTION__, "%s", __PRETTY_FUNCTION__); Mutex::Locker locker (m_mutex); // Create the name index vector to be able to quickly search by name NameToIndexMap::Entry entry; const size_t num_indexes = indexes.size(); for (size_t i=0; i<num_indexes; ++i) { entry.value = indexes[i]; assert (i < m_symbols.size()); const Symbol *symbol = &m_symbols[entry.value]; const Mangled &mangled = symbol->GetMangled(); if (add_demangled) { entry.cstring = mangled.GetDemangledName().GetCString(); if (entry.cstring && entry.cstring[0]) name_to_index_map.Append (entry); } if (add_mangled) { entry.cstring = mangled.GetMangledName().GetCString(); if (entry.cstring && entry.cstring[0]) name_to_index_map.Append (entry); } } } }