module Llvm_executionengine:sig..end
This interface provides an OCaml API for LLVM execution engine (JIT/
interpreter), the classes in the ExecutionEngine library.
exception Error of string
val initialize : unit -> boolinitialize () 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.type llexecutionengine
type llcompileroptions = {
|
opt_level : |
|
code_model : |
|
no_framepointer_elim : |
|
enable_fast_isel : |
llvm::TargetOptions.val default_compiler_options : llcompileroptions{ 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 Llvm_executionengine.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_pointer_to_global : Llvm.llvalue -> 'a Ctypes.typ -> llexecutionengine -> 'aget_pointer_to_global gv typ ee returns the value of the global
variable gv in the execution engine ee as type typ, which may
be a pointer type (e.g. int ptr typ) for global variables or
a function (e.g. (int -> int) typ) type for functions, and which
will be live as long as gv and ee are.