Class LLVMOrcEE

java.lang.Object
org.lwjgl.llvm.LLVMOrcEE

public class LLVMOrcEE extends Object
Requires LLVM 12 or higher.
  • Method Details

    • LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager

      public static long LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager(long ES)
      Create a RTDyldObjectLinkingLayer instance using the standard SectionMemoryManager for memory management.
    • nLLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks

      public static long nLLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks(long ES, long CreateContextCtx, long CreateContext, long NotifyTerminating, long AllocateCodeSection, long AllocateDataSection, long FinalizeMemory, long Destroy)
    • LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks

      public static long LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks(long ES, long CreateContextCtx, LLVMMemoryManagerCreateContextCallbackI CreateContext, LLVMMemoryManagerNotifyTerminatingCallbackI NotifyTerminating, LLVMMemoryManagerAllocateCodeSectionCallbackI AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallbackI AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallbackI FinalizeMemory, LLVMMemoryManagerDestroyCallbackI 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 CreateSimpleMCJITMemoryManager): 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.

    • LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener

      public static void LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener(long RTDyldObjLinkingLayer, long Listener)
      Add the given listener to the given RTDyldObjectLinkingLayer.

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