[vmkit-commits] [vmkit] r180501 - Fixing bug in JavaClass.cpp

Peter Senna Tschudin peter.senna at gmail.com
Thu Apr 25 10:19:00 PDT 2013


Author: peter.senna
Date: Thu Apr 25 12:17:03 2013
New Revision: 180501

URL: http://llvm.org/viewvc/llvm-project?rev=180501&view=rev
Log:
Fixing bug in JavaClass.cpp
(cherry picked from commit 331cdbce7226e8f2b4af8b662223dd8900036212)

Modified:
    vmkit/trunk/lib/j3/VMCore/JavaClass.cpp

Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.cpp?rev=180501&r1=180500&r2=180501&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.cpp Thu Apr 25 12:17:03 2013
@@ -557,6 +557,9 @@ bool JavaVirtualTable::isSubtypeOf(JavaV
         return true;
       }
     }
+    if (cl->isArray() && otherVT->cl->isArray()) {
+    	return baseClassVT->isSubtypeOf(otherVT->baseClassVT);
+    }
   }
   return false;
 }
@@ -1640,7 +1643,7 @@ JavaVirtualTable::JavaVirtualTable(Class
           // Finally, we must add the list of array of secondary classes from base
           nbSecondaryTypes = base->nbInterfaces + superVT->nbSecondaryTypes +
                                 addSuper
-                                + base->virtualVT->nbSecondaryTypes
+//                                + base->virtualVT->nbSecondaryTypes
                                 ;
           secondaryTypes = (JavaVirtualTable**)
             allocator.Allocate(sizeof(JavaVirtualTable*) * nbSecondaryTypes,
@@ -1663,18 +1666,18 @@ JavaVirtualTable::JavaVirtualTable(Class
             secondaryTypes[i + superVT->nbSecondaryTypes + addSuper] = CurVT;
           }
 
-          int index = superVT->nbSecondaryTypes + addSuper + base->nbInterfaces;
-          for (uint32 i = 0; i < base->virtualVT->nbSecondaryTypes; ++i) {
-        	  if (base->virtualVT == base->virtualVT->secondaryTypes[i]) continue;
-
-			  const UTF8* name =
-				JCL->constructArrayName(dim, base->virtualVT->secondaryTypes[i]->cl->name);
-			  ClassArray* interface = JCL->constructArray(name);
-			  JavaVirtualTable* CurVT = interface->virtualVT;
-			  secondaryTypes[index++] = CurVT;
-           }
-
-          nbSecondaryTypes = index;
+//          int index = superVT->nbSecondaryTypes + addSuper + base->nbInterfaces;
+//          for (uint32 i = 0; i < base->virtualVT->nbSecondaryTypes; ++i) {
+//        	  if (base->virtualVT == base->virtualVT->secondaryTypes[i]) continue;
+//
+//			  const UTF8* name =
+//				JCL->constructArrayName(dim, base->virtualVT->secondaryTypes[i]->cl->name);
+//			  ClassArray* interface = JCL->constructArray(name);
+//			  JavaVirtualTable* CurVT = interface->virtualVT;
+//			  secondaryTypes[index++] = CurVT;
+//           }
+//
+//          nbSecondaryTypes = index;
         } else {
           // If the super is not a secondary type and the base class does not
           // implement any interface, we can reuse the list of secondary types





More information about the vmkit-commits mailing list