[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