LLVM: Execution Engine (original) (raw)

Typedefs
typedef struct LLVMOpaqueGenericValue * LLVMGenericValueRef
typedef struct LLVMOpaqueExecutionEngine * LLVMExecutionEngineRef
typedef struct LLVMOpaqueMCJITMemoryManager * LLVMMCJITMemoryManagerRef
typedef uint8_t *(* LLVMMemoryManagerAllocateCodeSectionCallback) (void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, const char *SectionName)
typedef uint8_t *(* LLVMMemoryManagerAllocateDataSectionCallback) (void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, const char *SectionName, LLVMBool IsReadOnly)
typedef LLVMBool(* LLVMMemoryManagerFinalizeMemoryCallback) (void *Opaque, char **ErrMsg)
typedef void(* LLVMMemoryManagerDestroyCallback) (void *Opaque)
Functions
LLVM_C_ABI void LLVMLinkInMCJIT (void)
Empty function used to force the linker to link MCJIT.
LLVM_C_ABI void LLVMLinkInInterpreter (void)
Empty function used to force the linker to link the LLVM interpreter.
LLVM_C_ABI LLVMGenericValueRef LLVMCreateGenericValueOfInt (LLVMTypeRef Ty, unsigned long long N, LLVMBool IsSigned)
LLVM_C_ABI LLVMGenericValueRef LLVMCreateGenericValueOfPointer (void *P)
LLVM_C_ABI LLVMGenericValueRef LLVMCreateGenericValueOfFloat (LLVMTypeRef Ty, double N)
LLVM_C_ABI unsigned LLVMGenericValueIntWidth (LLVMGenericValueRef GenValRef)
LLVM_C_ABI unsigned long long LLVMGenericValueToInt (LLVMGenericValueRef GenVal, LLVMBool IsSigned)
LLVM_C_ABI void * LLVMGenericValueToPointer (LLVMGenericValueRef GenVal)
LLVM_C_ABI double LLVMGenericValueToFloat (LLVMTypeRef TyRef, LLVMGenericValueRef GenVal)
LLVM_C_ABI void LLVMDisposeGenericValue (LLVMGenericValueRef GenVal)
LLVM_C_ABI LLVMBool LLVMCreateExecutionEngineForModule (LLVMExecutionEngineRef *OutEE, LLVMModuleRef M, char **OutError)
LLVM_C_ABI LLVMBool LLVMCreateInterpreterForModule (LLVMExecutionEngineRef *OutInterp, LLVMModuleRef M, char **OutError)
LLVM_C_ABI LLVMBool LLVMCreateJITCompilerForModule (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, unsigned OptLevel, char **OutError)
LLVM_C_ABI void LLVMInitializeMCJITCompilerOptions (struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions)
LLVM_C_ABI LLVMBool LLVMCreateMCJITCompilerForModule (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, char **OutError)
Create an MCJIT execution engine for a module, with the given options.
LLVM_C_ABI void LLVMDisposeExecutionEngine (LLVMExecutionEngineRef EE)
LLVM_C_ABI void LLVMRunStaticConstructors (LLVMExecutionEngineRef EE)
LLVM_C_ABI void LLVMRunStaticDestructors (LLVMExecutionEngineRef EE)
LLVM_C_ABI int LLVMRunFunctionAsMain (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned ArgC, const char *const *ArgV, const char *const *EnvP)
LLVM_C_ABI LLVMGenericValueRef LLVMRunFunction (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef *Args)
LLVM_C_ABI void LLVMFreeMachineCodeForFunction (LLVMExecutionEngineRef EE, LLVMValueRef F)
LLVM_C_ABI void LLVMAddModule (LLVMExecutionEngineRef EE, LLVMModuleRef M)
LLVM_C_ABI LLVMBool LLVMRemoveModule (LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef *OutMod, char **OutError)
LLVM_C_ABI LLVMBool LLVMFindFunction (LLVMExecutionEngineRef EE, const char *Name, LLVMValueRef *OutFn)
LLVM_C_ABI void * LLVMRecompileAndRelinkFunction (LLVMExecutionEngineRef EE, LLVMValueRef Fn)
LLVM_C_ABI LLVMTargetDataRef LLVMGetExecutionEngineTargetData (LLVMExecutionEngineRef EE)
LLVM_C_ABI LLVMTargetMachineRef LLVMGetExecutionEngineTargetMachine (LLVMExecutionEngineRef EE)
LLVM_C_ABI void LLVMAddGlobalMapping (LLVMExecutionEngineRef EE, LLVMValueRef Global, void *Addr)
LLVM_C_ABI void * LLVMGetPointerToGlobal (LLVMExecutionEngineRef EE, LLVMValueRef Global)
LLVM_C_ABI uint64_t LLVMGetGlobalValueAddress (LLVMExecutionEngineRef EE, const char *Name)
LLVM_C_ABI uint64_t LLVMGetFunctionAddress (LLVMExecutionEngineRef EE, const char *Name)
LLVM_C_ABI LLVMBool LLVMExecutionEngineGetErrMsg (LLVMExecutionEngineRef EE, char **OutError)
Returns true on error, false on success.
LLVM_C_ABI LLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager (void *Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destroy)
Create a simple custom MCJIT memory manager.
LLVM_C_ABI void LLVMDisposeMCJITMemoryManager (LLVMMCJITMemoryManagerRef MM)
LLVM_C_ABI LLVMJITEventListenerRef LLVMCreateGDBRegistrationListener (void)
LLVM_C_ABI LLVMJITEventListenerRef LLVMCreateIntelJITEventListener (void)
LLVM_C_ABI LLVMJITEventListenerRef LLVMCreateOProfileJITEventListener (void)
LLVM_C_ABI LLVMJITEventListenerRef LLVMCreatePerfJITEventListener (void)

