diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2022-03-20 11:40:34 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2022-06-04 11:58:51 +0000 |
| commit | 4b6eb0e63c698094db5506763df44cc83c19f643 (patch) | |
| tree | f1d30b8c10bc6db323b91538745ae8ab8b593910 /contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp | |
| parent | 76886853f03395abb680824bcc74e98f83bd477a (diff) | |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp b/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp index 12a501f7f98c..64e5090e4c53 100644 --- a/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp +++ b/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp @@ -29,7 +29,6 @@ char SymbolsNotFound::ID = 0; char SymbolsCouldNotBeRemoved::ID = 0; char MissingSymbolDefinitions::ID = 0; char UnexpectedSymbolDefinitions::ID = 0; -char Task::ID = 0; char MaterializationTask::ID = 0; RegisterDependenciesFunction NoDependenciesToRegister = @@ -90,14 +89,17 @@ void FailedToMaterialize::log(raw_ostream &OS) const { OS << "Failed to materialize symbols: " << *Symbols; } -SymbolsNotFound::SymbolsNotFound(SymbolNameSet Symbols) { +SymbolsNotFound::SymbolsNotFound(std::shared_ptr<SymbolStringPool> SSP, + SymbolNameSet Symbols) + : SSP(std::move(SSP)) { for (auto &Sym : Symbols) this->Symbols.push_back(Sym); assert(!this->Symbols.empty() && "Can not fail to resolve an empty set"); } -SymbolsNotFound::SymbolsNotFound(SymbolNameVector Symbols) - : Symbols(std::move(Symbols)) { +SymbolsNotFound::SymbolsNotFound(std::shared_ptr<SymbolStringPool> SSP, + SymbolNameVector Symbols) + : SSP(std::move(SSP)), Symbols(std::move(Symbols)) { assert(!this->Symbols.empty() && "Can not fail to resolve an empty set"); } @@ -109,8 +111,9 @@ void SymbolsNotFound::log(raw_ostream &OS) const { OS << "Symbols not found: " << Symbols; } -SymbolsCouldNotBeRemoved::SymbolsCouldNotBeRemoved(SymbolNameSet Symbols) - : Symbols(std::move(Symbols)) { +SymbolsCouldNotBeRemoved::SymbolsCouldNotBeRemoved( + std::shared_ptr<SymbolStringPool> SSP, SymbolNameSet Symbols) + : SSP(std::move(SSP)), Symbols(std::move(Symbols)) { assert(!this->Symbols.empty() && "Can not fail to resolve an empty set"); } @@ -1333,11 +1336,13 @@ Error JITDylib::remove(const SymbolNameSet &Names) { // If any of the symbols are not defined, return an error. if (!Missing.empty()) - return make_error<SymbolsNotFound>(std::move(Missing)); + return make_error<SymbolsNotFound>(ES.getSymbolStringPool(), + std::move(Missing)); // If any of the symbols are currently materializing, return an error. if (!Materializing.empty()) - return make_error<SymbolsCouldNotBeRemoved>(std::move(Materializing)); + return make_error<SymbolsCouldNotBeRemoved>(ES.getSymbolStringPool(), + std::move(Materializing)); // Remove the symbols. for (auto &SymbolMaterializerItrPair : SymbolsToRemove) { @@ -1793,8 +1798,6 @@ void Platform::lookupInitSymbolsAsync( } } -void Task::anchor() {} - void MaterializationTask::printDescription(raw_ostream &OS) { OS << "Materialization task: " << MU->getName() << " in " << MR->getTargetJITDylib().getName(); @@ -2086,8 +2089,8 @@ Error ExecutionSession::registerJITDispatchHandlers( } void ExecutionSession::runJITDispatchHandler( - ExecutorProcessControl::SendResultFunction SendResult, - JITTargetAddress HandlerFnTagAddr, ArrayRef<char> ArgBuffer) { + SendResultFunction SendResult, JITTargetAddress HandlerFnTagAddr, + ArrayRef<char> ArgBuffer) { std::shared_ptr<JITDispatchHandlerFunction> F; { @@ -2234,7 +2237,8 @@ Error ExecutionSession::IL_updateCandidatesFor( // weakly referenced" specific error here to reduce confusion. if (SymI->second.getFlags().hasMaterializationSideEffectsOnly() && SymLookupFlags != SymbolLookupFlags::WeaklyReferencedSymbol) - return make_error<SymbolsNotFound>(SymbolNameVector({Name})); + return make_error<SymbolsNotFound>(getSymbolStringPool(), + SymbolNameVector({Name})); // If we matched against this symbol but it is in the error state // then bail out and treat it as a failure to materialize. @@ -2422,7 +2426,7 @@ void ExecutionSession::OL_applyQueryPhase1( } else { LLVM_DEBUG(dbgs() << "Phase 1 failed with unresolved symbols.\n"); IPLS->fail(make_error<SymbolsNotFound>( - IPLS->DefGeneratorCandidates.getSymbolNames())); + getSymbolStringPool(), IPLS->DefGeneratorCandidates.getSymbolNames())); } } @@ -2492,7 +2496,8 @@ void ExecutionSession::OL_completeLookup( dbgs() << "error: " "required, but symbol is has-side-effects-only\n"; }); - return make_error<SymbolsNotFound>(SymbolNameVector({Name})); + return make_error<SymbolsNotFound>(getSymbolStringPool(), + SymbolNameVector({Name})); } // If we matched against this symbol but it is in the error state @@ -2594,7 +2599,7 @@ void ExecutionSession::OL_completeLookup( } } - LLVM_DEBUG(dbgs() << "Stripping unmatched weakly-refererced symbols\n"); + LLVM_DEBUG(dbgs() << "Stripping unmatched weakly-referenced symbols\n"); IPLS->LookupSet.forEachWithRemoval( [&](const SymbolStringPtr &Name, SymbolLookupFlags SymLookupFlags) { if (SymLookupFlags == SymbolLookupFlags::WeaklyReferencedSymbol) { @@ -2606,7 +2611,8 @@ void ExecutionSession::OL_completeLookup( if (!IPLS->LookupSet.empty()) { LLVM_DEBUG(dbgs() << "Failing due to unresolved symbols\n"); - return make_error<SymbolsNotFound>(IPLS->LookupSet.getSymbolNames()); + return make_error<SymbolsNotFound>(getSymbolStringPool(), + IPLS->LookupSet.getSymbolNames()); } // Record whether the query completed. @@ -2733,7 +2739,8 @@ void ExecutionSession::OL_completeLookupFlags( if (!IPLS->LookupSet.empty()) { LLVM_DEBUG(dbgs() << "Failing due to unresolved symbols\n"); - return make_error<SymbolsNotFound>(IPLS->LookupSet.getSymbolNames()); + return make_error<SymbolsNotFound>(getSymbolStringPool(), + IPLS->LookupSet.getSymbolNames()); } LLVM_DEBUG(dbgs() << "Succeded, result = " << Result << "\n"); @@ -2911,6 +2918,7 @@ void ExecutionSession::dumpDispatchInfo(Task &T) { runSessionLocked([&]() { dbgs() << "Dispatching: "; T.printDescription(dbgs()); + dbgs() << "\n"; }); } #endif // NDEBUG |
