1 //===-- PPCJITInfo.h - PowerPC impl. of the JIT interface -------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file contains the PowerPC implementation of the TargetJITInfo class. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef POWERPC_JITINFO_H 15 #define POWERPC_JITINFO_H 16 17 #include "llvm/CodeGen/JITCodeEmitter.h" 18 #include "llvm/Target/TargetJITInfo.h" 19 20 namespace llvm { 21 class PPCSubtarget; 22 class PPCJITInfo : public TargetJITInfo { 23 protected: 24 PPCSubtarget &Subtarget; 25 bool is64Bit; 26 27 public: 28 PPCJITInfo(PPCSubtarget &STI); 29 30 StubLayout getStubLayout() override; 31 void *emitFunctionStub(const Function *F, void *Fn, 32 JITCodeEmitter &JCE) override; 33 LazyResolverFn getLazyResolverFunction(JITCompilerFn) override; 34 void relocate(void *Function, MachineRelocation *MR, unsigned NumRelocs, 35 unsigned char *GOTBase) override; 36 37 /// replaceMachineCodeForFunction - Make it so that calling the function 38 /// whose machine code is at OLD turns into a call to NEW, perhaps by 39 /// overwriting OLD with a branch to NEW. This is used for self-modifying 40 /// code. 41 /// 42 void replaceMachineCodeForFunction(void *Old, void *New) override; 43 }; 44 } 45 46 #endif 47