diff options
author | Erick Tryzelaar <idadesub@users.sourceforge.net> | 2010-03-02 23:59:03 +0000 |
---|---|---|
committer | Erick Tryzelaar <idadesub@users.sourceforge.net> | 2010-03-02 23:59:03 +0000 |
commit | 0dd27da1841ca50d00aad3465f4f9b6a646fd64e (patch) | |
tree | 7536a32951dd2a23641f5893efaff58db82b5cda /bindings/ocaml | |
parent | 16609f3c5c26ba34603ae0d7ebab86fb11a72722 (diff) |
Expose the optimization level for the jit in ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97610 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml')
3 files changed, 10 insertions, 31 deletions
diff --git a/bindings/ocaml/executionengine/executionengine_ocaml.c b/bindings/ocaml/executionengine/executionengine_ocaml.c index bc2b08196b..d12a9f7acd 100644 --- a/bindings/ocaml/executionengine/executionengine_ocaml.c +++ b/bindings/ocaml/executionengine/executionengine_ocaml.c @@ -187,22 +187,12 @@ llvm_ee_create_interpreter(LLVMModuleRef M) { return Interp; } -/* llmodule -> ExecutionEngine.t */ -CAMLprim LLVMExecutionEngineRef -llvm_ee_create_jit(LLVMModuleRef M) { - LLVMExecutionEngineRef JIT; - char *Error; - if (LLVMCreateJITCompilerForModule(&JIT, M, 3, &Error)) - llvm_raise(llvm_ee_error_exn, Error); - return JIT; -} - -/* llmodule -> ExecutionEngine.t */ +/* llmodule -> int -> ExecutionEngine.t */ CAMLprim LLVMExecutionEngineRef -llvm_ee_create_fast_jit(LLVMModuleRef M) { +llvm_ee_create_jit(LLVMModuleRef M, value OptLevel) { 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; } diff --git a/bindings/ocaml/executionengine/llvm_executionengine.ml b/bindings/ocaml/executionengine/llvm_executionengine.ml index 921d424ad5..95faa58cc5 100644 --- a/bindings/ocaml/executionengine/llvm_executionengine.ml +++ b/bindings/ocaml/executionengine/llvm_executionengine.ml @@ -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 diff --git a/bindings/ocaml/executionengine/llvm_executionengine.mli b/bindings/ocaml/executionengine/llvm_executionengine.mli index ec469fcf04..ac6665b2bc 100644 --- a/bindings/ocaml/executionengine/llvm_executionengine.mli +++ b/bindings/ocaml/executionengine/llvm_executionengine.mli @@ -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 |