diff options
Diffstat (limited to 'lib/ExecutionEngine/Orc/Legacy.cpp')
| -rw-r--r-- | lib/ExecutionEngine/Orc/Legacy.cpp | 58 | 
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;  | 
