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