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 20namespace llvm { 21 class PPCTargetMachine; 22 23 class PPCJITInfo : public TargetJITInfo { 24 protected: 25 PPCTargetMachine &TM; 26 bool is64Bit; 27 public: 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