From 5371aa2a1c9a4eeecffdb9ab7b2175732e49475b Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Wed, 19 Aug 2009 06:40:29 +0000 Subject: Allow passing around LLVMContext in ocaml. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79410 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/ocaml/bitreader/bitreader_ocaml.c | 14 ++++++++------ bindings/ocaml/bitreader/llvm_bitreader.ml | 6 ++++-- bindings/ocaml/bitreader/llvm_bitreader.mli | 22 ++++++++++++---------- 3 files changed, 24 insertions(+), 18 deletions(-) (limited to 'bindings/ocaml/bitreader') diff --git a/bindings/ocaml/bitreader/bitreader_ocaml.c b/bindings/ocaml/bitreader/bitreader_ocaml.c index 0fd484f123..5fd9f854d9 100644 --- a/bindings/ocaml/bitreader/bitreader_ocaml.c +++ b/bindings/ocaml/bitreader/bitreader_ocaml.c @@ -45,27 +45,29 @@ static void llvm_raise(value Prototype, char *Message) { /*===-- Modules -----------------------------------------------------------===*/ -/* Llvm.llmemorybuffer -> Llvm.module */ -CAMLprim value llvm_get_module_provider(LLVMMemoryBufferRef MemBuf) { +/* Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule */ +CAMLprim value llvm_get_module_provider(LLVMContextRef C, + LLVMMemoryBufferRef MemBuf) { CAMLparam0(); CAMLlocal2(Variant, MessageVal); char *Message; LLVMModuleProviderRef MP; - if (LLVMGetBitcodeModuleProvider(MemBuf, &MP, &Message)) + if (LLVMGetBitcodeModuleProviderInContext(C, MemBuf, &MP, &Message)) llvm_raise(llvm_bitreader_error_exn, Message); CAMLreturn((value) MemBuf); } -/* Llvm.llmemorybuffer -> Llvm.llmodule */ -CAMLprim value llvm_parse_bitcode(LLVMMemoryBufferRef MemBuf) { +/* Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule */ +CAMLprim value llvm_parse_bitcode(LLVMContextRef C, + LLVMMemoryBufferRef MemBuf) { CAMLparam0(); CAMLlocal2(Variant, MessageVal); LLVMModuleRef M; char *Message; - if (LLVMParseBitcode(MemBuf, &M, &Message)) + if (LLVMParseBitcodeInContext(C, MemBuf, &M, &Message)) llvm_raise(llvm_bitreader_error_exn, Message); CAMLreturn((value) M); diff --git a/bindings/ocaml/bitreader/llvm_bitreader.ml b/bindings/ocaml/bitreader/llvm_bitreader.ml index 816e156552..88587cbe1e 100644 --- a/bindings/ocaml/bitreader/llvm_bitreader.ml +++ b/bindings/ocaml/bitreader/llvm_bitreader.ml @@ -13,7 +13,9 @@ exception Error of string external register_exns : exn -> unit = "llvm_register_bitreader_exns" let _ = register_exns (Error "") -external get_module_provider : Llvm.llmemorybuffer -> Llvm.llmoduleprovider +external get_module_provider : Llvm.llcontext -> Llvm.llmemorybuffer -> + Llvm.llmoduleprovider = "llvm_get_module_provider" -external parse_bitcode : Llvm.llmemorybuffer -> Llvm.llmodule + +external parse_bitcode : Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule = "llvm_parse_bitcode" diff --git a/bindings/ocaml/bitreader/llvm_bitreader.mli b/bindings/ocaml/bitreader/llvm_bitreader.mli index 15b389bb83..5648b35fee 100644 --- a/bindings/ocaml/bitreader/llvm_bitreader.mli +++ b/bindings/ocaml/bitreader/llvm_bitreader.mli @@ -14,16 +14,18 @@ exception Error of string -(** [read_bitcode_file path] reads the bitcode for a new module [m] from the - file at [path]. Returns [Success m] if successful, and [Failure msg] - otherwise, where [msg] is a description of the error encountered. - See the function [llvm::getBitcodeModuleProvider]. *) -external get_module_provider : Llvm.llmemorybuffer -> Llvm.llmoduleprovider +(** [get_module_provider context mb] reads the bitcode for a new + module provider [m] from the memory buffer [mb] in the context [context]. + Returns [m] if successful, or raises [Error msg] otherwise, where [msg] is a + description of the error encountered. See the function + [llvm::getBitcodeModuleProvider]. *) +external get_module_provider : Llvm.llcontext -> Llvm.llmemorybuffer -> + Llvm.llmoduleprovider = "llvm_get_module_provider" -(** [parse_bitcode mb] parses the bitcode for a new module [m] from the memory - buffer [mb]. Returns [Success m] if successful, and [Failure msg] otherwise, - where [msg] is a description of the error encountered. - See the function [llvm::ParseBitcodeFile]. *) -external parse_bitcode : Llvm.llmemorybuffer -> Llvm.llmodule +(** [parse_bitcode context mb] parses the bitcode for a new module [m] from the + memory buffer [mb] in the context [context]. Returns [m] if successful, or + raises [Error msg] otherwise, where [msg] is a description of the error + encountered. See the function [llvm::ParseBitcodeFile]. *) +external parse_bitcode : Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule = "llvm_parse_bitcode" -- cgit v1.2.3