Expose the optimization level for the jit in ocaml.
authorErick Tryzelaar <idadesub@users.sourceforge.net>
Tue, 2 Mar 2010 23:59:03 +0000 (23:59 +0000)
committerErick Tryzelaar <idadesub@users.sourceforge.net>
Tue, 2 Mar 2010 23:59:03 +0000 (23:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97610 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/ocaml/executionengine/executionengine_ocaml.c
bindings/ocaml/executionengine/llvm_executionengine.ml
bindings/ocaml/executionengine/llvm_executionengine.mli

index bc2b08196b6d1f12a9b57248ce065720df2f418d..d12a9f7acdeb7f623305bc37d6bcb76285d8254c 100644 (file)
@@ -187,22 +187,12 @@ llvm_ee_create_interpreter(LLVMModuleRef M) {
   return Interp;
 }
 
   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
 CAMLprim LLVMExecutionEngineRef
-llvm_ee_create_fast_jit(LLVMModuleRef M) {
+llvm_ee_create_jit(LLVMModuleRef M, value OptLevel) {
   LLVMExecutionEngineRef JIT;
   char *Error;
   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;
 }
     llvm_raise(llvm_ee_error_exn, Error);
   return JIT;
 }
index 921d424ad51a01bc76a30c121a9248ee9268cc33..95faa58cc548a969392497a2335a7218fdb03c39 100644 (file)
@@ -60,10 +60,8 @@ module ExecutionEngine = struct
     = "llvm_ee_create"
   external create_interpreter: Llvm.llmodule -> t
     = "llvm_ee_create_interpreter"
     = "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"
     = "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
   external dispose: t -> unit
     = "llvm_ee_dispose"
   external add_module: Llvm.llmodule -> t -> unit
index ec469fcf047439a2260e3ba7b10dff612fe80e3b..ac6665b2bc85aec19483ab4b14e59461b738394a 100644 (file)
@@ -99,22 +99,13 @@ module ExecutionEngine: sig
       See the function [llvm::EngineBuilder::create]. *)
   val create_interpreter: Llvm.llmodule -> t
   
       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]. *)
       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
   (** [dispose ee] releases the memory used by the execution engine and must be
       invoked to avoid memory leaks. *)
   val dispose: t -> unit