[OCaml] Rework Llvm_executionengine using ctypes.
authorPeter Zotov <whitequark@whitequark.org>
Fri, 31 Oct 2014 09:05:36 +0000 (09:05 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Fri, 31 Oct 2014 09:05:36 +0000 (09:05 +0000)
commitced3d172f8d83f50b4c8dec136f8123133bad36f
treea480dbae8c4037533ffcf4c95ddb7fbcf2380fec
parent130901ddf15ad290f8401efae1784919c1867fa1
[OCaml] Rework Llvm_executionengine using ctypes.

Since JIT->MCJIT migration, most of the ExecutionEngine interface
became deprecated and/or broken. This especially affected the OCaml
bindings, as runFunction is no longer available, and unlike in C,
it is not possible to coerce a pointer to a function and call it
in OCaml.

In practice, LLVM 3.5 shipped completely unusable
Llvm_executionengine.

The GenericValue interface and runFunction were essentially
a poor man's FFI. As such, this interface was removed and instead
a dependency on ctypes >=0.3 added, which handled platform-specific
aspects of accessing data and calling functions.

The new interface does not expose JIT (which is a shim around MCJIT),
as well as the interpreter (which can't handle a lot of valid IR).

Llvm_executionengine.add_global_mapping is currently unusable
due to PR20656.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220957 91177308-0d34-0410-b5e6-96231b3b80d8
bindings/ocaml/Makefile.ocaml
bindings/ocaml/executionengine/Makefile
bindings/ocaml/executionengine/executionengine_ocaml.c
bindings/ocaml/executionengine/llvm_executionengine.ml
bindings/ocaml/executionengine/llvm_executionengine.mli
bindings/ocaml/llvm/META.llvm.in
test/Bindings/Ocaml/executionengine.ml