diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-08-08 08:11:34 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-08-08 08:11:34 +0000 |
commit | a6394fc2901d45b5207c96deae4486e25c203eac (patch) | |
tree | 5c2ccb21d8acceb0846fb0f5e0b162509310cb01 /lib/ExecutionEngine/JIT | |
parent | b11ac88a997a2d07c5400c43a2217225fc896ce2 (diff) | |
download | external_llvm-a6394fc2901d45b5207c96deae4486e25c203eac.tar.gz external_llvm-a6394fc2901d45b5207c96deae4486e25c203eac.tar.bz2 external_llvm-a6394fc2901d45b5207c96deae4486e25c203eac.zip |
Add new parameter Fast to createJIT to enable the fast codegen path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54523 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/JIT')
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.cpp | 9 | ||||
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.h | 9 | ||||
-rw-r--r-- | lib/ExecutionEngine/JIT/TargetSelect.cpp | 4 |
3 files changed, 12 insertions, 10 deletions
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index d4f190bfc7..af8fd8fb7c 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -73,8 +73,9 @@ extern "C" void __register_frame(void*); /// of the module provider. ExecutionEngine *ExecutionEngine::createJIT(ModuleProvider *MP, std::string *ErrorStr, - JITMemoryManager *JMM) { - ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM); + JITMemoryManager *JMM, + bool Fast) { + ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM, Fast); if (!EE) return 0; // Register routine for informing unwinding runtime about new EH frames @@ -89,7 +90,7 @@ ExecutionEngine *ExecutionEngine::createJIT(ModuleProvider *MP, } JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji, - JITMemoryManager *JMM) + JITMemoryManager *JMM, bool Fast) : ExecutionEngine(MP), TM(tm), TJI(tji) { setTargetData(TM.getTargetData()); @@ -105,7 +106,7 @@ JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji, // Turn the machine code intermediate representation into bytes in memory that // may be executed. - if (TM.addPassesToEmitMachineCode(PM, *MCE, false /*fast*/)) { + if (TM.addPassesToEmitMachineCode(PM, *MCE, Fast)) { cerr << "Target does not support machine code emission!\n"; abort(); } diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h index 6e6b8c2bef..41fa9bd002 100644 --- a/lib/ExecutionEngine/JIT/JIT.h +++ b/lib/ExecutionEngine/JIT/JIT.h @@ -56,7 +56,7 @@ class JIT : public ExecutionEngine { JITState *jitstate; JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji, - JITMemoryManager *JMM); + JITMemoryManager *JMM, bool Fast); public: ~JIT(); @@ -71,8 +71,9 @@ public: /// create - Create an return a new JIT compiler if there is one available /// for the current target. Otherwise, return null. /// - static ExecutionEngine *create(ModuleProvider *MP, std::string *Err) { - return createJIT(MP, Err, 0); + static ExecutionEngine *create(ModuleProvider *MP, std::string *Err, + bool Fast = false) { + return createJIT(MP, Err, 0, Fast); } virtual void addModuleProvider(ModuleProvider *MP); @@ -128,7 +129,7 @@ public: MachineCodeEmitter *getCodeEmitter() const { return MCE; } static ExecutionEngine *createJIT(ModuleProvider *MP, std::string *Err, - JITMemoryManager *JMM); + JITMemoryManager *JMM, bool Fast); private: static MachineCodeEmitter *createEmitter(JIT &J, JITMemoryManager *JMM); diff --git a/lib/ExecutionEngine/JIT/TargetSelect.cpp b/lib/ExecutionEngine/JIT/TargetSelect.cpp index 0654f340b5..5402085101 100644 --- a/lib/ExecutionEngine/JIT/TargetSelect.cpp +++ b/lib/ExecutionEngine/JIT/TargetSelect.cpp @@ -41,7 +41,7 @@ MAttrs("mattr", /// available for the current target. Otherwise, return null. /// ExecutionEngine *JIT::createJIT(ModuleProvider *MP, std::string *ErrorStr, - JITMemoryManager *JMM) { + JITMemoryManager *JMM, bool Fast) { const TargetMachineRegistry::entry *TheArch = MArch; if (TheArch == 0) { std::string Error; @@ -73,7 +73,7 @@ ExecutionEngine *JIT::createJIT(ModuleProvider *MP, std::string *ErrorStr, // If the target supports JIT code generation, return a new JIT now. if (TargetJITInfo *TJ = Target->getJITInfo()) - return new JIT(MP, *Target, *TJ, JMM); + return new JIT(MP, *Target, *TJ, JMM, Fast); if (ErrorStr) *ErrorStr = "target does not support JIT code generation"; |