From 0dd27da1841ca50d00aad3465f4f9b6a646fd64e Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Tue, 2 Mar 2010 23:59:03 +0000 Subject: [PATCH] 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 --- .../executionengine/executionengine_ocaml.c | 16 +++----------- .../executionengine/llvm_executionengine.ml | 4 +--- .../executionengine/llvm_executionengine.mli | 21 ++++++------------- 3 files changed, 10 insertions(+), 31 deletions(-) diff --git a/bindings/ocaml/executionengine/executionengine_ocaml.c b/bindings/ocaml/executionengine/executionengine_ocaml.c index bc2b08196b6..d12a9f7acde 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 921d424ad51..95faa58cc54 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 ec469fcf047..ac6665b2bc8 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 -- 2.34.1