diff options
author | Lang Hames <lhames@gmail.com> | 2018-05-21 21:11:21 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-05-21 21:11:21 +0000 |
commit | add9b6805c7cd593ab7290275e6d9c77fce454f4 (patch) | |
tree | 7edf640681feabaafda464394a5567c153133a9c | |
parent | 1cf9987f6e9c25f1ddfa534b0165c7df6cd081d2 (diff) | |
download | bcm5719-llvm-add9b6805c7cd593ab7290275e6d9c77fce454f4.tar.gz bcm5719-llvm-add9b6805c7cd593ab7290275e6d9c77fce454f4.zip |
[ORC] Remove the optional MaterializationResponsibility argument from lookup.
The lookup function provides blocking symbol resolution for JIT clients (not
layers themselves) so it does not need to track symbol dependencies via a
MaterializationResponsibility.
llvm-svn: 332897
-rw-r--r-- | llvm/include/llvm/ExecutionEngine/Orc/Core.h | 12 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/Core.cpp | 26 | ||||
-rw-r--r-- | llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp | 4 |
3 files changed, 14 insertions, 28 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Core.h b/llvm/include/llvm/ExecutionEngine/Orc/Core.h index f84b43a82a6..d06e5bf9430 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/Core.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/Core.h @@ -614,19 +614,11 @@ private: /// VSOs will be searched in order and no VSO pointer may be null. /// All symbols must be found within the given VSOs or an error /// will be returned. -/// -/// If this lookup is being performed on behalf of a -/// MaterializationResponsibility then it must be passed in as R -/// (in order to record the symbol dependencies). -/// If this lookup is not being performed on behalf of a -/// MaterializationResponsibility then R should be left null. -Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names, - MaterializationResponsibility *R); +Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names); /// Look up a symbol by searching a list of VSOs. Expected<JITEvaluatedSymbol> lookup(const std::vector<VSO *> VSOs, - SymbolStringPtr Name, - MaterializationResponsibility *R); + SymbolStringPtr Name); } // End namespace orc } // End namespace llvm diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp index 9aeeccb0bc9..ded8bddb468 100644 --- a/llvm/lib/ExecutionEngine/Orc/Core.cpp +++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp @@ -843,8 +843,7 @@ VSO &ExecutionSession::createVSO(std::string Name) { }); } -Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names, - MaterializationResponsibility *R) { +Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names) { #if LLVM_ENABLE_THREADS // In the threaded case we use promises to return the results. std::promise<SymbolMap> PromisedResult; @@ -854,11 +853,9 @@ Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names, Error ReadyError = Error::success(); auto OnResolve = [&](Expected<AsynchronousSymbolQuery::ResolutionResult> Result) { - if (Result) { - if (R) - R->addDependencies(Result->Dependencies); + if (Result) PromisedResult.set_value(std::move(Result->Symbols)); - } else { + else { { ErrorAsOutParameter _(&ResolutionError); std::lock_guard<std::mutex> Lock(ErrMutex); @@ -880,14 +877,12 @@ Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names, Error ResolutionError = Error::success(); Error ReadyError = Error::success(); - auto OnResolve = [&](Expected<AsynchronousSymbolQuery::ResolutionResult> RR) { + auto OnResolve = [&](Expected<AsynchronousSymbolQuery::ResolutionResult> R) { ErrorAsOutParameter _(&ResolutionError); - if (RR) { - if (R) - R->addDependencies(RR->Dependencies); - Result = std::move(RR->Symbols); - } else - ResolutionError = RR.takeError(); + if (R) + Result = std::move(R->Symbols); + else + ResolutionError = R.takeError(); }; auto OnReady = [&](Error Err) { ErrorAsOutParameter _(&ReadyError); @@ -949,10 +944,9 @@ Expected<SymbolMap> lookup(const std::vector<VSO *> &VSOs, SymbolNameSet Names, /// Look up a symbol by searching a list of VSOs. Expected<JITEvaluatedSymbol> lookup(const std::vector<VSO *> VSOs, - SymbolStringPtr Name, - MaterializationResponsibility *R) { + SymbolStringPtr Name) { SymbolNameSet Names({Name}); - if (auto ResultMap = lookup(VSOs, std::move(Names), R)) { + if (auto ResultMap = lookup(VSOs, std::move(Names))) { assert(ResultMap->size() == 1 && "Unexpected number of results"); assert(ResultMap->count(Name) && "Missing result for symbol"); return std::move(ResultMap->begin()->second); diff --git a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp index 976185bba2f..1e2a7caa60f 100644 --- a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp @@ -641,7 +641,7 @@ TEST(CoreAPIsTest, TestLookupWithUnthreadedMaterialization) { cantFail(V.define(MU)); - auto FooLookupResult = cantFail(lookup({&V}, Foo, nullptr)); + auto FooLookupResult = cantFail(lookup({&V}, Foo)); EXPECT_EQ(FooLookupResult.getAddress(), FooSym.getAddress()) << "lookup returned an incorrect address"; @@ -668,7 +668,7 @@ TEST(CoreAPIsTest, TestLookupWithThreadedMaterialization) { auto &V = ES.createVSO("V"); cantFail(V.define(absoluteSymbols({{Foo, FooSym}}))); - auto FooLookupResult = cantFail(lookup({&V}, Foo, nullptr)); + auto FooLookupResult = cantFail(lookup({&V}, Foo)); EXPECT_EQ(FooLookupResult.getAddress(), FooSym.getAddress()) << "lookup returned an incorrect address"; |