14#ifndef LLVM_EXECUTIONENGINE_ORC_SHARED_TARGETPROCESSCONTROLTYPES_H
15#define LLVM_EXECUTIONENGINE_ORC_SHARED_TARGETPROCESSCONTROLTYPES_H
41 "Cannot use no-alloc memory in a remote alloc request");
68 std::vector<SharedMemorySegFinalizeRequest>
Segments;
123class SPSRemoteAllocGroup;
168 WireValue |= ReadBit;
170 WireValue |= WriteBit;
172 WireValue |= ExecBit;
174 WireValue |= FinalizeBit;
189 bool FinalizeLifetime = (Val & FinalizeBit) ?
true :
false;
190 RAG = {MP, FinalizeLifetime};
237 tpctypes::SharedMemorySegFinalizeRequest> {
247 return SFRAL::serialize(OB, SFR.
RAG, SFR.
Addr, SFR.
Size);
252 return SFRAL::deserialize(IB, SFR.
RAG, SFR.
Addr, SFR.
Size);
258 tpctypes::SharedMemoryFinalizeRequest> {
307 OB, W.Addr, W.Buffer);
328 OB, W.Addr, W.Value);
333 IB, W.Addr, W.Value);
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
A pair of memory protections and allocation policies.
MemLifetime getMemLifetime() const
Returns the MemLifetime for this group.
Represents an address in the executor process.
A utility class for serializing to a blob from a variadic list.
Output char buffer with overflow check.
SPS tag type for sequences.
static size_t size(const tpctypes::FinalizeRequest &FR)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::FinalizeRequest &FR)
static bool deserialize(SPSInputBuffer &IB, tpctypes::FinalizeRequest &FR)
static bool deserialize(SPSInputBuffer &IB, tpctypes::BufferWrite &W)
static size_t size(const tpctypes::BufferWrite &W)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::BufferWrite &W)
static bool deserialize(SPSInputBuffer &IB, tpctypes::PointerWrite &W)
static size_t size(const tpctypes::PointerWrite &W)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::PointerWrite &W)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::UIntWrite< T > &W)
static size_t size(const tpctypes::UIntWrite< T > &W)
static bool deserialize(SPSInputBuffer &IB, tpctypes::UIntWrite< T > &W)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::RemoteAllocGroup &RAG)
static bool deserialize(SPSInputBuffer &IB, tpctypes::RemoteAllocGroup &RAG)
static size_t size(const tpctypes::RemoteAllocGroup &RAG)
static size_t size(const tpctypes::SegFinalizeRequest &SFR)
static bool deserialize(SPSInputBuffer &IB, tpctypes::SegFinalizeRequest &SFR)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::SegFinalizeRequest &SFR)
static bool deserialize(SPSInputBuffer &IB, tpctypes::SharedMemoryFinalizeRequest &FR)
static size_t size(const tpctypes::SharedMemoryFinalizeRequest &FR)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::SharedMemoryFinalizeRequest &FR)
static bool deserialize(SPSInputBuffer &IB, tpctypes::SharedMemorySegFinalizeRequest &SFR)
static bool serialize(SPSOutputBuffer &OB, const tpctypes::SharedMemorySegFinalizeRequest &SFR)
static size_t size(const tpctypes::SharedMemorySegFinalizeRequest &SFR)
Specialize to describe how to serialize/deserialize to/from the given concrete type.
SPSArgList< SPSTagTs... > AsArgList
SPSTuple< SPSExecutorAddr, SPSExecutorAddr > SPSMemoryAccessPointerWrite
SPSTuple< SPSExecutorAddr, SPSSequence< char > > SPSMemoryAccessBufferWrite
SPSTuple< SPSExecutorAddr, T > SPSMemoryAccessUIntWrite
SPSTuple< SPSSequence< SPSSegFinalizeRequest >, SPSSequence< SPSAllocActionCallPair > > SPSFinalizeRequest
SPSMemoryAccessUIntWrite< uint8_t > SPSMemoryAccessUInt8Write
SPSMemoryAccessUIntWrite< uint16_t > SPSMemoryAccessUInt16Write
std::vector< AllocActionCallPair > AllocActions
A vector of allocation actions to be run for this allocation.
SPSTuple< SPSSequence< SPSSharedMemorySegFinalizeRequest >, SPSSequence< SPSAllocActionCallPair > > SPSSharedMemoryFinalizeRequest
SPSMemoryAccessUIntWrite< uint64_t > SPSMemoryAccessUInt64Write
SPSTuple< SPSRemoteAllocGroup, SPSExecutorAddr, uint64_t > SPSSharedMemorySegFinalizeRequest
SPSMemoryAccessUIntWrite< uint32_t > SPSMemoryAccessUInt32Write
SPSTuple< SPSRemoteAllocGroup, SPSExecutorAddr, uint64_t, SPSSequence< char > > SPSSegFinalizeRequest
std::vector< ExecutorSymbolDef > LookupResult
UIntWrite< uint64_t > UInt64Write
Describes a write to a uint64_t.
UIntWrite< uint8_t > UInt8Write
Describes a write to a uint8_t.
ExecutorAddr DylibHandle
A handle used to represent a loaded dylib in the target process.
UIntWrite< uint32_t > UInt32Write
Describes a write to a uint32_t.
UIntWrite< uint16_t > UInt16Write
Describes a write to a uint16_t.
MemProt
Describes Read/Write/Exec permissions for memory.
@ NoAlloc
NoAlloc memory should not be allocated by the JITLinkMemoryManager at all.
@ Finalize
Finalize memory should be allocated by the allocator, and then be overwritten and deallocated after a...
This is an optimization pass for GlobalISel generic memory operations.
Describes a write to a buffer.
BufferWrite(ExecutorAddr Addr, ArrayRef< char > Buffer)
std::vector< SegFinalizeRequest > Segments
shared::AllocActions Actions
Describes a write to a pointer.
PointerWrite(ExecutorAddr Addr, ExecutorAddr Value)
RemoteAllocGroup(const AllocGroup &AG)
RemoteAllocGroup(MemProt Prot, bool FinalizeLifetime)
RemoteAllocGroup(MemProt Prot)
RemoteAllocGroup()=default
std::vector< SharedMemorySegFinalizeRequest > Segments
shared::AllocActions Actions
UIntWrite(ExecutorAddr Addr, T Value)