[vmkit-commits] [vmkit] r65572 - in /vmkit/trunk: include/jnjvm/JnjvmModule.h include/mvm/JIT.h lib/JnJVM/Compiler/JnjvmModule.cpp lib/JnJVM/Compiler/JnjvmModuleAOT.cpp lib/JnJVM/Compiler/JnjvmModuleJIT.cpp lib/JnJVM/VMCore/JnjvmClassLoader.cpp lib/Mvm/Runtime/JIT.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Feb 26 13:04:51 PST 2009
Author: geoffray
Date: Thu Feb 26 15:04:51 2009
New Revision: 65572
URL: http://llvm.org/viewvc/llvm-project?rev=65572&view=rev
Log:
One step further to run the verifier in JIT mode. The globalModule
llvm::Module object holds all external functions. The other llvm::Module
created on demand will just copy the declared functions.
Modified:
vmkit/trunk/include/jnjvm/JnjvmModule.h
vmkit/trunk/include/mvm/JIT.h
vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp
vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Thu Feb 26 15:04:51 2009
@@ -341,7 +341,7 @@
private:
- void initialise();
+ static void initialise();
bool enabledException;
@@ -356,7 +356,7 @@
public:
- JnjvmModule(const std::string &ModuleID, JnjvmModule* Father = 0);
+ JnjvmModule(const std::string &ModuleID);
virtual bool isStaticCompiling() = 0;
@@ -409,7 +409,7 @@
class JnjvmModuleJIT : public JnjvmModule {
public:
- JnjvmModuleJIT(const std::string &ModuleID, JnjvmModule* Father = 0);
+ JnjvmModuleJIT(const std::string &ModuleID);
virtual bool isStaticCompiling() {
return false;
@@ -444,7 +444,7 @@
class JnjvmModuleAOT : public JnjvmModule {
public:
- JnjvmModuleAOT(const std::string &ModuleID, JnjvmModule* Father = 0);
+ JnjvmModuleAOT(const std::string &ModuleID);
virtual bool isStaticCompiling() {
return true;
Modified: vmkit/trunk/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/JIT.h?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/JIT.h (original)
+++ vmkit/trunk/include/mvm/JIT.h Thu Feb 26 15:04:51 2009
@@ -184,6 +184,7 @@
static void protectIR();
static void unprotectIR();
+ static void copyDefinitions(llvm::Module* Dst, llvm::Module* Src);
};
Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp Thu Feb 26 15:04:51 2009
@@ -259,8 +259,8 @@
}
void JnjvmModule::initialise() {
- jnjvm::llvm_runtime::makeLLVMModuleContents(getLLVMModule());
- Module* module = getLLVMModule();
+ Module* module = globalModule;
+ jnjvm::llvm_runtime::makeLLVMModuleContents(module);
VTType = PointerType::getUnqual(module->getTypeByName("VT"));
@@ -369,37 +369,33 @@
return getMethodInfo(meth)->getMethod();
}
-JnjvmModule::JnjvmModule(const std::string &ModuleID, JnjvmModule* Father) :
+JnjvmModule::JnjvmModule(const std::string &ModuleID) :
MvmModule(ModuleID) {
- Module* module = 0;
- if (!Father) {
- assert(!VTType && "Attempting to create a new initial JnjvmModule");
- enabledException = true;
+ Module* module = getLLVMModule();
+ enabledException = true;
+ if (!VTType) {
initialise();
- module = getLLVMModule();
- } else {
- enabledException = Father->enabledException;
- module = getLLVMModule();
- module->addTypeName("JavaObject", JavaObjectType);
- module->addTypeName("JavaArray", JavaArrayType);
- module->addTypeName("JavaCommonClass", JavaCommonClassType);
- module->addTypeName("JavaClass", JavaClassType);
- module->addTypeName("JavaClassPrimitive", JavaClassPrimitiveType);
- module->addTypeName("JavaClassArray", JavaClassArrayType);
- module->addTypeName("ArrayUInt8", JavaArrayUInt8Type);
- module->addTypeName("ArraySInt8", JavaArraySInt8Type);
- module->addTypeName("ArrayUInt16", JavaArrayUInt16Type);
- module->addTypeName("ArraySInt16", JavaArraySInt16Type);
- module->addTypeName("ArraySInt32", JavaArraySInt32Type);
- module->addTypeName("ArrayLong", JavaArrayLongType);
- module->addTypeName("ArrayFloat", JavaArrayFloatType);
- module->addTypeName("ArrayDouble", JavaArrayDoubleType);
- module->addTypeName("ArrayObject", JavaArrayObjectType);
- module->addTypeName("CacheNode", CacheNodeType);
- module->addTypeName("Enveloppe", EnveloppeType);
- module = Father->getLLVMModule();
+ copyDefinitions(module, globalModule);
}
+
+ module->addTypeName("JavaObject", JavaObjectType);
+ module->addTypeName("JavaArray", JavaArrayType);
+ module->addTypeName("JavaCommonClass", JavaCommonClassType);
+ module->addTypeName("JavaClass", JavaClassType);
+ module->addTypeName("JavaClassPrimitive", JavaClassPrimitiveType);
+ module->addTypeName("JavaClassArray", JavaClassArrayType);
+ module->addTypeName("ArrayUInt8", JavaArrayUInt8Type);
+ module->addTypeName("ArraySInt8", JavaArraySInt8Type);
+ module->addTypeName("ArrayUInt16", JavaArrayUInt16Type);
+ module->addTypeName("ArraySInt16", JavaArraySInt16Type);
+ module->addTypeName("ArraySInt32", JavaArraySInt32Type);
+ module->addTypeName("ArrayLong", JavaArrayLongType);
+ module->addTypeName("ArrayFloat", JavaArrayFloatType);
+ module->addTypeName("ArrayDouble", JavaArrayDoubleType);
+ module->addTypeName("ArrayObject", JavaArrayObjectType);
+ module->addTypeName("CacheNode", CacheNodeType);
+ module->addTypeName("Enveloppe", EnveloppeType);
InterfaceLookupFunction = module->getFunction("jnjvmVirtualLookup");
MultiCallNewFunction = module->getFunction("multiCallNew");
Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp Thu Feb 26 15:04:51 2009
@@ -1194,9 +1194,8 @@
}
#endif
-JnjvmModuleAOT::JnjvmModuleAOT(const std::string& ModuleID,
- JnjvmModule* Father) :
- JnjvmModule(ModuleID, Father) {
+JnjvmModuleAOT::JnjvmModuleAOT(const std::string& ModuleID) :
+ JnjvmModule(ModuleID) {
generateTracers = true;
generateStubs = true;
Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleJIT.cpp?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleJIT.cpp Thu Feb 26 15:04:51 2009
@@ -118,9 +118,8 @@
return ConstantExpr::getIntToPtr(CI, valPtrType);
}
-JnjvmModuleJIT::JnjvmModuleJIT(const std::string &ModuleID,
- JnjvmModule* Father) :
- JnjvmModule(ModuleID, Father) {
+JnjvmModuleJIT::JnjvmModuleJIT(const std::string &ModuleID) :
+ JnjvmModule(ModuleID) {
ConstantInt* CI = ConstantInt::get(Type::Int64Ty, uint64(JavaArrayVT));
PrimitiveArrayVT = ConstantExpr::getIntToPtr(CI, VTType);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Thu Feb 26 15:04:51 2009
@@ -274,7 +274,7 @@
JnjvmClassLoader::JnjvmClassLoader(JnjvmClassLoader& JCL, JavaObject* loader,
Jnjvm* I) {
- TheModule = new JnjvmModuleJIT("Applicative loader", JCL.getModule());
+ TheModule = new JnjvmModuleJIT("Applicative loader");
TheModuleProvider = new JnjvmModuleProvider(getModule());
bootstrapLoader = JCL.bootstrapLoader;
Modified: vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/JIT.cpp?rev=65572&r1=65571&r2=65572&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/JIT.cpp Thu Feb 26 15:04:51 2009
@@ -68,6 +68,7 @@
globalFunctionPasses = new FunctionPassManager(globalModuleProvider);
+ mvm::llvm_runtime::makeLLVMModuleContents(globalModule);
// Type declaration
ptrType = PointerType::getUnqual(Type::Int8Ty);
@@ -133,8 +134,8 @@
TheModule->setDataLayout(globalModule->getDataLayout());
TheModule->setTargetTriple(globalModule->getTargetTriple());
- mvm::llvm_runtime::makeLLVMModuleContents(module);
-
+ copyDefinitions(module, globalModule);
+
printFloatLLVM = module->getFunction("printFloat");
printDoubleLLVM = module->getFunction("printDouble");
printLongLLVM = module->getFunction("printLong");
@@ -254,7 +255,7 @@
return TheTargetData->getTypePaddedSize(type);
}
-void MvmModule::runPasses(llvm::Function* func,
+void MvmModule::runPasses(llvm::Function* func,
llvm::FunctionPassManager* pm) {
pm->run(*func);
}
@@ -273,9 +274,6 @@
//
void CompilationUnit::AddStandardCompilePasses() {
// TODO: enable this when
- // - we can call multiple times the makeLLVMModuleContents function generated
- // by llc -march=cpp -cppgen=contents
- // - intrinsics won't be in the .ll files
// - each module will have its declaration of external functions
//
//PM->add(llvm::createVerifierPass()); // Verify that input is correct
@@ -327,3 +325,15 @@
void MvmModule::unprotectIR() {
if (executionEngine) executionEngine->lock.release();
}
+
+
+void MvmModule::copyDefinitions(Module* Dst, Module* Src) {
+ // Loop over all of the functions in the src module, mapping them over
+ for (Module::const_iterator I = Src->begin(), E = Src->end(); I != E; ++I) {
+ const Function *SF = I; // SrcFunction
+ assert(SF->isDeclaration() &&
+ "Don't know how top copy functions with body");
+ Function::Create(SF->getFunctionType(), GlobalValue::ExternalLinkage,
+ SF->getName(), Dst);
+ }
+}
More information about the vmkit-commits
mailing list