[vmkit-commits] [vmkit] r61897 - /vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Jan 7 15:17:50 PST 2009


Author: geoffray
Date: Wed Jan  7 17:17:50 2009
New Revision: 61897

URL: http://llvm.org/viewvc/llvm-project?rev=61897&view=rev
Log:
Implementation AccessibleObject functions since they are buggy in classpath
0.97.2.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=61897&r1=61896&r2=61897&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp Wed Jan  7 17:17:50 2009
@@ -300,6 +300,16 @@
   return res;
 }
 
+extern "C" JavaObject* nativeGetAnnotation(JavaObject* obj) {
+  return 0;
+}
+
+extern "C" JavaObject* nativeGetDeclaredAnnotations() {
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
+  return array->doNew(0, vm);
+}
+
 extern "C" void nativePropertiesPostInit(JavaObject* prop);
 
 
@@ -681,5 +691,21 @@
                   "(Ljava/util/Properties;)V", ACC_STATIC);
   postProperties->setCompiledPtr((void*)(intptr_t)nativePropertiesPostInit,
                                  "nativePropertiesPostInit");
+
+  // Also implement these twos, implementation in GNU Classpath 0.97.2 is buggy.
+  JavaMethod* getAnnotation =
+    UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject", "getAnnotation",
+                  "(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;",
+                  ACC_VIRTUAL);
+  getAnnotation->setCompiledPtr((void*)(intptr_t)nativeGetAnnotation,
+                                "nativeGetAnnotation");
+  
+  JavaMethod* getAnnotations =
+    UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject",
+                  "getDeclaredAnnotations",
+                  "()[Ljava/lang/annotation/Annotation;",
+                  ACC_VIRTUAL);
+  getAnnotations->setCompiledPtr((void*)(intptr_t)nativeGetDeclaredAnnotations,
+                                 "nativeGetDeclaredAnnotations");
 }
 





More information about the vmkit-commits mailing list