//
// 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.
//
//===----------------------------------------------------------------------===//
//
public:
JITState(ModuleProvider *MP) : PM(MP) {}
- FunctionPassManager& getPM(const MutexGuard& locked) {
+ FunctionPassManager &getPM(const MutexGuard &L) {
return PM;
}
- std::vector<const GlobalVariable*>& getPendingGlobals(const MutexGuard& locked) {
+ std::vector<const GlobalVariable*> &getPendingGlobals(const MutexGuard &L) {
return PendingGlobals;
}
};
TargetJITInfo &TJI; // The JITInfo for the target we are compiling to
MachineCodeEmitter *MCE; // MCE object
- JITState state;
+ JITState jitstate;
- JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji);
+ JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
+ JITMemoryManager *JMM);
public:
~JIT();
+ static void Register() {
+ JITCtor = create;
+ }
+
/// getJITInfo - Return the target JIT information structure.
///
TargetJITInfo &getJITInfo() const { return TJI; }
/// create - Create an return a new JIT compiler if there is one available
- /// for the current target. Otherwise, return null. If the JIT is created
- /// successfully, it takes responsibility for deleting the specified
- /// IntrinsicLowering implementation.
+ /// for the current target. Otherwise, return null.
///
- static ExecutionEngine *create(ModuleProvider *MP, IntrinsicLowering *IL = 0);
+ static ExecutionEngine *create(ModuleProvider *MP, std::string *Err) {
+ return createJIT(MP, Err, 0);
+ }
/// run - Start execution with the specified function and arguments.
///
///
void freeMachineCodeForFunction(Function *F);
+ /// getCodeEmitter - Return the code emitter this JIT is emitting into.
+ MachineCodeEmitter *getCodeEmitter() const { return MCE; }
+
+ static ExecutionEngine *createJIT(ModuleProvider *MP, std::string *Err,
+ JITMemoryManager *JMM);
+
private:
- static MachineCodeEmitter *createEmitter(JIT &J);
+ static MachineCodeEmitter *createEmitter(JIT &J, JITMemoryManager *JMM);
void runJITOnFunction (Function *F);
};