mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-18 16:03:17 +00:00
[Orc] Make orcError return an error_code rather than Error.
This will allow orcError to be used in convertToErrorCode implementations, which will help in transitioning Orc RPC to Error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299610 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
57cceedbb1
commit
e128ff2ea9
@ -33,7 +33,7 @@ enum class OrcErrorCode : int {
|
||||
UnknownRPCFunction
|
||||
};
|
||||
|
||||
Error orcError(OrcErrorCode ErrCode);
|
||||
std::error_code orcError(OrcErrorCode ErrCode);
|
||||
|
||||
class RPCFunctionNotSupported : public ErrorInfo<RPCFunctionNotSupported> {
|
||||
public:
|
||||
|
@ -132,7 +132,7 @@ private:
|
||||
Error setProtections(void *block, unsigned Flags) {
|
||||
auto I = Allocs.find(block);
|
||||
if (I == Allocs.end())
|
||||
return orcError(OrcErrorCode::RemoteMProtectAddrUnrecognized);
|
||||
return errorCodeToError(orcError(OrcErrorCode::RemoteMProtectAddrUnrecognized));
|
||||
return errorCodeToError(
|
||||
sys::Memory::protectMappedMemory(I->second, Flags));
|
||||
}
|
||||
@ -198,7 +198,8 @@ private:
|
||||
Error handleCreateRemoteAllocator(ResourceIdMgr::ResourceId Id) {
|
||||
auto I = Allocators.find(Id);
|
||||
if (I != Allocators.end())
|
||||
return orcError(OrcErrorCode::RemoteAllocatorIdAlreadyInUse);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteAllocatorIdAlreadyInUse));
|
||||
DEBUG(dbgs() << " Created allocator " << Id << "\n");
|
||||
Allocators[Id] = Allocator();
|
||||
return Error::success();
|
||||
@ -207,7 +208,8 @@ private:
|
||||
Error handleCreateIndirectStubsOwner(ResourceIdMgr::ResourceId Id) {
|
||||
auto I = IndirectStubsOwners.find(Id);
|
||||
if (I != IndirectStubsOwners.end())
|
||||
return orcError(OrcErrorCode::RemoteIndirectStubsOwnerIdAlreadyInUse);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteIndirectStubsOwnerIdAlreadyInUse));
|
||||
DEBUG(dbgs() << " Create indirect stubs owner " << Id << "\n");
|
||||
IndirectStubsOwners[Id] = ISBlockOwnerList();
|
||||
return Error::success();
|
||||
@ -224,7 +226,8 @@ private:
|
||||
Error handleDestroyRemoteAllocator(ResourceIdMgr::ResourceId Id) {
|
||||
auto I = Allocators.find(Id);
|
||||
if (I == Allocators.end())
|
||||
return orcError(OrcErrorCode::RemoteAllocatorDoesNotExist);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteAllocatorDoesNotExist));
|
||||
Allocators.erase(I);
|
||||
DEBUG(dbgs() << " Destroyed allocator " << Id << "\n");
|
||||
return Error::success();
|
||||
@ -233,7 +236,8 @@ private:
|
||||
Error handleDestroyIndirectStubsOwner(ResourceIdMgr::ResourceId Id) {
|
||||
auto I = IndirectStubsOwners.find(Id);
|
||||
if (I == IndirectStubsOwners.end())
|
||||
return orcError(OrcErrorCode::RemoteIndirectStubsOwnerDoesNotExist);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteIndirectStubsOwnerDoesNotExist));
|
||||
IndirectStubsOwners.erase(I);
|
||||
return Error::success();
|
||||
}
|
||||
@ -246,7 +250,8 @@ private:
|
||||
|
||||
auto StubOwnerItr = IndirectStubsOwners.find(Id);
|
||||
if (StubOwnerItr == IndirectStubsOwners.end())
|
||||
return orcError(OrcErrorCode::RemoteIndirectStubsOwnerDoesNotExist);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteIndirectStubsOwnerDoesNotExist));
|
||||
|
||||
typename TargetT::IndirectStubsInfo IS;
|
||||
if (auto Err =
|
||||
@ -361,7 +366,8 @@ private:
|
||||
uint64_t Size, uint32_t Align) {
|
||||
auto I = Allocators.find(Id);
|
||||
if (I == Allocators.end())
|
||||
return orcError(OrcErrorCode::RemoteAllocatorDoesNotExist);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteAllocatorDoesNotExist));
|
||||
auto &Allocator = I->second;
|
||||
void *LocalAllocAddr = nullptr;
|
||||
if (auto Err = Allocator.allocate(LocalAllocAddr, Size, Align))
|
||||
@ -380,7 +386,8 @@ private:
|
||||
JITTargetAddress Addr, uint32_t Flags) {
|
||||
auto I = Allocators.find(Id);
|
||||
if (I == Allocators.end())
|
||||
return orcError(OrcErrorCode::RemoteAllocatorDoesNotExist);
|
||||
return errorCodeToError(
|
||||
orcError(OrcErrorCode::RemoteAllocatorDoesNotExist));
|
||||
auto &Allocator = I->second;
|
||||
void *LocalAddr = reinterpret_cast<void *>(static_cast<uintptr_t>(Addr));
|
||||
DEBUG(dbgs() << " Allocator " << Id << " set permissions on " << LocalAddr
|
||||
|
@ -500,7 +500,7 @@ public:
|
||||
|
||||
// Create an error instance representing an abandoned response.
|
||||
static Error createAbandonedResponseError() {
|
||||
return orcError(OrcErrorCode::RPCResponseAbandoned);
|
||||
return errorCodeToError(orcError(OrcErrorCode::RPCResponseAbandoned));
|
||||
}
|
||||
};
|
||||
|
||||
@ -522,7 +522,7 @@ public:
|
||||
return Err;
|
||||
if (auto Err = C.endReceiveMessage())
|
||||
return Err;
|
||||
return Handler(Result);
|
||||
return Handler(std::move(Result));
|
||||
}
|
||||
|
||||
// Abandon this response by calling the handler with an 'abandoned response'
|
||||
@ -817,7 +817,8 @@ public:
|
||||
// This isn't a channel error so we don't want to abandon other pending
|
||||
// responses, but we still need to run the user handler with an error to
|
||||
// let them know the call failed.
|
||||
if (auto Err = Handler(orcError(OrcErrorCode::UnknownRPCFunction)))
|
||||
if (auto Err = Handler(errorCodeToError(
|
||||
orcError(OrcErrorCode::UnknownRPCFunction))))
|
||||
report_fatal_error(std::move(Err));
|
||||
return FnIdOrErr.takeError();
|
||||
}
|
||||
@ -884,7 +885,7 @@ public:
|
||||
return I->second(C, SeqNo);
|
||||
|
||||
// else: No handler found. Report error to client?
|
||||
return orcError(OrcErrorCode::UnexpectedRPCCall);
|
||||
return errorCodeToError(orcError(OrcErrorCode::UnexpectedRPCCall));
|
||||
}
|
||||
|
||||
/// Helper for handling setter procedures - this method returns a functor that
|
||||
@ -994,7 +995,7 @@ protected:
|
||||
// Unlock the pending results map to prevent recursive lock.
|
||||
Lock.unlock();
|
||||
abandonPendingResponses();
|
||||
return orcError(OrcErrorCode::UnexpectedRPCResponse);
|
||||
return errorCodeToError(orcError(OrcErrorCode::UnexpectedRPCResponse));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,19 +60,16 @@ namespace orc {
|
||||
|
||||
char RPCFunctionNotSupported::ID = 0;
|
||||
|
||||
Error orcError(OrcErrorCode ErrCode) {
|
||||
std::error_code orcError(OrcErrorCode ErrCode) {
|
||||
typedef std::underlying_type<OrcErrorCode>::type UT;
|
||||
return errorCodeToError(
|
||||
std::error_code(static_cast<UT>(ErrCode), *OrcErrCat));
|
||||
return std::error_code(static_cast<UT>(ErrCode), *OrcErrCat);
|
||||
}
|
||||
|
||||
RPCFunctionNotSupported::RPCFunctionNotSupported(std::string RPCFunctionSignature)
|
||||
: RPCFunctionSignature(std::move(RPCFunctionSignature)) {}
|
||||
|
||||
std::error_code RPCFunctionNotSupported::convertToErrorCode() const {
|
||||
typedef std::underlying_type<OrcErrorCode>::type UT;
|
||||
return std::error_code(static_cast<UT>(OrcErrorCode::UnknownRPCFunction),
|
||||
*OrcErrCat);
|
||||
return orcError(OrcErrorCode::UnknownRPCFunction);
|
||||
}
|
||||
|
||||
void RPCFunctionNotSupported::log(raw_ostream &OS) const {
|
||||
|
Loading…
x
Reference in New Issue
Block a user