Introducing the llvm::MCJIT framework
The MCJIT
class is a novel JIT implementation for LLVM. It differs from the old JIT implementation by the MC framework, explored in Chapter 6, The Backend. MC provides a uniform representation for instructions and is a framework shared among the assembler, disassembler, assembly printer and MCJIT.
The first advantage of using the MC library is that targets need to specify their instruction encodings only once because this information is used by all the subsystems. Therefore, when writing an LLVM backend, if you implement the object code emission for your target, you have the JIT functionality as well.
The llvm::JIT
framework is going to be removed after LLVM 3.5 and completely replaced by the llvm::MCJIT
framework. So, why did we study the old JIT? Although they are different implementations, the ExecutionEngine
class is generic and most concepts apply to both engines. Most importantly, as in the LLVM 3.4 release, the MCJIT design does not support some...