LLVM  13.0.0git
Classes | Public Types | Public Member Functions | List of all members
llvm::jitlink::JITLinkMemoryManager Class Referenceabstract

Manages allocations of JIT memory. More...

#include "llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h"

Inheritance diagram for llvm::jitlink::JITLinkMemoryManager:
Inheritance graph
[legend]

Classes

class  Allocation
 Represents an allocation created by the memory manager. More...
 
class  SegmentRequest
 

Public Types

using ProtectionFlags = sys::Memory::ProtectionFlags
 
using SegmentsRequestMap = DenseMap< unsigned, SegmentRequest >
 

Public Member Functions

virtual ~JITLinkMemoryManager ()
 
virtual Expected< std::unique_ptr< Allocation > > allocate (const JITLinkDylib *JD, const SegmentsRequestMap &Request)=0
 Create an Allocation object. More...
 

Detailed Description

Manages allocations of JIT memory.

Instances of this class may be accessed concurrently from multiple threads and their implemetations should include any necessary synchronization.

Definition at line 33 of file JITLinkMemoryManager.h.

Member Typedef Documentation

◆ ProtectionFlags

Definition at line 35 of file JITLinkMemoryManager.h.

◆ SegmentsRequestMap

Definition at line 55 of file JITLinkMemoryManager.h.

Constructor & Destructor Documentation

◆ ~JITLinkMemoryManager()

llvm::jitlink::JITLinkMemoryManager::~JITLinkMemoryManager ( )
virtualdefault

Member Function Documentation

◆ allocate()

virtual Expected<std::unique_ptr<Allocation> > llvm::jitlink::JITLinkMemoryManager::allocate ( const JITLinkDylib JD,
const SegmentsRequestMap Request 
)
pure virtual

Create an Allocation object.

The JD argument represents the target JITLinkDylib, and can be used by JITLinkMemoryManager implementers to manage per-dylib allocation pools (e.g. one pre-reserved address space slab per dylib to ensure that all allocations for the dylib are within a certain range). The JD argument may be null (representing an allocation not associated with any JITDylib.

The request argument describes the segment sizes and permisssions being requested.

Implemented in llvm::jitlink::InProcessMemoryManager, llvm::orc::remote::OrcRemoteTargetClient::RemoteJITLinkMemoryManager, and llvm::orc::OrcRPCTPCJITLinkMemoryManager< OrcRPCTPCImplT >.

Referenced by llvm::orc::ELFDebugObject::finalizeWorkingMemory().


The documentation for this class was generated from the following files: