mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-24 12:50:42 +00:00
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332897 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e0b0d5fab7
commit
1b804fe0ec
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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";
|
||||
|
Loading…
x
Reference in New Issue
Block a user