< prev index next >

src/hotspot/share/prims/jvm.cpp

Print this page
rev 50447 : 8204561: JVM_GetClassSigners: wrap signers oop in an objArrayHandle for subsequent safepoint.
Reviewed-by: ???
Contributed-by: richard.reingruber@sap.com


1098     return JNI_FALSE;
1099   }
1100   Klass* k = java_lang_Class::as_Klass(mirror);
1101   jboolean result = k->is_interface();
1102   assert(!result || k->is_instance_klass(),
1103          "all interfaces are instance types");
1104   // The compiler intrinsic for isInterface tests the
1105   // Klass::_access_flags bits in the same way.
1106   return result;
1107 JVM_END
1108 
1109 
1110 JVM_ENTRY(jobjectArray, JVM_GetClassSigners(JNIEnv *env, jclass cls))
1111   JVMWrapper("JVM_GetClassSigners");
1112   JvmtiVMObjectAllocEventCollector oam;
1113   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
1114     // There are no signers for primitive types
1115     return NULL;
1116   }
1117 
1118   objArrayOop signers = java_lang_Class::signers(JNIHandles::resolve_non_null(cls));
1119 
1120   // If there are no signers set in the class, or if the class
1121   // is an array, return NULL.
1122   if (signers == NULL) return NULL;
1123 
1124   // copy of the signers array
1125   Klass* element = ObjArrayKlass::cast(signers->klass())->element_klass();
1126   objArrayOop signers_copy = oopFactory::new_objArray(element, signers->length(), CHECK_NULL);
1127   for (int index = 0; index < signers->length(); index++) {
1128     signers_copy->obj_at_put(index, signers->obj_at(index));
1129   }
1130 
1131   // return the copy
1132   return (jobjectArray) JNIHandles::make_local(env, signers_copy);
1133 JVM_END
1134 
1135 
1136 JVM_ENTRY(void, JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers))
1137   JVMWrapper("JVM_SetClassSigners");
1138   if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {




1098     return JNI_FALSE;
1099   }
1100   Klass* k = java_lang_Class::as_Klass(mirror);
1101   jboolean result = k->is_interface();
1102   assert(!result || k->is_instance_klass(),
1103          "all interfaces are instance types");
1104   // The compiler intrinsic for isInterface tests the
1105   // Klass::_access_flags bits in the same way.
1106   return result;
1107 JVM_END
1108 
1109 
1110 JVM_ENTRY(jobjectArray, JVM_GetClassSigners(JNIEnv *env, jclass cls))
1111   JVMWrapper("JVM_GetClassSigners");
1112   JvmtiVMObjectAllocEventCollector oam;
1113   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
1114     // There are no signers for primitive types
1115     return NULL;
1116   }
1117 
1118   objArrayHandle signers(THREAD, java_lang_Class::signers(JNIHandles::resolve_non_null(cls)));
1119 
1120   // If there are no signers set in the class, or if the class
1121   // is an array, return NULL.
1122   if (signers == NULL) return NULL;
1123 
1124   // copy of the signers array
1125   Klass* element = ObjArrayKlass::cast(signers->klass())->element_klass();
1126   objArrayOop signers_copy = oopFactory::new_objArray(element, signers->length(), CHECK_NULL);
1127   for (int index = 0; index < signers->length(); index++) {
1128     signers_copy->obj_at_put(index, signers->obj_at(index));
1129   }
1130 
1131   // return the copy
1132   return (jobjectArray) JNIHandles::make_local(env, signers_copy);
1133 JVM_END
1134 
1135 
1136 JVM_ENTRY(void, JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers))
1137   JVMWrapper("JVM_SetClassSigners");
1138   if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {


< prev index next >