[LLVMdev] Thoughts about ExecutionEngine/MCJIT interface

Paweł Bylica chfast at gmail.com
Fri Mar 13 10:57:23 PDT 2015


I think ExecutionEngine as a common interface for both Interpreter and
MCJIT is almost useless in the current form. There are separated methods in
ExecutionEngine for similar or the same features provided by Interpreter
and MCJIT, i.e. to get a pointer to function you should call
getPointerToFunction() for Interpreter or getFunctionAddress() for MCJIT.

Personally, I'm using MCJIT and wish to have access to some methods not
available from ExecutionEngine. E.g. I would like to use getSymbolAddress()
instead of getFunctionAddress() sometimes as getFunctionAddress() do some
additional work what I'm sure has be done already.

Maybe it's time face the truth that Interpreter and MCJIT based solutions
are not so similar and different interfaces are needed. Or maybe some
unification is possible?

My propositions / discussion starting points:

   1. Expose MCJIT header in public API. It will allow users to cast
   ExecutionEngine instance to MCJIT instance.
   2. Separate Interpreter and MCJIT interfaces and add them to API.
   ExecutionEngine can still be a base class for real common part (like module
   3. Try to alter ExecutionEngine interface to unify common Interpreter
   and MCJIT features. Is it possible to have one getFunction() method?

- Paweł
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150313/149be2dc/attachment.html>

More information about the llvm-dev mailing list