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