mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
Provide a mechanism to do some pre-loading of symbols up front.
Loading a shared library can require a large amount of work; rather than do that serially for each library, this patch will allow parallelization of the symbols and debug info name indexes. From scott.smith@purestorage.com https://reviews.llvm.org/D32598 llvm-svn: 301609
This commit is contained in:
@@ -1432,6 +1432,22 @@ size_t Module::FindSymbolsMatchingRegExAndType(const RegularExpression ®ex,
|
||||
return sc_list.GetSize() - initial_size;
|
||||
}
|
||||
|
||||
void Module::PreloadSymbols() {
|
||||
std::lock_guard<std::recursive_mutex> guard(m_mutex);
|
||||
SymbolVendor * sym_vendor = GetSymbolVendor();
|
||||
if (!sym_vendor) {
|
||||
return;
|
||||
}
|
||||
// Prime the symbol file first, since it adds symbols to the symbol table.
|
||||
if (SymbolFile *symbol_file = sym_vendor->GetSymbolFile()) {
|
||||
symbol_file->PreloadSymbols();
|
||||
}
|
||||
// Now we can prime the symbol table.
|
||||
if (Symtab * symtab = sym_vendor->GetSymtab()) {
|
||||
symtab->PreloadSymbols();
|
||||
}
|
||||
}
|
||||
|
||||
void Module::SetSymbolFileFileSpec(const FileSpec &file) {
|
||||
if (!file.Exists())
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user