LLVM 20.0.0git
Functions
ExecutionEngine-based ORC Utils
Collaboration diagram for ExecutionEngine-based ORC Utils:

Functions

LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager (LLVMOrcExecutionSessionRef ES)
 Create a RTDyldObjectLinkingLayer instance using the standard SectionMemoryManager for memory management.
 
LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks (LLVMOrcExecutionSessionRef ES, void *CreateContextCtx, LLVMMemoryManagerCreateContextCallback CreateContext, LLVMMemoryManagerNotifyTerminatingCallback NotifyTerminating, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destroy)
 Create a RTDyldObjectLinkingLayer instance using MCJIT-memory-manager-like callbacks.
 
void LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener (LLVMOrcObjectLayerRef RTDyldObjLinkingLayer, LLVMJITEventListenerRef Listener)
 Add the given listener to the given RTDyldObjectLinkingLayer.
 

Detailed Description

Function Documentation

◆ LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks()

LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks ( LLVMOrcExecutionSessionRef  ES,
void *  CreateContextCtx,
LLVMMemoryManagerCreateContextCallback  CreateContext,
LLVMMemoryManagerNotifyTerminatingCallback  NotifyTerminating,
LLVMMemoryManagerAllocateCodeSectionCallback  AllocateCodeSection,
LLVMMemoryManagerAllocateDataSectionCallback  AllocateDataSection,
LLVMMemoryManagerFinalizeMemoryCallback  FinalizeMemory,
LLVMMemoryManagerDestroyCallback  Destroy 
)

Create a RTDyldObjectLinkingLayer instance using MCJIT-memory-manager-like callbacks.

This is intended to simplify transitions for existing MCJIT clients. The callbacks used are similar (but not identical) to the callbacks for LLVMCreateSimpleMCJITMemoryManager: Unlike MCJIT, RTDyldObjectLinkingLayer will create a new memory manager for each object linked by calling the given CreateContext callback. This allows for code removal by destroying each allocator individually. Every allocator will be destroyed (if it has not been already) at RTDyldObjectLinkingLayer destruction time, and the NotifyTerminating callback will be called to indicate that no further allocation contexts will be created.

To implement MCJIT-like behavior clients can implement CreateContext, NotifyTerminating, and Destroy as:

void *CreateContext(void *CtxCtx) { return CtxCtx; } void NotifyTerminating(void *CtxCtx) { MyOriginalDestroy(CtxCtx); } void Destroy(void *Ctx) { }

This scheme simply reuses the CreateContextCtx pointer as the one-and-only allocation context.

Definition at line 1029 of file OrcV2CBindings.cpp.

References llvm::RuntimeDyld::MemoryManager::allocateCodeSection(), llvm::RuntimeDyld::MemoryManager::allocateDataSection(), assert(), llvm::RuntimeDyld::MemoryManager::finalizeMemory(), LLVMMemoryManagerCreateContextCallback, Other, llvm::orc::Result, Size, std::swap(), unwrap(), and wrap().

◆ LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager()

LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager ( LLVMOrcExecutionSessionRef  ES)

Create a RTDyldObjectLinkingLayer instance using the standard SectionMemoryManager for memory management.

Definition at line 1021 of file OrcV2CBindings.cpp.

References assert(), unwrap(), and wrap().

◆ LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener()

void LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener ( LLVMOrcObjectLayerRef  RTDyldObjLinkingLayer,
LLVMJITEventListenerRef  Listener 
)

Add the given listener to the given RTDyldObjectLinkingLayer.

Note: Layer must be an RTDyldObjectLinkingLayer instance or behavior is undefined.

Definition at line 1138 of file OrcV2CBindings.cpp.

References assert(), and unwrap().