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 -> bool
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.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 -> llexecutionengine
create 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 -> unit
dispose ee
releases the memory used by the execution engine and must be
invoked to avoid memory leaks.val add_module : Llvm.llmodule -> llexecutionengine -> unit
add_module m ee
adds the module m
to the execution engine ee
.val remove_module : Llvm.llmodule -> llexecutionengine -> unit
remove_module m ee
removes the module m
from the execution engine
ee
. Raises Error msg
if an error occurs.val run_static_ctors : llexecutionengine -> unit
run_static_ctors ee
executes the static constructors of each module in
the execution engine ee
.val run_static_dtors : llexecutionengine -> unit
run_static_dtors ee
executes the static destructors of each module in
the execution engine ee
.val data_layout : llexecutionengine -> Llvm_target.DataLayout.t
data_layout ee
is the data layout of the execution engine ee
.val add_global_mapping : Llvm.llvalue ->
'a Ctypes.ptr -> llexecutionengine -> unit
add_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 -> 'a
get_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 -> 'a
get_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.