[vmkit-commits] [vmkit] r62227 - in /vmkit/trunk: include/mvm/JIT.h lib/JnJVM/VMCore/JnjvmModule.cpp lib/Mvm/Runtime/JIT.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Jan 14 07:09:27 PST 2009
Author: geoffray
Date: Wed Jan 14 09:09:27 2009
New Revision: 62227
URL: http://llvm.org/viewvc/llvm-project?rev=62227&view=rev
Log:
Do not depend on the executionegine to get the TargetData.
Modified:
vmkit/trunk/include/mvm/JIT.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
Modified: vmkit/trunk/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/JIT.h?rev=62227&r1=62226&r2=62227&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/JIT.h (original)
+++ vmkit/trunk/include/mvm/JIT.h Wed Jan 14 09:09:27 2009
@@ -26,6 +26,7 @@
class Function;
class FunctionPassManager;
class PointerType;
+ class TargetData;
class Type;
}
@@ -105,12 +106,7 @@
llvm::Function* llvm_atomic_lcs_i32;
llvm::Function* llvm_atomic_lcs_i64;
- static llvm::ExecutionEngine* executionEngine;
- static mvm::LockNormal protectEngine;
- static uint64 getTypeSize(const llvm::Type* type);
- static void runPasses(llvm::Function* func, llvm::FunctionPassManager*);
- static void initialise(bool Fast = false);
static llvm::ConstantInt* constantInt8Zero;
static llvm::ConstantInt* constantZero;
@@ -161,9 +157,15 @@
static const llvm::Type* arrayPtrType;
static const llvm::Type* pointerSizeType;
-
+ static llvm::ExecutionEngine* executionEngine;
+ static mvm::LockNormal protectEngine;
static llvm::Module *globalModule;
static llvm::ExistingModuleProvider *globalModuleProvider;
+ static const llvm::TargetData* TheTargetData;
+
+ static uint64 getTypeSize(const llvm::Type* type);
+ static void runPasses(llvm::Function* func, llvm::FunctionPassManager*);
+ static void initialise(bool Fast = false);
static int disassemble(unsigned int* addr);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=62227&r1=62226&r2=62227&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Jan 14 09:09:27 2009
@@ -1401,10 +1401,10 @@
}
+ JnjvmModule* Mod = classDef->classLoader->getModule();
StructType* structType = StructType::get(fields, false);
virtualType = PointerType::getUnqual(structType);
- ExecutionEngine* engine = mvm::MvmModule::executionEngine;
- const TargetData* targetData = engine->getTargetData();
+ const TargetData* targetData = Mod->TheTargetData;
const StructLayout* sl = targetData->getStructLayout(structType);
for (uint32 i = 0; i < classDef->nbVirtualFields; ++i) {
@@ -1412,11 +1412,10 @@
field.ptrOffset = sl->getElementOffset(i + 1);
}
- uint64 size = mvm::MvmModule::getTypeSize(structType);
+ uint64 size = Mod->getTypeSize(structType);
classDef->virtualSize = (uint32)size;
virtualSizeConstant = ConstantInt::get(Type::Int32Ty, size);
- JnjvmModule* Mod = classDef->classLoader->getModule();
if (!Mod->isStaticCompiling()) {
if (!classDef->virtualVT) {
Mod->makeVT((Class*)classDef);
@@ -1453,10 +1452,10 @@
fields.push_back(LAI.llvmType);
}
+ JnjvmModule* Mod = cl->classLoader->getModule();
StructType* structType = StructType::get(fields, false);
staticType = PointerType::getUnqual(structType);
- ExecutionEngine* engine = mvm::MvmModule::executionEngine;
- const TargetData* targetData = engine->getTargetData();
+ const TargetData* targetData = Mod->TheTargetData;
const StructLayout* sl = targetData->getStructLayout(structType);
for (uint32 i = 0; i < classDef->nbStaticFields; ++i) {
@@ -1464,10 +1463,9 @@
field.ptrOffset = sl->getElementOffset(i);
}
- uint64 size = mvm::MvmModule::getTypeSize(structType);
+ uint64 size = Mod->getTypeSize(structType);
cl->staticSize = size;
- JnjvmModule* Mod = cl->classLoader->getModule();
if (!Mod->isStaticCompiling()) {
Function* F = Mod->makeTracer(cl, true);
cl->staticTracer = (void (*)(void*)) (uintptr_t)
Modified: vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/JIT.cpp?rev=62227&r1=62226&r2=62227&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/JIT.cpp Wed Jan 14 09:09:27 2009
@@ -45,13 +45,14 @@
globalModuleProvider = new ExistingModuleProvider (globalModule);
-
executionEngine = ExecutionEngine::createJIT(globalModuleProvider, 0,
0, Fast);
std::string str =
executionEngine->getTargetData()->getStringRepresentation();
globalModule->setDataLayout(str);
+
+ TheTargetData = executionEngine->getTargetData();
Module module("unused");
@@ -179,8 +180,6 @@
llvm_atomic_lcs_i64 = module->getFunction("llvm.atomic.cmp.swap.i64.p0i64");
}
-llvm::ExecutionEngine* MvmModule::executionEngine;
-mvm::LockNormal MvmModule::protectEngine;
llvm::ConstantInt* MvmModule::constantInt8Zero;
llvm::ConstantInt* MvmModule::constantZero;
@@ -231,12 +230,15 @@
const llvm::Type* MvmModule::pointerSizeType;
const llvm::Type* MvmModule::arrayPtrType;
+const llvm::TargetData* MvmModule::TheTargetData;
llvm::Module *MvmModule::globalModule;
llvm::ExistingModuleProvider *MvmModule::globalModuleProvider;
+llvm::ExecutionEngine* MvmModule::executionEngine;
+mvm::LockNormal MvmModule::protectEngine;
uint64 MvmModule::getTypeSize(const llvm::Type* type) {
- return executionEngine->getTargetData()->getTypePaddedSize(type);
+ return TheTargetData->getTypePaddedSize(type);
}
void MvmModule::runPasses(llvm::Function* func,
@@ -266,7 +268,7 @@
//PM->add(llvm::createVerifierPass()); // Verify that input is correct
FunctionPassManager* PM = FunctionPasses;
- FunctionPasses->add(new TargetData(TheModule));
+ FunctionPasses->add(new TargetData(*MvmModule::TheTargetData));
addPass(PM, createCFGSimplificationPass()); // Clean up disgusting code
addPass(PM, createPromoteMemoryToRegisterPass());// Kill useless allocas
More information about the vmkit-commits
mailing list