[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