//
// The LLVM Compiler Infrastructure
//
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
#define ALPHA_JITINFO_H
#include "llvm/Target/TargetJITInfo.h"
-#include "llvm/GlobalValue.h"
-#include <string>
#include <map>
namespace llvm {
class AlphaJITInfo : public TargetJITInfo {
protected:
TargetMachine &TM;
+
+ //because gpdist are paired and relative to the pc of the first inst,
+ //we need to have some state
+ std::map<std::pair<void*, int>, void*> gpdistmap;
public:
- AlphaJITInfo(TargetMachine &tm) : TM(tm)
+ explicit AlphaJITInfo(TargetMachine &tm) : TM(tm)
{ useGOT = true; }
- /// addPassesToJITCompile - Add passes to the specified pass manager to
- /// implement a fast dynamic compiler for this target. Return true if this
- /// is not supported for this target.
- ///
- virtual void addPassesToJITCompile(FunctionPassManager &PM);
-
- virtual void *emitFunctionStub(void *Fn, MachineCodeEmitter &MCE);
+ virtual void *emitFunctionStub(const Function* F, void *Fn,
+ JITCodeEmitter &JCE);
virtual LazyResolverFn getLazyResolverFunction(JITCompilerFn);
virtual void relocate(void *Function, MachineRelocation *MR,
unsigned NumRelocs, unsigned char* GOTBase);
/// code.
///
virtual void replaceMachineCodeForFunction(void *Old, void *New);
-
- virtual void resolveBBRefs(MachineCodeEmitter &MCE);
private:
static const unsigned GOToffset = 4096;