LLVM: include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_EXECUTIONENGINE_ORC_SHARED_TARGETPROCESSCONTROLTYPES_H
15#define LLVM_EXECUTIONENGINE_ORC_SHARED_TARGETPROCESSCONTROLTYPES_H
16
27
28#include
29
30namespace llvm {
31namespace orc {
33
41 "Cannot use no-alloc memory in a remote alloc request");
43 }
44
47};
48
55
60
66
70};
71
79
80
82
83
85
86
88
89
91
92
93
102
103
104
113
114
116
117
118
120
121using LookupResult = std::vector<std::optional>;
122
123}
124
126
127class SPSRemoteAllocGroup;
128
131
134
137
141
142template
144
149
152
153template <>
155 enum WireBits {
156 ReadBit = 1 << 0,
157 WriteBit = 1 << 1,
158 ExecBit = 1 << 2,
159 FinalizeBit = 1 << 3
160 };
161
162public:
167
172 WireValue |= ReadBit;
174 WireValue |= WriteBit;
176 WireValue |= ExecBit;
178 WireValue |= FinalizeBit;
180 }
181
185 return false;
187 if (Val & ReadBit)
189 if (Val & WriteBit)
191 if (Val & ExecBit)
193 bool FinalizeLifetime = (Val & FinalizeBit) ? true : false;
194 RAG = {MP, FinalizeLifetime};
195 return true;
196 }
197};
198
199template <>
201 tpctypes::SegFinalizeRequest> {
203
204public:
208
213
218};
219
220template <>
223
224public:
228
233
237};
238
239template <>
241 tpctypes::SharedMemorySegFinalizeRequest> {
243
244public:
246 return SFRAL::size(SFR.RAG, SFR.Addr, SFR.Size);
247 }
248
251 return SFRAL::serialize(OB, SFR.RAG, SFR.Addr, SFR.Size);
252 }
253
256 return SFRAL::deserialize(IB, SFR.RAG, SFR.Addr, SFR.Size);
257 }
258};
259
260template <>
262 tpctypes::SharedMemoryFinalizeRequest> {
264
265public:
269
274
279};
280
281template
299
300template <>
303public:
306 W.Addr, W.Buffer);
307 }
308
311 OB, W.Addr, W.Buffer);
312 }
313
319};
320
321template <>
324public:
329
332 OB, W.Addr, W.Value);
333 }
334
337 IB, W.Addr, W.Value);
338 }
339};
340
341}
342}
343}
344
345#endif
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.
UIntWrite< uint64_t > UInt64Write
Describes a write to a uint64_t.
Definition TargetProcessControlTypes.h:90
std::vector< std::optional< ExecutorSymbolDef > > LookupResult
Definition TargetProcessControlTypes.h:121
UIntWrite< uint8_t > UInt8Write
Describes a write to a uint8_t.
Definition TargetProcessControlTypes.h:81
ExecutorAddr DylibHandle
A handle used to represent a loaded dylib in the target process.
Definition TargetProcessControlTypes.h:115
UIntWrite< uint32_t > UInt32Write
Describes a write to a uint32_t.
Definition TargetProcessControlTypes.h:87
ExecutorAddr ResolverHandle
A handle used to reference the resolver associated with a loaded dylib in the target process.
Definition TargetProcessControlTypes.h:119
UIntWrite< uint16_t > UInt16Write
Describes a write to a uint16_t.
Definition TargetProcessControlTypes.h:84
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.
Definition TargetProcessControlTypes.h:94
ExecutorAddr Addr
Definition TargetProcessControlTypes.h:99
ArrayRef< char > Buffer
Definition TargetProcessControlTypes.h:100
BufferWrite(ExecutorAddr Addr, ArrayRef< char > Buffer)
Definition TargetProcessControlTypes.h:96
std::vector< SegFinalizeRequest > Segments
Definition TargetProcessControlTypes.h:57
shared::AllocActions Actions
Definition TargetProcessControlTypes.h:58
Describes a write to a pointer.
Definition TargetProcessControlTypes.h:105
ExecutorAddr Addr
Definition TargetProcessControlTypes.h:110
PointerWrite(ExecutorAddr Addr, ExecutorAddr Value)
Definition TargetProcessControlTypes.h:107
ExecutorAddr Value
Definition TargetProcessControlTypes.h:111
RemoteAllocGroup(const AllocGroup &AG)
Definition TargetProcessControlTypes.h:39
RemoteAllocGroup(MemProt Prot, bool FinalizeLifetime)
Definition TargetProcessControlTypes.h:37
RemoteAllocGroup(MemProt Prot)
Definition TargetProcessControlTypes.h:36
bool FinalizeLifetime
Definition TargetProcessControlTypes.h:46
MemProt Prot
Definition TargetProcessControlTypes.h:45
RemoteAllocGroup()=default
ArrayRef< char > Content
Definition TargetProcessControlTypes.h:53
ExecutorAddr Addr
Definition TargetProcessControlTypes.h:51
uint64_t Size
Definition TargetProcessControlTypes.h:52
RemoteAllocGroup RAG
Definition TargetProcessControlTypes.h:50
ExecutorAddr Addr
Definition TargetProcessControlTypes.h:76
UIntWrite(ExecutorAddr Addr, T Value)
Definition TargetProcessControlTypes.h:74
uint8_t Value
Definition TargetProcessControlTypes.h:77