diff options
author | Lang Hames <lhames@gmail.com> | 2018-09-25 04:54:03 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-09-25 04:54:03 +0000 |
commit | 99bfa95ae3d03bd4a822377e21b7a4d22452c3a5 (patch) | |
tree | 3c67f1e46fa1c18825c1b9b655f498cf4e1a292f /llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp | |
parent | db02d3d4b38e513593dbe562f94ecb6fad345314 (diff) | |
download | bcm5719-llvm-99bfa95ae3d03bd4a822377e21b7a4d22452c3a5.tar.gz bcm5719-llvm-99bfa95ae3d03bd4a822377e21b7a4d22452c3a5.zip |
Revert "[ORC] Switch to asynchronous resolution in JITSymbolResolver."
This reverts commit r342939.
MSVC's promise/future implementation does not like types that are not default
constructible. Reverting while I figure out a solution.
llvm-svn: 342941
Diffstat (limited to 'llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp index b6ef8ad9675..d865216cf31 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp @@ -62,42 +62,34 @@ llvm::ARMJITSymbolFlags::fromObjectSymbol(const object::SymbolRef &Symbol) { /// Performs lookup by, for each symbol, first calling /// findSymbolInLogicalDylib and if that fails calling /// findSymbol. -void LegacyJITSymbolResolver::lookup(const LookupSet &Symbols, - OnResolvedFunction OnResolved) { +Expected<JITSymbolResolver::LookupResult> +LegacyJITSymbolResolver::lookup(const LookupSet &Symbols) { JITSymbolResolver::LookupResult Result; for (auto &Symbol : Symbols) { std::string SymName = Symbol.str(); if (auto Sym = findSymbolInLogicalDylib(SymName)) { if (auto AddrOrErr = Sym.getAddress()) Result[Symbol] = JITEvaluatedSymbol(*AddrOrErr, Sym.getFlags()); - else { - OnResolved(AddrOrErr.takeError()); - return; - } - } else if (auto Err = Sym.takeError()) { - OnResolved(std::move(Err)); - return; - } else { + else + return AddrOrErr.takeError(); + } else if (auto Err = Sym.takeError()) + return std::move(Err); + else { // findSymbolInLogicalDylib failed. Lets try findSymbol. if (auto Sym = findSymbol(SymName)) { if (auto AddrOrErr = Sym.getAddress()) Result[Symbol] = JITEvaluatedSymbol(*AddrOrErr, Sym.getFlags()); - else { - OnResolved(AddrOrErr.takeError()); - return; - } - } else if (auto Err = Sym.takeError()) { - OnResolved(std::move(Err)); - return; - } else { - OnResolved(make_error<StringError>("Symbol not found: " + Symbol, - inconvertibleErrorCode())); - return; - } + else + return AddrOrErr.takeError(); + } else if (auto Err = Sym.takeError()) + return std::move(Err); + else + return make_error<StringError>("Symbol not found: " + Symbol, + inconvertibleErrorCode()); } } - OnResolved(std::move(Result)); + return std::move(Result); } /// Performs flags lookup by calling findSymbolInLogicalDylib and |