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 | c13c4d6a1bbc91a9e3bb9f964f32f3a999071070 (patch) | |
tree | 5e46cae5df29d42da7ed3d9f647039ddf7b5ed34 /bindings | |
parent | 7a61d701c0870642e075e90b6a1ad03a8ac9bc67 (diff) |
Fix the LLVMCreateJITCompiler C binding.
Evan broke it in r54523 by adding a parameter in the implementation without
updating the header correspondingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54555 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings')
3 files changed, 25 insertions, 4 deletions
diff --git a/bindings/ocaml/executionengine/executionengine_ocaml.c b/bindings/ocaml/executionengine/executionengine_ocaml.c index 4af771123c..fc3848a1eb 100644 --- a/bindings/ocaml/executionengine/executionengine_ocaml.c +++ b/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/bindings/ocaml/executionengine/llvm_executionengine.ml b/bindings/ocaml/executionengine/llvm_executionengine.ml index 4b9132df05..cf9acc7cb6 100644 --- a/bindings/ocaml/executionengine/llvm_executionengine.ml +++ b/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/bindings/ocaml/executionengine/llvm_executionengine.mli b/bindings/ocaml/executionengine/llvm_executionengine.mli index 9794f358ff..17da1dffe5 100644 --- a/bindings/ocaml/executionengine/llvm_executionengine.mli +++ b/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 |