mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 03:56:16 +08:00
[Orc] Switch RPC Procedure to take a function type, rather than an arg list.
No functional change, just a little more readable. llvm-svn: 263951
This commit is contained in:
@@ -82,108 +82,109 @@ public:
|
||||
|
||||
static const char *getJITProcIdName(JITProcId Id);
|
||||
|
||||
typedef Procedure<CallIntVoidId, TargetAddress /* FnAddr */> CallIntVoid;
|
||||
typedef Procedure<CallIntVoidId, void(TargetAddress Addr)> CallIntVoid;
|
||||
|
||||
typedef Procedure<CallIntVoidResponseId, int /* Result */>
|
||||
CallIntVoidResponse;
|
||||
typedef Procedure<CallIntVoidResponseId, void(int Result)>
|
||||
CallIntVoidResponse;
|
||||
|
||||
typedef Procedure<CallMainId, TargetAddress /* FnAddr */,
|
||||
std::vector<std::string> /* Args */>
|
||||
typedef Procedure<CallMainId, void(TargetAddress Addr,
|
||||
std::vector<std::string> Args)>
|
||||
CallMain;
|
||||
|
||||
typedef Procedure<CallMainResponseId, int /* Result */> CallMainResponse;
|
||||
typedef Procedure<CallMainResponseId, void(int Result)> CallMainResponse;
|
||||
|
||||
typedef Procedure<CallVoidVoidId, TargetAddress /* FnAddr */> CallVoidVoid;
|
||||
typedef Procedure<CallVoidVoidId, void(TargetAddress FnAddr)> CallVoidVoid;
|
||||
|
||||
typedef Procedure<CallVoidVoidResponseId> CallVoidVoidResponse;
|
||||
typedef Procedure<CallVoidVoidResponseId, void()> CallVoidVoidResponse;
|
||||
|
||||
typedef Procedure<CreateRemoteAllocatorId,
|
||||
ResourceIdMgr::ResourceId /* Allocator ID */>
|
||||
void(ResourceIdMgr::ResourceId AllocatorID)>
|
||||
CreateRemoteAllocator;
|
||||
|
||||
typedef Procedure<CreateIndirectStubsOwnerId,
|
||||
ResourceIdMgr::ResourceId /* StubsOwner ID */>
|
||||
CreateIndirectStubsOwner;
|
||||
void(ResourceIdMgr::ResourceId StubOwnerID)>
|
||||
CreateIndirectStubsOwner;
|
||||
|
||||
typedef Procedure<DeregisterEHFramesId, TargetAddress /* Addr */,
|
||||
uint32_t /* Size */>
|
||||
typedef Procedure<DeregisterEHFramesId,
|
||||
void(TargetAddress Addr, uint32_t Size)>
|
||||
DeregisterEHFrames;
|
||||
|
||||
typedef Procedure<DestroyRemoteAllocatorId,
|
||||
ResourceIdMgr::ResourceId /* Allocator ID */>
|
||||
void(ResourceIdMgr::ResourceId AllocatorID)>
|
||||
DestroyRemoteAllocator;
|
||||
|
||||
typedef Procedure<DestroyIndirectStubsOwnerId,
|
||||
ResourceIdMgr::ResourceId /* StubsOwner ID */>
|
||||
void(ResourceIdMgr::ResourceId StubsOwnerID)>
|
||||
DestroyIndirectStubsOwner;
|
||||
|
||||
typedef Procedure<EmitIndirectStubsId,
|
||||
ResourceIdMgr::ResourceId /* StubsOwner ID */,
|
||||
uint32_t /* NumStubsRequired */>
|
||||
void(ResourceIdMgr::ResourceId StubsOwnerID,
|
||||
uint32_t NumStubsRequired)>
|
||||
EmitIndirectStubs;
|
||||
|
||||
typedef Procedure<
|
||||
EmitIndirectStubsResponseId, TargetAddress /* StubsBaseAddr */,
|
||||
TargetAddress /* PtrsBaseAddr */, uint32_t /* NumStubsEmitted */>
|
||||
typedef Procedure<EmitIndirectStubsResponseId,
|
||||
void(TargetAddress StubsBaseAddr,
|
||||
TargetAddress PtrsBaseAddr,
|
||||
uint32_t NumStubsEmitted)>
|
||||
EmitIndirectStubsResponse;
|
||||
|
||||
typedef Procedure<EmitResolverBlockId> EmitResolverBlock;
|
||||
typedef Procedure<EmitResolverBlockId, void()> EmitResolverBlock;
|
||||
|
||||
typedef Procedure<EmitTrampolineBlockId> EmitTrampolineBlock;
|
||||
typedef Procedure<EmitTrampolineBlockId, void()> EmitTrampolineBlock;
|
||||
|
||||
typedef Procedure<EmitTrampolineBlockResponseId,
|
||||
TargetAddress /* BlockAddr */,
|
||||
uint32_t /* NumTrampolines */>
|
||||
void(TargetAddress BlockAddr, uint32_t NumTrampolines)>
|
||||
EmitTrampolineBlockResponse;
|
||||
|
||||
typedef Procedure<GetSymbolAddressId, std::string /*SymbolName*/>
|
||||
typedef Procedure<GetSymbolAddressId, void(std::string SymbolName)>
|
||||
GetSymbolAddress;
|
||||
|
||||
typedef Procedure<GetSymbolAddressResponseId, uint64_t /* SymbolAddr */>
|
||||
typedef Procedure<GetSymbolAddressResponseId, void(uint64_t SymbolAddr)>
|
||||
GetSymbolAddressResponse;
|
||||
|
||||
typedef Procedure<GetRemoteInfoId> GetRemoteInfo;
|
||||
typedef Procedure<GetRemoteInfoId, void()> GetRemoteInfo;
|
||||
|
||||
typedef Procedure<GetRemoteInfoResponseId, std::string /* Triple */,
|
||||
uint32_t /* PointerSize */, uint32_t /* PageSize */,
|
||||
uint32_t /* TrampolineSize */,
|
||||
uint32_t /* IndirectStubSize */>
|
||||
typedef Procedure<GetRemoteInfoResponseId,
|
||||
void(std::string Triple, uint32_t PointerSize,
|
||||
uint32_t PageSize, uint32_t TrampolineSize,
|
||||
uint32_t IndirectStubSize)>
|
||||
GetRemoteInfoResponse;
|
||||
|
||||
typedef Procedure<ReadMemId, TargetAddress /* Src */, uint64_t /* Size */>
|
||||
typedef Procedure<ReadMemId, void(TargetAddress Src, uint64_t Size)>
|
||||
ReadMem;
|
||||
|
||||
typedef Procedure<ReadMemResponseId> ReadMemResponse;
|
||||
typedef Procedure<ReadMemResponseId, void()> ReadMemResponse;
|
||||
|
||||
typedef Procedure<RegisterEHFramesId, TargetAddress /* Addr */,
|
||||
uint32_t /* Size */>
|
||||
typedef Procedure<RegisterEHFramesId,
|
||||
void(TargetAddress Addr, uint32_t Size)>
|
||||
RegisterEHFrames;
|
||||
|
||||
typedef Procedure<ReserveMemId, ResourceIdMgr::ResourceId /* Id */,
|
||||
uint64_t /* Size */, uint32_t /* Align */>
|
||||
typedef Procedure<ReserveMemId,
|
||||
void(ResourceIdMgr::ResourceId AllocID, uint64_t Size,
|
||||
uint32_t Align)>
|
||||
ReserveMem;
|
||||
|
||||
typedef Procedure<ReserveMemResponseId, TargetAddress /* Addr */>
|
||||
typedef Procedure<ReserveMemResponseId, void(TargetAddress Addr)>
|
||||
ReserveMemResponse;
|
||||
|
||||
typedef Procedure<RequestCompileId, TargetAddress /* TrampolineAddr */>
|
||||
typedef Procedure<RequestCompileId, void(TargetAddress TrampolineAddr)>
|
||||
RequestCompile;
|
||||
|
||||
typedef Procedure<RequestCompileResponseId, TargetAddress /* ImplAddr */>
|
||||
typedef Procedure<RequestCompileResponseId, void(TargetAddress ImplAddr)>
|
||||
RequestCompileResponse;
|
||||
|
||||
typedef Procedure<SetProtectionsId, ResourceIdMgr::ResourceId /* Id */,
|
||||
TargetAddress /* Dst */, uint32_t /* ProtFlags */>
|
||||
typedef Procedure<SetProtectionsId,
|
||||
void(ResourceIdMgr::ResourceId AllocID, TargetAddress Dst,
|
||||
uint32_t ProtFlags)>
|
||||
SetProtections;
|
||||
|
||||
typedef Procedure<TerminateSessionId> TerminateSession;
|
||||
typedef Procedure<TerminateSessionId, void()> TerminateSession;
|
||||
|
||||
typedef Procedure<WriteMemId, TargetAddress /* Dst */, uint64_t /* Size */
|
||||
/* Data should follow */>
|
||||
typedef Procedure<WriteMemId,
|
||||
void(TargetAddress Dst, uint64_t Size /* Data to follow */)>
|
||||
WriteMem;
|
||||
|
||||
typedef Procedure<WritePtrId, TargetAddress /* Dst */,
|
||||
TargetAddress /* Val */>
|
||||
typedef Procedure<WritePtrId, void(TargetAddress Dst, TargetAddress Val)>
|
||||
WritePtr;
|
||||
};
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace remote {
|
||||
// partially specialized.
|
||||
class RPCBase {
|
||||
protected:
|
||||
template <typename ProcedureIdT, ProcedureIdT ProcId, typename... Ts>
|
||||
template <typename ProcedureIdT, ProcedureIdT ProcId, typename FnT>
|
||||
class ProcedureHelper {
|
||||
public:
|
||||
static const ProcedureIdT Id = ProcId;
|
||||
@@ -36,7 +36,8 @@ protected:
|
||||
|
||||
template <typename ChannelT, typename ProcedureIdT, ProcedureIdT ProcId,
|
||||
typename... ArgTs>
|
||||
class CallHelper<ChannelT, ProcedureHelper<ProcedureIdT, ProcId, ArgTs...>> {
|
||||
class CallHelper<ChannelT,
|
||||
ProcedureHelper<ProcedureIdT, ProcId, void(ArgTs...)>> {
|
||||
public:
|
||||
static std::error_code call(ChannelT &C, const ArgTs &... Args) {
|
||||
if (auto EC = serialize(C, ProcId))
|
||||
@@ -52,7 +53,7 @@ protected:
|
||||
template <typename ChannelT, typename ProcedureIdT, ProcedureIdT ProcId,
|
||||
typename... ArgTs>
|
||||
class HandlerHelper<ChannelT,
|
||||
ProcedureHelper<ProcedureIdT, ProcId, ArgTs...>> {
|
||||
ProcedureHelper<ProcedureIdT, ProcId, void(ArgTs...)>> {
|
||||
public:
|
||||
template <typename HandlerT>
|
||||
static std::error_code handle(ChannelT &C, HandlerT Handler) {
|
||||
@@ -179,8 +180,8 @@ public:
|
||||
/// })
|
||||
/// /* handle EC */;
|
||||
///
|
||||
template <ProcedureIdT ProcId, typename... Ts>
|
||||
using Procedure = ProcedureHelper<ProcedureIdT, ProcId, Ts...>;
|
||||
template <ProcedureIdT ProcId, typename FnT>
|
||||
using Procedure = ProcedureHelper<ProcedureIdT, ProcId, FnT>;
|
||||
|
||||
/// Serialize Args... to channel C, but do not call C.send().
|
||||
///
|
||||
|
||||
@@ -44,18 +44,10 @@ private:
|
||||
class DummyRPC : public testing::Test,
|
||||
public RPC<QueueChannel> {
|
||||
public:
|
||||
typedef Procedure<1, bool> Proc1;
|
||||
typedef Procedure<2, int8_t,
|
||||
uint8_t,
|
||||
int16_t,
|
||||
uint16_t,
|
||||
int32_t,
|
||||
uint32_t,
|
||||
int64_t,
|
||||
uint64_t,
|
||||
bool,
|
||||
std::string,
|
||||
std::vector<int>> AllTheTypes;
|
||||
typedef Procedure<1, void(bool)> Proc1;
|
||||
typedef Procedure<2, void(int8_t, uint8_t, int16_t, uint16_t,
|
||||
int32_t, uint32_t, int64_t, uint64_t,
|
||||
bool, std::string, std::vector<int>)> AllTheTypes;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user