You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,93 +0,0 @@
|
||||
(*===-- llvm_executionengine.mli - LLVM OCaml Interface -------*- OCaml -*-===*
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is distributed under the University of Illinois Open Source
|
||||
* License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===*)
|
||||
|
||||
(** JIT Interpreter.
|
||||
|
||||
This interface provides an OCaml API for LLVM execution engine (JIT/
|
||||
interpreter), the classes in the [ExecutionEngine] library. *)
|
||||
|
||||
exception Error of string
|
||||
|
||||
(** [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. *)
|
||||
val initialize : unit -> bool
|
||||
|
||||
(** 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 llexecutionengine
|
||||
|
||||
(** MCJIT compiler options. See [llvm::TargetOptions]. *)
|
||||
type llcompileroptions = {
|
||||
opt_level: int;
|
||||
code_model: Llvm_target.CodeModel.t;
|
||||
no_framepointer_elim: bool;
|
||||
enable_fast_isel: bool;
|
||||
}
|
||||
|
||||
(** Default MCJIT compiler options:
|
||||
[{ opt_level = 0; code_model = CodeModel.JIT_default;
|
||||
no_framepointer_elim = false; enable_fast_isel = false }] *)
|
||||
val default_compiler_options : llcompileroptions
|
||||
|
||||
(** [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 {!initialize} before using this function.
|
||||
|
||||
See the function [llvm::EngineBuilder::create]. *)
|
||||
val create : ?options:llcompileroptions -> Llvm.llmodule -> llexecutionengine
|
||||
|
||||
(** [dispose ee] releases the memory used by the execution engine and must be
|
||||
invoked to avoid memory leaks. *)
|
||||
val dispose : llexecutionengine -> unit
|
||||
|
||||
(** [add_module m ee] adds the module [m] to the execution engine [ee]. *)
|
||||
val add_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 remove_module : Llvm.llmodule -> llexecutionengine -> unit
|
||||
|
||||
(** [run_static_ctors ee] executes the static constructors of each module in
|
||||
the execution engine [ee]. *)
|
||||
val run_static_ctors : llexecutionengine -> unit
|
||||
|
||||
(** [run_static_dtors ee] executes the static destructors of each module in
|
||||
the execution engine [ee]. *)
|
||||
val run_static_dtors : llexecutionengine -> unit
|
||||
|
||||
(** [data_layout ee] is the data layout of the execution engine [ee]. *)
|
||||
val data_layout : llexecutionengine -> Llvm_target.DataLayout.t
|
||||
|
||||
(** [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 add_global_mapping : Llvm.llvalue -> 'a Ctypes.ptr -> llexecutionengine -> unit
|
||||
|
||||
(** [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_global_value_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. *)
|
||||
val get_function_address : string -> 'a Ctypes.typ -> llexecutionengine -> 'a
|
Reference in New Issue
Block a user