blob: 9a24ee6d5bdd6554efade7afcb0368eb2774080f [file] [log] [blame]
Chris Lattnerb9459b72005-10-14 23:53:41 +00001//===- PPCJITInfo.h - PowerPC impl. of the JIT interface --------*- C++ -*-===//
Misha Brukmanb5f662f2005-04-21 23:30:14 +00002//
Misha Brukman5dfe3a92004-06-21 16:55:25 +00003// The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
Misha Brukmanb5f662f2005-04-21 23:30:14 +00007//
Misha Brukman5dfe3a92004-06-21 16:55:25 +00008//===----------------------------------------------------------------------===//
9//
10// This file contains the PowerPC implementation of the TargetJITInfo class.
11//
12//===----------------------------------------------------------------------===//
13
Misha Brukman01458812004-08-11 00:11:25 +000014#ifndef POWERPC_JITINFO_H
15#define POWERPC_JITINFO_H
Misha Brukman5dfe3a92004-06-21 16:55:25 +000016
17#include "llvm/Target/TargetJITInfo.h"
18
19namespace llvm {
20 class TargetMachine;
Misha Brukman5dfe3a92004-06-21 16:55:25 +000021
Chris Lattnerb9459b72005-10-14 23:53:41 +000022 // FIXME: Merge into one PPCJITInfo class.
Misha Brukman5dfe3a92004-06-21 16:55:25 +000023 class PowerPCJITInfo : public TargetJITInfo {
Misha Brukman01458812004-08-11 00:11:25 +000024 protected:
Misha Brukman5dfe3a92004-06-21 16:55:25 +000025 TargetMachine &TM;
26 public:
Andrew Lenharth422f3d52005-07-29 23:32:02 +000027 PowerPCJITInfo(TargetMachine &tm) : TM(tm) {useGOT = 0;}
Misha Brukman5dfe3a92004-06-21 16:55:25 +000028
29 /// addPassesToJITCompile - Add passes to the specified pass manager to
30 /// implement a fast dynamic compiler for this target. Return true if this
31 /// is not supported for this target.
32 ///
33 virtual void addPassesToJITCompile(FunctionPassManager &PM);
Misha Brukman5dfe3a92004-06-21 16:55:25 +000034 };
Chris Lattnerb9459b72005-10-14 23:53:41 +000035
36 class PPC32JITInfo : public PowerPCJITInfo {
37 public:
38 PPC32JITInfo(TargetMachine &tm) : PowerPCJITInfo(tm) {}
39
40 virtual void *emitFunctionStub(void *Fn, MachineCodeEmitter &MCE);
41 virtual LazyResolverFn getLazyResolverFunction(JITCompilerFn);
42 virtual void relocate(void *Function, MachineRelocation *MR,
43 unsigned NumRelocs, unsigned char* GOTBase);
44
45 /// replaceMachineCodeForFunction - Make it so that calling the function
46 /// whose machine code is at OLD turns into a call to NEW, perhaps by
47 /// overwriting OLD with a branch to NEW. This is used for self-modifying
48 /// code.
49 ///
50 virtual void replaceMachineCodeForFunction(void *Old, void *New);
51 };
Misha Brukman5dfe3a92004-06-21 16:55:25 +000052}
53
54#endif