LLVMExecutionEngineRef

typedef struct LLVMOpaqueExecutionEngine* LLVMExecutionEngineRef

LLVMGenericValueRef

typedef struct LLVMOpaqueGenericValue* LLVMGenericValueRef

LLVMMCJITMemoryManagerRef

typedef struct LLVMOpaqueMCJITMemoryManager* LLVMMCJITMemoryManagerRef

LLVMMemoryManagerAllocateCodeSectionCallback

LLVMMemoryManagerAllocateDataSectionCallback

LLVMMemoryManagerDestroyCallback

typedef void(* LLVMMemoryManagerDestroyCallback) (void *Opaque)

LLVMMemoryManagerFinalizeMemoryCallback

typedef LLVMBool(* LLVMMemoryManagerFinalizeMemoryCallback) (void *Opaque, char **ErrMsg)

LLVMAddGlobalMapping()

LLVMAddModule()

LLVMCreateExecutionEngineForModule()

LLVMCreateGDBRegistrationListener()

LLVMCreateGenericValueOfFloat()

LLVMCreateGenericValueOfInt()

LLVMCreateGenericValueOfPointer()

LLVMCreateIntelJITEventListener()

LLVMCreateInterpreterForModule()

LLVMCreateJITCompilerForModule()

LLVMCreateMCJITCompilerForModule()

Create an MCJIT execution engine for a module, with the given options.

It is the responsibility of the caller to ensure that all fields in Options up to the given SizeOfOptions are initialized. It is correct to pass a smaller value of SizeOfOptions that omits some fields. The canonical way of using this is:

LLVMMCJITCompilerOptions options; LLVMInitializeMCJITCompilerOptions(&options, sizeof(options)); ... fill in those options you care about LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options), &error);

Note that this is also correct, though possibly suboptimal:

LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error);

Definition at line 160 of file ExecutionEngineBindings.cpp.

References llvm::EngineBuilder::create(), llvm::TargetOptions::EnableFastISel, F, llvm::EngineKind::JIT, LLVMInitializeMCJITCompilerOptions(), llvm::Mod, Mod, llvm::EngineBuilder::setCodeModel(), llvm::EngineBuilder::setEngineKind(), llvm::EngineBuilder::setErrorStr(), llvm::EngineBuilder::setMCJITMemoryManager(), llvm::EngineBuilder::setOptLevel(), llvm::EngineBuilder::setTargetOptions(), llvm::unwrap(), and llvm::wrap().

LLVMCreateOProfileJITEventListener()

LLVMCreatePerfJITEventListener()

LLVMCreateSimpleMCJITMemoryManager()

Create a simple custom MCJIT memory manager.

This memory manager can intercept allocations in a module-oblivious way. This will return NULL if any of the passed functions are NULL.

Parameters

Opaque An opaque client object to pass back to the callbacks.
AllocateCodeSection Allocate a block of memory for executable code.
AllocateDataSection Allocate a block of memory for data.
FinalizeMemory Set page permissions and flush cache. Return 0 on success, 1 on error.

Definition at line 402 of file ExecutionEngineBindings.cpp.

References functions, and llvm::wrap().

LLVMDisposeExecutionEngine()

LLVMDisposeGenericValue()

LLVMDisposeMCJITMemoryManager()

LLVMExecutionEngineGetErrMsg()

LLVMFindFunction()

LLVMFreeMachineCodeForFunction()

LLVMGenericValueIntWidth()

LLVMGenericValueToFloat()

LLVMGenericValueToInt()

LLVMGenericValueToPointer()

LLVMGetExecutionEngineTargetData()

LLVMGetExecutionEngineTargetMachine()

LLVMGetFunctionAddress()

LLVMGetGlobalValueAddress()

LLVMGetPointerToGlobal()

LLVMInitializeMCJITCompilerOptions()

LLVMLinkInInterpreter()

Empty function used to force the linker to link the LLVM interpreter.

Has no effect when called on a pre-built library (dylib interface).

Definition at line 30 of file Interpreter.cpp.

LLVMLinkInMCJIT()

Empty function used to force the linker to link MCJIT.

Has no effect when called on a pre-built library (dylib interface).

Definition at line 40 of file MCJIT.cpp.

LLVMRecompileAndRelinkFunction()

LLVMRemoveModule()

LLVMRunFunction()

LLVMRunFunctionAsMain()

LLVMRunStaticConstructors()

LLVMRunStaticDestructors()