[vmkit-commits] [vmkit] r61859 - in /vmkit/trunk/lib/JnJVM/VMCore: Jnjvm.cpp JnjvmModule.cpp JnjvmModule.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Jan 7 08:00:07 PST 2009


Author: geoffray
Date: Wed Jan  7 10:00:05 2009
New Revision: 61859

URL: http://llvm.org/viewvc/llvm-project?rev=61859&view=rev
Log:
Let the compiler output the VT, since it knows which class are being compiled.
Previously it was done when a class was resolving, and the module does not know
yet which classes it will compile.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=61859&r1=61858&r2=61859&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Jan  7 10:00:05 2009
@@ -1134,6 +1134,8 @@
     bootstrapLoader->upcalls->initialiseClasspath(bootstrapLoader);
   
     uint32 size = strlen(name);
+    JnjvmModule* M = bootstrapLoader->getModule();
+    
     if (size > 4 && 
        (!strcmp(&name[size - 4], ".jar") || !strcmp(&name[size - 4], ".zip"))) {
   
@@ -1173,6 +1175,7 @@
         Class* cl = *i;
         cl->resolveClass();
         cl->setOwnerClass(JavaThread::get());
+        M->makeVT(cl);
       }
       
       for (std::vector<Class*>::iterator i = classes.begin(), e = classes.end();
@@ -1186,11 +1189,10 @@
       const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(name);
       UserClass* cl = bootstrapLoader->loadName(utf8, true, true);
       cl->setOwnerClass(JavaThread::get());
+      M->makeVT(cl);
       compileClass(cl);
     }
    
-    // Set the linkage to External, so that the printer does not complain.
-    JnjvmModule* M = bootstrapLoader->getModule();
     M->CreateStaticInitializer();
 
     // Print stats before quitting.

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=61859&r1=61858&r2=61859&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Jan  7 10:00:05 2009
@@ -419,10 +419,6 @@
     virtual_table_iterator I = virtualTables.find(classDef);
     if (I == End) {
       
-      if (isCompiling(classDef)) {
-        makeVT(classDef);
-      }
-
       const ArrayType* ATy = dyn_cast<ArrayType>(VTType->getContainedType(0));
       const PointerType* PTy = dyn_cast<PointerType>(ATy->getContainedType(0));
       ATy = ArrayType::get(PTy, classDef->virtualTableSize);
@@ -436,7 +432,6 @@
       virtualTables.insert(std::make_pair(classDef, res));
     
       if (isCompiling(classDef)) {
-        makeVT(classDef);
         Function* Finalizer = ((Function**)classDef->virtualVT)[0];
         Function* Tracer = LCI->getVirtualTracer();
         Constant* C = CreateConstantFromVT(classDef->virtualVT,

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h?rev=61859&r1=61858&r2=61859&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Wed Jan  7 10:00:05 2009
@@ -179,6 +179,7 @@
 };
 
 class JnjvmModule : public mvm::MvmModule {
+  friend class Jnjvm;
   friend class LLVMClassInfo;
 private:
   std::map<const CommonClass*, llvm::Constant*> nativeClasses;





More information about the vmkit-commits mailing list