//===------- Legacy.cpp - Adapters for ExecutionEngine API interop --------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/ExecutionEngine/Orc/Legacy.h" namespace llvm { namespace orc { void SymbolResolver::anchor() {} JITSymbolResolverAdapter::JITSymbolResolverAdapter( ExecutionSession &ES, SymbolResolver &R, MaterializationResponsibility *MR) : ES(ES), R(R), MR(MR) {} Expected<JITSymbolResolverAdapter::LookupResult> JITSymbolResolverAdapter::lookup(const LookupSet &Symbols) { SymbolNameSet InternedSymbols; for (auto &S : Symbols) InternedSymbols.insert(ES.getSymbolStringPool().intern(S)); auto LookupFn = [&, this](std::shared_ptr<AsynchronousSymbolQuery> Q, SymbolNameSet Unresolved) { return R.lookup(std::move(Q), std::move(Unresolved)); }; auto RegisterDependencies = [&](const SymbolDependenceMap &Deps) { if (MR) MR->addDependenciesForAll(Deps); }; auto InternedResult = ES.legacyLookup(ES, std::move(LookupFn), std::move(InternedSymbols), false, RegisterDependencies); if (!InternedResult) return InternedResult.takeError(); JITSymbolResolver::LookupResult Result; for (auto &KV : *InternedResult) Result[*KV.first] = KV.second; return Result; } Expected<JITSymbolResolverAdapter::LookupFlagsResult> JITSymbolResolverAdapter::lookupFlags(const LookupSet &Symbols) { SymbolNameSet InternedSymbols; for (auto &S : Symbols) InternedSymbols.insert(ES.getSymbolStringPool().intern(S)); SymbolFlagsMap SymbolFlags = R.lookupFlags(InternedSymbols); LookupFlagsResult Result; for (auto &KV : SymbolFlags) { ResolvedStrings.insert(KV.first); Result[*KV.first] = KV.second; } return Result; } } // End namespace orc. } // End namespace llvm.