[vmkit-commits] [vmkit] r180362 - VMClass.getDeclaredAnnotations implemented.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:03:37 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:01:38 2013
New Revision: 180362
URL: http://llvm.org/viewvc/llvm-project?rev=180362&view=rev
Log:
VMClass.getDeclaredAnnotations implemented.
Some redundant code removed
(cherry picked from commit d31176e5c23adcf80f46610372abf57246d73c9a)
Modified:
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMField.inc
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMMethod.inc
vmkit/trunk/lib/j3/ClassLib/Reflect.inc
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc?rev=180362&r1=180361&r2=180362&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc Thu Apr 25 12:01:38 2013
@@ -435,8 +435,8 @@ jclass clazz,
#endif
JavaObject* Cl) {
// TODO implement me
- fprintf(stderr, "Java_java_lang_VMClass_getDeclaredAnnotations not implemented\n");
- abort();
+ //fprintf(stderr, "Java_java_lang_VMClass_getDeclaredAnnotations not implemented\n");
+ //abort();
JavaObject* res = 0;
JavaObject* annon = 0;
@@ -453,27 +453,24 @@ JavaObject* Cl) {
Jnjvm* vm = JavaThread::get()->getJVM();
Classpath* upcalls = vm->upcalls;
- /* Retrieving VMField.class attributes list */
- UserClass* compilingClass = JavaObject::getClass(Cl)->asClass();
+ UserClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false)->asClass();
//JavaField* field = JavaObjectVMField::getInternalField(VMField);
JavaAttribute* annotationsAtt =
- compilingClass->lookupAttribute(JavaAttribute::annotationsAttribute);
+ cl->lookupAttribute(JavaAttribute::annotationsAttribute);
//dprintf("JavaClass : %s\n", UTF8Buffer(field->name).cString());
- //UserCommonClass* cl = JavaObject::getClass(VMField);
- JnjvmClassLoader* loader = compilingClass->classLoader;
+ JnjvmClassLoader* loader = cl->classLoader;
if (annotationsAtt) {
- Reader reader(annotationsAtt, compilingClass->bytes);
- AnnotationReader AR(reader, compilingClass);
+ Reader reader(annotationsAtt, cl->bytes);
+ AnnotationReader AR(reader, cl);
uint16 numAnnotations = reader.readU2();
UserClassArray* array = upcalls->annotationArrayClass;
res = array->doNew(numAnnotations, vm);
- /*dprintf("JavaField : %s % with %d fields \n", UTF8Buffer(field->name).cString(), numAnnotations);
for (uint16 i = 0; i < numAnnotations; ++i) {
uint16 typeIndex = reader.readU2();
- const UTF8* annoType = compilingClass->ctpInfo->UTF8At(typeIndex);
+ const UTF8* annoType = cl->ctpInfo->UTF8At(typeIndex);
newHashMap = AR.createAnnotationMapValues();
annoType = annoType->extract(loader->hashUTF8, 1,annoType->size-1);
@@ -486,17 +483,15 @@ JavaObject* Cl) {
else
AnnonClass = loader->loadName(annoType, true, true, NULL);
- if (!AnnonClass) {
- assert(AnnonClass && "Panic, imposible conditions");
- abort();
- }
+ assert(AnnonClass && "Panic, imposible conditions");
+
dprintf("Loaded class : %s \n", UTF8Buffer(AnnonClass->name).cString());
annotationClass = AnnonClass->getClassDelegatee(vm);
annon = upcalls->createAnnotation->invokeJavaObjectStatic(vm, upcalls->newAnnotationHandler, &annotationClass, &newHashMap);
ArrayObject::setElement((ArrayObject *)res, annon, i);
} // end for
- */
+
}
END_NATIVE_EXCEPTION
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMField.inc?rev=180362&r1=180361&r2=180362&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMField.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMField.inc Thu Apr 25 12:01:38 2013
@@ -28,7 +28,7 @@
#include "Reader.h"
-#if 1
+#if 0
using namespace vmkit;
#define dprintf(...) do { printf("ClasspathVMField: "); printf(__VA_ARGS__); } while(0)
#else
@@ -159,10 +159,9 @@ JavaObjectVMField* VMField) {
else
AnnonClass = loader->loadName(annoType, true, true, NULL);
- if (!AnnonClass) {
- assert(AnnonClass && "Panic, imposible conditions");
- abort();
- }
+
+ assert(AnnonClass && "Panic, imposible conditions");
+
dprintf("Loaded class : %s \n", UTF8Buffer(AnnonClass->name).cString());
annotationClass = AnnonClass->getClassDelegatee(vm);
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMMethod.inc?rev=180362&r1=180361&r2=180362&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMMethod.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMMethod.inc Thu Apr 25 12:01:38 2013
@@ -179,10 +179,7 @@ JavaObjectVMMethod* VMMethod) {
else
AnnonClass = loader->loadName(annoType, true, true, NULL);
- if (!AnnonClass) {
- assert(AnnonClass && "Panic, imposible conditions");
- abort();
- }
+ assert(AnnonClass && "Panic, imposible conditions");
dprintf("Loaded class : %s \n", UTF8Buffer(AnnonClass->name).cString());
annotationClass = AnnonClass->getClassDelegatee(vm);
Modified: vmkit/trunk/lib/j3/ClassLib/Reflect.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/Reflect.inc?rev=180362&r1=180361&r2=180362&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/Reflect.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/Reflect.inc Thu Apr 25 12:01:38 2013
@@ -88,7 +88,7 @@ ArrayObject* JavaObjectClass::getDeclare
// Ugly hack : we don't want this method to return annotationType()
// method for annotations. For that, we start the counter to 1 instead
// of 0.
- for (uint32 i = annot?1:0 ; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
+ for (uint32 i = 0 ; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
++i) {
JavaMethod* meth = &realCl->virtualMethods[i];
bool pub = isPublic(meth->access);
@@ -103,7 +103,7 @@ ArrayObject* JavaObjectClass::getDeclare
ret = (ArrayObject*)upcalls->methodArrayClass->doNew(size, vm);
sint32 index = 0;
- for (uint32 i = annot?1:0; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
+ for (uint32 i = 0; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
++i) {
JavaMethod* meth = &realCl->virtualMethods[i];
bool pub = isPublic(meth->access);
More information about the vmkit-commits
mailing list