--- a/hotspot/src/share/vm/prims/jvm.cpp Wed Dec 19 10:35:08 2012 -0800
+++ b/hotspot/src/share/vm/prims/jvm.cpp Thu Dec 20 10:22:19 2012 +0100
@@ -1573,6 +1573,23 @@
Annotations::make_java_array(m->parameter_annotations(), THREAD));
JVM_END
+/* Type use annotations support (JDK 1.8) */
+
+JVM_ENTRY(jbyteArray, JVM_GetClassTypeAnnotations(JNIEnv *env, jclass cls))
+ assert (cls != NULL, "illegal class");
+ JVMWrapper("JVM_GetClassTypeAnnotations");
+ ResourceMark rm(THREAD);
+ // Return null for arrays and primitives
+ if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
+ Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
+ if (k->oop_is_instance()) {
+ typeArrayOop a = Annotations::make_java_array(InstanceKlass::cast(k)->type_annotations()->class_annotations(), CHECK_NULL);
+ return (jbyteArray) JNIHandles::make_local(env, a);
+ }
+ }
+ return NULL;
+JVM_END
+
// New (JDK 1.4) reflection implementation /////////////////////////////////////