[vmkit-commits] [vmkit] r69591 - /vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Apr 20 05:17:06 PDT 2009


Author: geoffray
Date: Mon Apr 20 07:17:06 2009
New Revision: 69591

URL: http://llvm.org/viewvc/llvm-project?rev=69591&view=rev
Log:
Bugfixes when generating a VT.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=69591&r1=69590&r2=69591&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Mon Apr 20 07:17:06 2009
@@ -303,7 +303,7 @@
     LCI->getVirtualType();
     size = classDef->asClass()->virtualTableSize;
   } else {
-    size = classDef->super->virtualTableSize;
+    size = JavaVirtualTable::getBaseSize();
   }
   llvm::Constant* res = 0;
   virtual_table_iterator End = virtualTables.end();
@@ -1142,10 +1142,11 @@
 
 Constant* JavaAOTCompiler::CreateConstantFromVT(JavaVirtualTable* VT) {
   CommonClass* classDef = VT->cl;
-  uint32 size = classDef->isArray() ? classDef->super->virtualTableSize : 
-                                      classDef->asClass()->virtualTableSize;
-  JavaVirtualTable* RealVT = classDef->isArray() ? classDef->super->virtualVT :
-                                                   VT;
+  uint32 size = classDef->isClass() ? classDef->asClass()->virtualTableSize :
+                                      JavaVirtualTable::getBaseSize();
+  JavaVirtualTable* RealVT = classDef->isClass() ? 
+    VT : ClassArray::SuperArray->virtualVT;
+
   const ArrayType* ATy = 
     dyn_cast<ArrayType>(JnjvmModule::VTType->getContainedType(0));
   const PointerType* PTy = dyn_cast<PointerType>(ATy->getContainedType(0));
@@ -1176,7 +1177,7 @@
     } else {
       Tracer = JavaIntrinsics.ArrayObjectTracerFunction;
     }
-  } else {
+  } else if (classDef->isClass()) {
     Tracer = makeTracer(classDef->asClass(), false);
   }
 
@@ -1222,6 +1223,7 @@
   
   std::vector<Constant*> TempElmts;
   for (uint32 i = 0; i < VT->nbSecondaryTypes; ++i) {
+    assert(VT->secondaryTypes[i] && "No secondary type");
     Constant* Cl = getVirtualTable(VT->secondaryTypes[i]);
     TempElmts.push_back(Cl);
   }





More information about the vmkit-commits mailing list