diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/Core.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/Core.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp index c99c8ec120f..232c880b9dd 100644 --- a/llvm/lib/ExecutionEngine/Orc/Core.cpp +++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp @@ -287,6 +287,26 @@ void VSO::finalize(SymbolNameSet SymbolsToFinalize) { } } +VSO::LookupFlagsResult VSO::lookupFlags(SymbolNameSet Names) { + SymbolFlagsMap FlagsFound; + + for (SymbolNameSet::iterator I = Names.begin(), E = Names.end(); I != E;) { + auto Tmp = I++; + auto SymI = Symbols.find(*Tmp); + + // If the symbol isn't in this dylib then just continue. + if (SymI == Symbols.end()) + continue; + + Names.erase(Tmp); + + FlagsFound[SymI->first] = + JITSymbolFlags::stripTransientFlags(SymI->second.getFlags()); + } + + return {std::move(FlagsFound), std::move(Names)}; +} + VSO::LookupResult VSO::lookup(AsynchronousSymbolQuery &Query, SymbolNameSet Names) { SourceWorkMap MaterializationWork; |