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/Target/TargetJITInfo.h" 18 #include "llvm/CodeGen/JITCodeEmitter.h" 19 20 namespace llvm { 21 class PPCTargetMachine; 22 23 class PPCJITInfo : public TargetJITInfo { 24 protected: 25 PPCTargetMachine &TM; 26 bool is64Bit; 27 public: PPCJITInfo(PPCTargetMachine & tm,bool tmIs64Bit)28 PPCJITInfo(PPCTargetMachine &tm, bool tmIs64Bit) : TM(tm) { 29 useGOT = 0; 30 is64Bit = tmIs64Bit; 31 } 32 33 virtual StubLayout getStubLayout(); 34 virtual void *emitFunctionStub(const Function* F, void *Fn, 35 JITCodeEmitter &JCE); 36 virtual LazyResolverFn getLazyResolverFunction(JITCompilerFn); 37 virtual void relocate(void *Function, MachineRelocation *MR, 38 unsigned NumRelocs, unsigned char* GOTBase); 39 40 /// replaceMachineCodeForFunction - Make it so that calling the function 41 /// whose machine code is at OLD turns into a call to NEW, perhaps by 42 /// overwriting OLD with a branch to NEW. This is used for self-modifying 43 /// code. 44 /// 45 virtual void replaceMachineCodeForFunction(void *Old, void *New); 46 }; 47 } 48 49 #endif 50