diff options
Diffstat (limited to 'lib/ExecutionEngine/JIT/JIT.h')
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.h | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h index 395e04926d..e0c74f8738 100644 --- a/lib/ExecutionEngine/JIT/JIT.h +++ b/lib/ExecutionEngine/JIT/JIT.h @@ -20,8 +20,6 @@ namespace llvm { class Function; -class GlobalValue; -class Constant; class TargetMachine; class TargetJITInfo; class MachineCodeEmitter; @@ -29,21 +27,22 @@ class MachineCodeEmitter; class JITState { private: FunctionPassManager PM; // Passes to compile a function + ModuleProvider *MP; // ModuleProvider used to create the PM - /// PendingGlobals - Global variables which have had memory allocated for them - /// while a function was code generated, but which have not been initialized - /// yet. - std::vector<const GlobalVariable*> PendingGlobals; + /// PendingFunctions - Functions which have not been code generated yet, but + /// were called from a function being code generated. + std::vector<Function*> PendingFunctions; public: - explicit JITState(ModuleProvider *MP) : PM(MP) {} + explicit JITState(ModuleProvider *MP) : PM(MP), MP(MP) {} FunctionPassManager &getPM(const MutexGuard &L) { return PM; } - - std::vector<const GlobalVariable*> &getPendingGlobals(const MutexGuard &L) { - return PendingGlobals; + + ModuleProvider *getMP() const { return MP; } + std::vector<Function*> &getPendingFunctions(const MutexGuard &L) { + return PendingFunctions; } }; @@ -139,6 +138,12 @@ public: /// void freeMachineCodeForFunction(Function *F); + /// addPendingFunction - while jitting non-lazily, a called but non-codegen'd + /// function was encountered. Add it to a pending list to be processed after + /// the current function. + /// + void addPendingFunction(Function *F); + /// getCodeEmitter - Return the code emitter this JIT is emitting into. MachineCodeEmitter *getCodeEmitter() const { return MCE; } @@ -149,7 +154,9 @@ private: static MachineCodeEmitter *createEmitter(JIT &J, JITMemoryManager *JMM); void runJITOnFunction(Function *F); void runJITOnFunctionUnlocked(Function *F, const MutexGuard &locked); - + void updateFunctionStub(Function *F); + void updateDlsymStubTable(); + protected: /// getMemoryforGV - Allocate memory for a global variable. |