summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
diff options
context:
space:
mode:
authorBrian Gaeke <gaeke@uiuc.edu>2003-09-03 20:34:19 +0000
committerBrian Gaeke <gaeke@uiuc.edu>2003-09-03 20:34:19 +0000
commit4bd3bd5b5aad9cb32f1cd268cfa5e8b8df0ec368 (patch)
tree6ae0302c5ea265fd5966fb1f3e1b046fd3afb3e1 /llvm/lib/ExecutionEngine/ExecutionEngine.cpp
parent54d85e389fcb019e4e910a986eff5b8f71aa06e6 (diff)
downloadbcm5719-llvm-4bd3bd5b5aad9cb32f1cd268cfa5e8b8df0ec368.tar.gz
bcm5719-llvm-4bd3bd5b5aad9cb32f1cd268cfa5e8b8df0ec368.zip
ExecutionEngine.cpp: Move execution engine creation stuff into a new
static method here. Remove some extra blank lines. ExecutionEngine.h: Add its prototype. lli.cpp: Call it. Make creation method for each type of EE into a static method of its own subclass. Interpreter/Interpreter.cpp: ExecutionEngine::createInterpreter --> Interpreter::create Interpreter/Interpreter.h: Likewise. JIT/JIT.cpp: ExecutionEngine::createJIT --> VM::create JIT/VM.h: Likewise. llvm-svn: 8343
Diffstat (limited to 'llvm/lib/ExecutionEngine/ExecutionEngine.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/ExecutionEngine.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
index 89d9e162892..5691a248a06 100644
--- a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -15,9 +15,25 @@
#include "Support/Debug.h"
#include "Support/Statistic.h"
#include "Config/dlfcn.h"
+#include "JIT/VM.h"
+#include "Interpreter/Interpreter.h"
Statistic<> NumInitBytes("lli", "Number of bytes of global vars initialized");
+ExecutionEngine *ExecutionEngine::create (Module *M, bool ForceInterpreter,
+ bool DebugMode, bool TraceMode) {
+ ExecutionEngine *EE = 0;
+
+ // If there is nothing that is forcing us to use the interpreter, make a JIT.
+ if (!ForceInterpreter && !DebugMode && !TraceMode)
+ EE = VM::create(M);
+
+ // If we can't make a JIT, make an interpreter instead.
+ if (EE == 0)
+ EE = Interpreter::create(M, DebugMode, TraceMode);
+ return EE;
+}
+
// getPointerToGlobal - This returns the address of the specified global
// value. This may involve code generation if it's a function.
//
@@ -29,7 +45,6 @@ void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) {
return GlobalAddress[GV];
}
-
GenericValue ExecutionEngine::getConstantValue(const Constant *C) {
GenericValue Result;
@@ -259,7 +274,6 @@ GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr,
return Result;
}
-
// InitializeMemory - Recursive function to apply a Constant value into the
// specified memory location...
//
OpenPOWER on IntegriCloud