package llvm
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=82401fea7b79d0078043f7598b835284d6650a75b93e64b6f761ea7b63097501
    
    
  md5=0333b37c90e183d5298470d5b70a87e4
    
    
  doc/llvm_executionengine/Llvm_executionengine/index.html
Module Llvm_executionengine
JIT Interpreter.
This interface provides an OCaml API for LLVM execution engine (JIT/ interpreter), the classes in the ExecutionEngine library.
initialize () initializes the backend corresponding to the host. Returns true if initialization is successful; false indicates that there is no such backend or it is unable to emit object code via MCJIT.
An execution engine is either a JIT compiler or an interpreter, capable of directly loading an LLVM module and executing its functions without first invoking a static compiler and generating a native executable.
type llcompileroptions = {opt_level : int;code_model : Llvm_target.CodeModel.t;no_framepointer_elim : bool;enable_fast_isel : bool;
}MCJIT compiler options. See llvm::TargetOptions.
val default_compiler_options : llcompileroptionsDefault MCJIT compiler options: { opt_level = 0; code_model = CodeModel.JIT_default; no_framepointer_elim = false; enable_fast_isel = false }
val create : ?options:llcompileroptions -> Llvm.llmodule -> llexecutionenginecreate m optlevel creates a new MCJIT just-in-time compiler, taking ownership of the module m if successful with the desired optimization level optlevel. Raises Error msg if an error occurrs. The execution engine is not garbage collected and must be destroyed with dispose ee.
Run initialize before using this function.
See the function llvm::EngineBuilder::create.
val dispose : llexecutionengine -> unitdispose ee releases the memory used by the execution engine and must be invoked to avoid memory leaks.
val add_module : Llvm.llmodule -> llexecutionengine -> unitadd_module m ee adds the module m to the execution engine ee.
val remove_module : Llvm.llmodule -> llexecutionengine -> unitremove_module m ee removes the module m from the execution engine ee. Raises Error msg if an error occurs.
val run_static_ctors : llexecutionengine -> unitrun_static_ctors ee executes the static constructors of each module in the execution engine ee.
val run_static_dtors : llexecutionengine -> unitrun_static_dtors ee executes the static destructors of each module in the execution engine ee.
val data_layout : llexecutionengine -> Llvm_target.DataLayout.tdata_layout ee is the data layout of the execution engine ee.
val add_global_mapping : 
  Llvm.llvalue ->
  'a Ctypes.ptr ->
  llexecutionengine ->
  unitadd_global_mapping gv ptr ee tells the execution engine ee that the global gv is at the specified location ptr, which must outlive gv and ee. All uses of gv in the compiled code will refer to ptr.
val get_global_value_address : 
  string ->
  'a Ctypes.typ ->
  llexecutionengine ->
  'aget_global_value_address id typ ee returns a pointer to the identifier id as type typ, which will be a pointer type for a value, and which will be live as long as id and ee are. Caution: this function finalizes, i.e. forces code generation, all loaded modules. Further modifications to the modules will not have any effect.
val get_function_address : string -> 'a Ctypes.typ -> llexecutionengine -> 'aget_function_address fn typ ee returns a pointer to the function fn as type typ, which will be a pointer type for a function (e.g. (int -> int) typ), and which will be live as long as fn and ee are. Caution: this function finalizes, i.e. forces code generation, all loaded modules. Further modifications to the modules will not have any effect.