Implementing our own JIT compiler with LLJIT
The lli
tool is nothing more than a thin wrapper around LLVM APIs. In the first section, we learned that the ORC engine uses a layered approach. The ExecutionSession
class represents a running JIT program. Besides other items, this class holds information such as used JITDylib
instances. A JITDylib
instance is a symbol table that maps symbol names to addresses. For example, these can be symbols defined in an LLVM IR file or the symbols of a loaded shared library.
For executing LLVM IR, we do not need to create a JIT stack on our own, as the LLJIT
class provides this functionality. You can also make use of this class when migrating from the older MCJIT implementation, as this class essentially provides the same functionality.
To illustrate the functions of the LLJIT
utility, we will be creating an interactive calculator application while incorporating JIT functionality. The main source code of our JIT calculator will be extended from...