//===-- MCJIT.h - Class definition for the MCJIT ----------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_EXECUTIONENGINE_MCJIT_H #define LLVM_LIB_EXECUTIONENGINE_MCJIT_H #include "llvm/ExecutionEngine/ExecutionEngine.h" namespace llvm { class MCJIT : public ExecutionEngine { MCJIT(Module *M, TargetMachine &tm, TargetJITInfo &tji, JITMemoryManager *JMM, CodeGenOpt::Level OptLevel, bool AllocateGVsWithCode); public: ~MCJIT(); /// @name ExecutionEngine interface implementation /// @{ virtual void *getPointerToBasicBlock(BasicBlock *BB); virtual void *getPointerToFunction(Function *F); virtual void *recompileAndRelinkFunction(Function *F); virtual void freeMachineCodeForFunction(Function *F); virtual GenericValue runFunction(Function *F, const std::vector &ArgValues); /// @} /// @name (Private) Registration Interfaces /// @{ static void Register() { MCJITCtor = createJIT; } // FIXME: This routine is scheduled for termination. Do not use it. static TargetMachine *selectTarget(Module *M, StringRef MArch, StringRef MCPU, const SmallVectorImpl& MAttrs, std::string *Err); static ExecutionEngine *createJIT(Module *M, std::string *ErrorStr, JITMemoryManager *JMM, CodeGenOpt::Level OptLevel, bool GVsWithCode, CodeModel::Model CMM, StringRef MArch, StringRef MCPU, const SmallVectorImpl& MAttrs); // @} }; } // End llvm namespace #endif