diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-08 20:49:28 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-08 20:49:28 +0000 |
commit | 5225cd66cf3ad9b3f914b8e6cba1268ab5def5f4 (patch) | |
tree | 917a8fd477b7345d5faf8e13ea4b4d55b94f1955 /llvm/bindings/ocaml/executionengine | |
parent | 994c8e393daee8890bfe9c05930d05d414292dc8 (diff) | |
download | bcm5719-llvm-5225cd66cf3ad9b3f914b8e6cba1268ab5def5f4.tar.gz bcm5719-llvm-5225cd66cf3ad9b3f914b8e6cba1268ab5def5f4.zip |
Fix the LLVMCreateJITCompiler C binding.
Evan broke it in r54523 by adding a parameter in the implementation without
updating the header correspondingly.
llvm-svn: 54555
Diffstat (limited to 'llvm/bindings/ocaml/executionengine')
3 files changed, 25 insertions, 4 deletions
diff --git a/llvm/bindings/ocaml/executionengine/executionengine_ocaml.c b/llvm/bindings/ocaml/executionengine/executionengine_ocaml.c index 4af771123c0..fc3848a1eb1 100644 --- a/llvm/bindings/ocaml/executionengine/executionengine_ocaml.c +++ b/llvm/bindings/ocaml/executionengine/executionengine_ocaml.c @@ -181,7 +181,17 @@ CAMLprim LLVMExecutionEngineRef llvm_ee_create_jit(LLVMModuleProviderRef MP) { LLVMExecutionEngineRef JIT; char *Error; - if (LLVMCreateJITCompiler(&JIT, MP, &Error)) + if (LLVMCreateJITCompiler(&JIT, MP, 0, &Error)) + llvm_raise(llvm_ee_error_exn, Error); + return JIT; +} + +/* llmoduleprovider -> ExecutionEngine.t */ +CAMLprim LLVMExecutionEngineRef +llvm_ee_create_fast_jit(LLVMModuleProviderRef MP) { + LLVMExecutionEngineRef JIT; + char *Error; + if (LLVMCreateJITCompiler(&JIT, MP, 1, &Error)) llvm_raise(llvm_ee_error_exn, Error); return JIT; } diff --git a/llvm/bindings/ocaml/executionengine/llvm_executionengine.ml b/llvm/bindings/ocaml/executionengine/llvm_executionengine.ml index 4b9132df052..cf9acc7cb6b 100644 --- a/llvm/bindings/ocaml/executionengine/llvm_executionengine.ml +++ b/llvm/bindings/ocaml/executionengine/llvm_executionengine.ml @@ -62,6 +62,8 @@ module ExecutionEngine = struct = "llvm_ee_create_interpreter" external create_jit: Llvm.llmoduleprovider -> t = "llvm_ee_create_jit" + external create_fast_jit: Llvm.llmoduleprovider -> t + = "llvm_ee_create_fast_jit" external dispose: t -> unit = "llvm_ee_dispose" external add_module_provider: Llvm.llmoduleprovider -> t -> unit diff --git a/llvm/bindings/ocaml/executionengine/llvm_executionengine.mli b/llvm/bindings/ocaml/executionengine/llvm_executionengine.mli index 9794f358fff..17da1dffe55 100644 --- a/llvm/bindings/ocaml/executionengine/llvm_executionengine.mli +++ b/llvm/bindings/ocaml/executionengine/llvm_executionengine.mli @@ -100,12 +100,21 @@ module ExecutionEngine: sig val create_interpreter: Llvm.llmoduleprovider -> t (** [create_jit mp] creates a new JIT (just-in-time compiler), taking - ownership of the module provider [mp] if successful. Raises [Error msg] if - an error occurrs. The execution engine is not garbage collected and must - be destroyed with [dispose ee]. + ownership of the module provider [mp] 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]. See the function [llvm::ExecutionEngine::create]. *) val create_jit: Llvm.llmoduleprovider -> t + (** [create_fast_jit mp] creates a new JIT (just-in-time compiler) which + favors compilation speed over code quality. It takes ownership of the + module provider [mp] 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::ExecutionEngine::create]. *) + val create_fast_jit: Llvm.llmoduleprovider -> t + (** [dispose ee] releases the memory used by the execution engine and must be invoked to avoid memory leaks. *) val dispose: t -> unit |