Expose the optimization level for the jit in ocaml.

llvm-svn: 97610
This commit is contained in:
Erick Tryzelaar 2010-03-02 23:59:03 +00:00
parent 98b05d67e9
commit 94feaafe1e
3 changed files with 10 additions and 31 deletions

View File

@ -187,22 +187,12 @@ llvm_ee_create_interpreter(LLVMModuleRef M) {
return Interp;
}
/* llmodule -> ExecutionEngine.t */
/* llmodule -> int -> ExecutionEngine.t */
CAMLprim LLVMExecutionEngineRef
llvm_ee_create_jit(LLVMModuleRef M) {
llvm_ee_create_jit(LLVMModuleRef M, value OptLevel) {
LLVMExecutionEngineRef JIT;
char *Error;
if (LLVMCreateJITCompilerForModule(&JIT, M, 3, &Error))
llvm_raise(llvm_ee_error_exn, Error);
return JIT;
}
/* llmodule -> ExecutionEngine.t */
CAMLprim LLVMExecutionEngineRef
llvm_ee_create_fast_jit(LLVMModuleRef M) {
LLVMExecutionEngineRef JIT;
char *Error;
if (LLVMCreateJITCompiler(&JIT, M, 0, &Error))
if (LLVMCreateJITCompilerForModule(&JIT, M, Int_val(OptLevel), &Error))
llvm_raise(llvm_ee_error_exn, Error);
return JIT;
}

View File

@ -60,10 +60,8 @@ module ExecutionEngine = struct
= "llvm_ee_create"
external create_interpreter: Llvm.llmodule -> t
= "llvm_ee_create_interpreter"
external create_jit: Llvm.llmodule -> t
external create_jit: Llvm.llmodule -> int -> t
= "llvm_ee_create_jit"
external create_fast_jit: Llvm.llmodule -> t
= "llvm_ee_create_fast_jit"
external dispose: t -> unit
= "llvm_ee_dispose"
external add_module: Llvm.llmodule -> t -> unit

View File

@ -99,22 +99,13 @@ module ExecutionEngine: sig
See the function [llvm::EngineBuilder::create]. *)
val create_interpreter: Llvm.llmodule -> t
(** [create_jit m] creates a new JIT (just-in-time compiler), taking
ownership of the module [m] if successful. This function creates a JIT
which favors code quality over compilation speed. Raises [Error msg] if an
error occurrs. The execution engine is not garbage collected and must be
destroyed with [dispose ee].
(** [create_jit m optlevel] creates a new JIT (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].
See the function [llvm::EngineBuilder::create]. *)
val create_jit: Llvm.llmodule -> t
(** [create_fast_jit m] creates a new JIT (just-in-time compiler) which
favors compilation speed over code quality. It takes ownership of the
module [m] if successful. Raises [Error msg] if an error occurrs. The
execution engine is not garbage collected and must be destroyed with
[dispose ee].
See the function [llvm::EngineBuilder::create]. *)
val create_fast_jit: Llvm.llmodule -> t
val create_jit : Llvm.llmodule -> int -> t
(** [dispose ee] releases the memory used by the execution engine and must be
invoked to avoid memory leaks. *)
val dispose: t -> unit