summaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/Orc/Legacy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ExecutionEngine/Orc/Legacy.cpp')
-rw-r--r--lib/ExecutionEngine/Orc/Legacy.cpp58
1 files changed, 29 insertions, 29 deletions
diff --git a/lib/ExecutionEngine/Orc/Legacy.cpp b/lib/ExecutionEngine/Orc/Legacy.cpp
index 18be9a042f7f0..ddb72544b770b 100644
--- a/lib/ExecutionEngine/Orc/Legacy.cpp
+++ b/lib/ExecutionEngine/Orc/Legacy.cpp
@@ -18,47 +18,47 @@ JITSymbolResolverAdapter::JITSymbolResolverAdapter(
ExecutionSession &ES, SymbolResolver &R, MaterializationResponsibility *MR)
: ES(ES), R(R), MR(MR) {}
-Expected<JITSymbolResolverAdapter::LookupResult>
-JITSymbolResolverAdapter::lookup(const LookupSet &Symbols) {
+void JITSymbolResolverAdapter::lookup(const LookupSet &Symbols,
+ OnResolvedFunction OnResolved) {
SymbolNameSet InternedSymbols;
for (auto &S : Symbols)
- InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
+ InternedSymbols.insert(ES.intern(S));
- auto LookupFn = [&, this](std::shared_ptr<AsynchronousSymbolQuery> Q,
- SymbolNameSet Unresolved) {
- return R.lookup(std::move(Q), std::move(Unresolved));
- };
+ auto OnResolvedWithUnwrap = [OnResolved](Expected<SymbolMap> InternedResult) {
+ if (!InternedResult) {
+ OnResolved(InternedResult.takeError());
+ return;
+ }
- auto RegisterDependencies = [&](const SymbolDependenceMap &Deps) {
- if (MR)
- MR->addDependenciesForAll(Deps);
+ LookupResult Result;
+ for (auto &KV : *InternedResult)
+ Result[*KV.first] = std::move(KV.second);
+ OnResolved(Result);
};
- auto InternedResult =
- ES.legacyLookup(ES, std::move(LookupFn), std::move(InternedSymbols),
- false, RegisterDependencies);
-
- if (!InternedResult)
- return InternedResult.takeError();
+ auto Q = std::make_shared<AsynchronousSymbolQuery>(
+ InternedSymbols, OnResolvedWithUnwrap,
+ [this](Error Err) { ES.reportError(std::move(Err)); });
- JITSymbolResolver::LookupResult Result;
- for (auto &KV : *InternedResult)
- Result[*KV.first] = KV.second;
-
- return Result;
+ auto Unresolved = R.lookup(Q, InternedSymbols);
+ if (Unresolved.empty()) {
+ if (MR)
+ MR->addDependenciesForAll(Q->QueryRegistrations);
+ } else
+ ES.legacyFailQuery(*Q, make_error<SymbolsNotFound>(std::move(Unresolved)));
}
-Expected<JITSymbolResolverAdapter::LookupFlagsResult>
-JITSymbolResolverAdapter::lookupFlags(const LookupSet &Symbols) {
+Expected<JITSymbolResolverAdapter::LookupSet>
+JITSymbolResolverAdapter::getResponsibilitySet(const LookupSet &Symbols) {
SymbolNameSet InternedSymbols;
for (auto &S : Symbols)
- InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
+ InternedSymbols.insert(ES.intern(S));
- SymbolFlagsMap SymbolFlags = R.lookupFlags(InternedSymbols);
- LookupFlagsResult Result;
- for (auto &KV : SymbolFlags) {
- ResolvedStrings.insert(KV.first);
- Result[*KV.first] = KV.second;
+ auto InternedResult = R.getResponsibilitySet(InternedSymbols);
+ LookupSet Result;
+ for (auto &S : InternedResult) {
+ ResolvedStrings.insert(S);
+ Result.insert(*S);
}
return Result;