[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)
commitb1f54ff42f96893591dba930320045c4b54c533b
tree5689ec09f39bfa6fdbf4c1efef08ddffe52f4ab1
parentc79e5e3432b815f8794e6bd54d3bf22d6c6dc19c
[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.

llvm-svn: 220957
llvm/bindings/ocaml/Makefile.ocaml
llvm/bindings/ocaml/executionengine/Makefile
llvm/bindings/ocaml/executionengine/executionengine_ocaml.c
llvm/bindings/ocaml/executionengine/llvm_executionengine.ml
llvm/bindings/ocaml/executionengine/llvm_executionengine.mli
llvm/bindings/ocaml/llvm/META.llvm.in
llvm/test/Bindings/Ocaml/executionengine.ml