PPCJITInfo.h revision 31d157ae1ac2cd9c787dc3c1d28e64c682803844
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