[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