[vmkit-commits] [vmkit] r140555 - in /vmkit/trunk/lib/J3: Classpath/ClasspathVMClass.inc VMCore/JavaArray.cpp VMCore/JavaArray.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Sep 26 12:18:43 PDT 2011


Author: geoffray
Date: Mon Sep 26 14:18:43 2011
New Revision: 140555

URL: http://llvm.org/viewvc/llvm-project?rev=140555&view=rev
Log:
Bugfix in VMClass.getDeclaredClasses, and add asserts to help find these bugs.


Modified:
    vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
    vmkit/trunk/lib/J3/VMCore/JavaArray.cpp
    vmkit/trunk/lib/J3/VMCore/JavaArray.h

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=140555&r1=140554&r2=140555&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Mon Sep 26 14:18:43 2011
@@ -566,11 +566,13 @@
     }
 
     result = (ArrayObject*)array->doNew(sizeArray, vm);
+    int index = 0;
     for (uint16 i = 0; i < cl->nbInnerClasses; ++i) {
       UserClass* klass = cl->innerClasses[i];
       if (!publicOnly || isPublic(klass->innerAccess))
-        ArrayObject::setElement(result, klass->getClassDelegatee(vm), i); 
+        ArrayObject::setElement(result, klass->getClassDelegatee(vm), index++); 
     }
+    assert(index == sizeArray);
   }
   
 

Modified: vmkit/trunk/lib/J3/VMCore/JavaArray.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaArray.cpp?rev=140555&r1=140554&r2=140555&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaArray.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaArray.cpp Mon Sep 26 14:18:43 2011
@@ -38,6 +38,7 @@
 void ArrayObject::setElement(ArrayObject* self, JavaObject* value, uint32_t i) {
   llvm_gcroot(self, 0);
   llvm_gcroot(value, 0);
+  assert(i < self->size);
   if (value != NULL) assert(value->getVirtualTable());
   mvm::Collector::objectReferenceArrayWriteBarrier(
       (gc*)self, (gc**)&(self->elements[i]), (gc*)value);

Modified: vmkit/trunk/lib/J3/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaArray.h?rev=140555&r1=140554&r2=140555&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaArray.h Mon Sep 26 14:18:43 2011
@@ -53,11 +53,13 @@
   
   static T getElement(const TJavaArray* self, uint32_t i) {
     llvm_gcroot(self, 0);
+    assert(i < self->size);
     return self->elements[i];
   }
 
   static void setElement(TJavaArray* self, T value, uint32_t i) {
     llvm_gcroot(self, 0);
+    assert(i < self->size);
     self->elements[i] = value;
   }
 
@@ -92,6 +94,7 @@
   
   static JavaObject* getElement(const ArrayObject* self, uint32_t i) {
     llvm_gcroot(self, 0);
+    assert(i < self->size);
     return self->elements[i];
   }
 





More information about the vmkit-commits mailing list