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

68 std::vector Segments;

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