Skip to content

Commit

Permalink
Fix the LLVMCreateJITCompiler C binding.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Gordon Henriksen committed Aug 8, 2008
1 parent 7a61d70 commit c13c4d6
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 7 deletions.
12 changes: 11 additions & 1 deletion bindings/ocaml/executionengine/executionengine_ocaml.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 2 additions & 0 deletions bindings/ocaml/executionengine/llvm_executionengine.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 12 additions & 3 deletions bindings/ocaml/executionengine/llvm_executionengine.mli
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions include/llvm-c/ExecutionEngine.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ int LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp,

int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
LLVMModuleProviderRef MP,
int Fast,
char **OutError);

void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE);
Expand Down
6 changes: 3 additions & 3 deletions lib/ExecutionEngine/ExecutionEngineBindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ int LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp,

int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
LLVMModuleProviderRef MP,
char **OutError,
bool Fast = false) {
int Fast,
char **OutError) {
std::string Error;
if (ExecutionEngine *JIT = ExecutionEngine::createJIT(unwrap(MP), &Error, 0,
Fast)) {
Fast != 0)) {
*OutJIT = wrap(JIT);
return 0;
}
Expand Down

0 comments on commit c13c4d6

Please sign in to comment.