[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