aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ExecutionEngine/JIT
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-08-08 08:11:34 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-08-08 08:11:34 +0000
commita6394fc2901d45b5207c96deae4486e25c203eac (patch)
tree5c2ccb21d8acceb0846fb0f5e0b162509310cb01 /lib/ExecutionEngine/JIT
parentb11ac88a997a2d07c5400c43a2217225fc896ce2 (diff)
downloadexternal_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.cpp9
-rw-r--r--lib/ExecutionEngine/JIT/JIT.h9
-rw-r--r--lib/ExecutionEngine/JIT/TargetSelect.cpp4
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";