[llvm-commits] [llvm] r54523 - in /llvm/trunk: include/llvm/ExecutionEngine/ExecutionEngine.h lib/ExecutionEngine/ExecutionEngine.cpp lib/ExecutionEngine/ExecutionEngineBindings.cpp lib/ExecutionEngine/Interpreter/Interpreter.cpp lib/ExecutionEngine/Interpreter/Interpreter.h lib/ExecutionEngine/JIT/JIT.cpp lib/ExecutionEngine/JIT/JIT.h lib/ExecutionEngine/JIT/TargetSelect.cpp
Evan Cheng
evan.cheng at apple.com
Fri Aug 8 01:11:36 PDT 2008
Author: evancheng
Date: Fri Aug 8 03:11:34 2008
New Revision: 54523
URL: http://llvm.org/viewvc/llvm-project?rev=54523&view=rev
Log:
Add new parameter Fast to createJIT to enable the fast codegen path.
Modified:
llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h
llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp
llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.cpp
llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h
llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp
llvm/trunk/lib/ExecutionEngine/JIT/JIT.h
llvm/trunk/lib/ExecutionEngine/JIT/TargetSelect.cpp
Modified: llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h (original)
+++ llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h Fri Aug 8 03:11:34 2008
@@ -79,7 +79,8 @@
// To avoid having libexecutionengine depend on the JIT and interpreter
// libraries, the JIT and Interpreter set these functions to ctor pointers
// at startup time if they are linked in.
- typedef ExecutionEngine *(*EECtorFn)(ModuleProvider*, std::string*);
+ typedef ExecutionEngine *(*EECtorFn)(ModuleProvider*, std::string*,
+ bool Fast);
static EECtorFn JITCtor, InterpCtor;
/// LazyFunctionCreator - If an unknown function is needed, this function
@@ -108,7 +109,8 @@
/// module provider.
static ExecutionEngine *create(ModuleProvider *MP,
bool ForceInterpreter = false,
- std::string *ErrorStr = 0);
+ std::string *ErrorStr = 0,
+ bool Fast = false);
/// create - This is the factory method for creating an execution engine which
/// is appropriate for the current machine. This takes ownership of the
@@ -120,7 +122,8 @@
/// of the ModuleProvider and JITMemoryManager if successful.
static ExecutionEngine *createJIT(ModuleProvider *MP,
std::string *ErrorStr = 0,
- JITMemoryManager *JMM = 0);
+ JITMemoryManager *JMM = 0,
+ bool Fast = false);
Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp Fri Aug 8 03:11:34 2008
@@ -345,7 +345,8 @@
///
ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP,
bool ForceInterpreter,
- std::string *ErrorStr) {
+ std::string *ErrorStr,
+ bool Fast) {
ExecutionEngine *EE = 0;
// Make sure we can resolve symbols in the program as well. The zero arg
@@ -355,11 +356,11 @@
// Unless the interpreter was explicitly selected, try making a JIT.
if (!ForceInterpreter && JITCtor)
- EE = JITCtor(MP, ErrorStr);
+ EE = JITCtor(MP, ErrorStr, Fast);
// If we can't make a JIT, make an interpreter instead.
if (EE == 0 && InterpCtor)
- EE = InterpCtor(MP, ErrorStr);
+ EE = InterpCtor(MP, ErrorStr, Fast);
return EE;
}
Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp Fri Aug 8 03:11:34 2008
@@ -114,9 +114,11 @@
int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
LLVMModuleProviderRef MP,
- char **OutError) {
+ char **OutError,
+ bool Fast = false) {
std::string Error;
- if (ExecutionEngine *JIT = ExecutionEngine::createJIT(unwrap(MP), &Error)) {
+ if (ExecutionEngine *JIT = ExecutionEngine::createJIT(unwrap(MP), &Error, 0,
+ Fast)) {
*OutJIT = wrap(JIT);
return 0;
}
Modified: llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.cpp?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.cpp Fri Aug 8 03:11:34 2008
@@ -36,7 +36,8 @@
/// create - Create a new interpreter object. This can never fail.
///
-ExecutionEngine *Interpreter::create(ModuleProvider *MP, std::string* ErrStr) {
+ExecutionEngine *Interpreter::create(ModuleProvider *MP, std::string* ErrStr,
+ bool Fast /*unused*/) {
// Tell this ModuleProvide to materialize and release the module
if (!MP->materializeModule(ErrStr))
// We got an error, just return 0
Modified: llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h (original)
+++ llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h Fri Aug 8 03:11:34 2008
@@ -108,7 +108,8 @@
/// create - Create an interpreter ExecutionEngine. This can never fail.
///
- static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0);
+ static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0,
+ bool Fast /*unused*/ = 0);
/// run - Start execution with the specified function and arguments.
///
Modified: llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp Fri Aug 8 03:11:34 2008
@@ -73,8 +73,9 @@
/// 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 @@
}
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 @@
// 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();
}
Modified: llvm/trunk/lib/ExecutionEngine/JIT/JIT.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JIT.h?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JIT/JIT.h (original)
+++ llvm/trunk/lib/ExecutionEngine/JIT/JIT.h Fri Aug 8 03:11:34 2008
@@ -56,7 +56,7 @@
JITState *jitstate;
JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
- JITMemoryManager *JMM);
+ JITMemoryManager *JMM, bool Fast);
public:
~JIT();
@@ -71,8 +71,9 @@
/// 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 @@
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);
Modified: llvm/trunk/lib/ExecutionEngine/JIT/TargetSelect.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/TargetSelect.cpp?rev=54523&r1=54522&r2=54523&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JIT/TargetSelect.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/JIT/TargetSelect.cpp Fri Aug 8 03:11:34 2008
@@ -41,7 +41,7 @@
/// 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 @@
// 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";
More information about the llvm-commits
mailing list