[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