diff options
author | Lang Hames <lhames@gmail.com> | 2017-07-07 02:59:13 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2017-07-07 02:59:13 +0000 |
commit | 4ce98662e7d109b4579c35945345db685ae5b3fb (patch) | |
tree | 4538ca3c0131f3275286aac4347bf712ed0068e7 /llvm/lib/ExecutionEngine/Orc/OrcError.cpp | |
parent | b909f11a319ae62e683d1f9d82e28a05b360b8ae (diff) | |
download | llvm-4ce98662e7d109b4579c35945345db685ae5b3fb.zip llvm-4ce98662e7d109b4579c35945345db685ae5b3fb.tar.gz llvm-4ce98662e7d109b4579c35945345db685ae5b3fb.tar.bz2 |
[ORC] Errorize the ORC APIs.
This patch updates the ORC layers and utilities to return and propagate
llvm::Errors where appropriate. This is necessary to allow ORC to safely handle
error cases in cross-process and remote JITing.
llvm-svn: 307350
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcError.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcError.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcError.cpp b/llvm/lib/ExecutionEngine/Orc/OrcError.cpp index 9e70c4a..df2d320 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcError.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcError.cpp @@ -45,6 +45,8 @@ public: return "Could not negotiate RPC function"; case OrcErrorCode::RPCResponseAbandoned: return "RPC response abandoned"; + case OrcErrorCode::JITSymbolNotFound: + return "JIT symbol not found"; case OrcErrorCode::UnexpectedRPCCall: return "Unexpected RPC call"; case OrcErrorCode::UnexpectedRPCResponse: @@ -63,10 +65,29 @@ static ManagedStatic<OrcErrorCategory> OrcErrCat; namespace llvm { namespace orc { +char JITSymbolNotFound::ID = 0; + std::error_code orcError(OrcErrorCode ErrCode) { typedef std::underlying_type<OrcErrorCode>::type UT; return std::error_code(static_cast<UT>(ErrCode), *OrcErrCat); } +JITSymbolNotFound::JITSymbolNotFound(std::string SymbolName) + : SymbolName(std::move(SymbolName)) {} + +std::error_code JITSymbolNotFound::convertToErrorCode() const { + typedef std::underlying_type<OrcErrorCode>::type UT; + return std::error_code(static_cast<UT>(OrcErrorCode::JITSymbolNotFound), + *OrcErrCat); +} + +void JITSymbolNotFound::log(raw_ostream &OS) const { + OS << "Could not find symbol '" << SymbolName << "'"; +} + +const std::string &JITSymbolNotFound::getSymbolName() const { + return SymbolName; +} + } } |