[vmkit-commits] [vmkit] r70853 - /vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon May 4 05:15:16 PDT 2009
Author: geoffray
Date: Mon May 4 07:15:11 2009
New Revision: 70853
URL: http://llvm.org/viewvc/llvm-project?rev=70853&view=rev
Log:
Bugfix for Class.getClasses.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp?rev=70853&r1=70852&r2=70853&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Mon May 4 07:15:11 2009
@@ -506,10 +506,23 @@
if (cl) {
cl->resolveInnerOuterClasses();
UserClassArray* array = vm->upcalls->constructorArrayClass;
- ArrayObject* res = (ArrayObject*)array->doNew(cl->nbInnerClasses, vm);
+
+ uint16 sizeArray = 0;
+
+ if (publicOnly) {
+ for (uint16 i = 0; i < cl->nbInnerClasses; ++i) {
+ UserClass* klass = cl->innerClasses[i];
+ if (isPublic(klass->innerAccess)) ++sizeArray;
+ }
+ } else {
+ sizeArray = cl->nbInnerClasses;
+ }
+
+ ArrayObject* res = (ArrayObject*)array->doNew(sizeArray, vm);
for (uint16 i = 0; i < cl->nbInnerClasses; ++i) {
UserClass* klass = cl->innerClasses[i];
- res->elements[i] = klass->getClassDelegatee(vm);
+ if (!publicOnly || isPublic(klass->innerAccess))
+ res->elements[i] = klass->getClassDelegatee(vm);
}
result = (jobject)res;
}
More information about the vmkit-commits
mailing list