comparison src/share/vm/prims/jvm.cpp @ 11019:eaf3742822ec

Merge
author chegar
date Mon, 17 Jun 2013 11:17:49 +0100
parents ce9ecec70f99 6bd680e9ea35
children 3a0774193f71
comparison
equal deleted inserted replaced
11018:0861193d358a 11019:eaf3742822ec
1070 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) { 1070 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
1071 // There are no signers for primitive types 1071 // There are no signers for primitive types
1072 return NULL; 1072 return NULL;
1073 } 1073 }
1074 1074
1075 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 1075 objArrayOop signers = java_lang_Class::signers(JNIHandles::resolve_non_null(cls));
1076 objArrayOop signers = NULL;
1077 if (k->oop_is_instance()) {
1078 signers = InstanceKlass::cast(k)->signers();
1079 }
1080 1076
1081 // If there are no signers set in the class, or if the class 1077 // If there are no signers set in the class, or if the class
1082 // is an array, return NULL. 1078 // is an array, return NULL.
1083 if (signers == NULL) return NULL; 1079 if (signers == NULL) return NULL;
1084 1080
1100 // This call is ignored for primitive types and arrays. 1096 // This call is ignored for primitive types and arrays.
1101 // Signers are only set once, ClassLoader.java, and thus shouldn't 1097 // Signers are only set once, ClassLoader.java, and thus shouldn't
1102 // be called with an array. Only the bootstrap loader creates arrays. 1098 // be called with an array. Only the bootstrap loader creates arrays.
1103 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 1099 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
1104 if (k->oop_is_instance()) { 1100 if (k->oop_is_instance()) {
1105 InstanceKlass::cast(k)->set_signers(objArrayOop(JNIHandles::resolve(signers))); 1101 java_lang_Class::set_signers(k->java_mirror(), objArrayOop(JNIHandles::resolve(signers)));
1106 } 1102 }
1107 } 1103 }
1108 JVM_END 1104 JVM_END
1109 1105
1110 1106
1117 if (java_lang_Class::is_primitive(JNIHandles::resolve(cls))) { 1113 if (java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
1118 // Primitive types does not have a protection domain. 1114 // Primitive types does not have a protection domain.
1119 return NULL; 1115 return NULL;
1120 } 1116 }
1121 1117
1122 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 1118 oop pd = java_lang_Class::protection_domain(JNIHandles::resolve(cls));
1123 return (jobject) JNIHandles::make_local(env, k->protection_domain()); 1119 return (jobject) JNIHandles::make_local(env, pd);
1124 JVM_END 1120 JVM_END
1125 1121
1126 1122
1127 // Obsolete since 1.2 (Class.setProtectionDomain removed), although 1123 // Obsolete since 1.2 (Class.setProtectionDomain removed), although
1128 // still defined in core libraries as of 1.5. 1124 // still defined in core libraries as of 1.5.
1137 1133
1138 // cls won't be an array, as this called only from ClassLoader.defineClass 1134 // cls won't be an array, as this called only from ClassLoader.defineClass
1139 if (k->oop_is_instance()) { 1135 if (k->oop_is_instance()) {
1140 oop pd = JNIHandles::resolve(protection_domain); 1136 oop pd = JNIHandles::resolve(protection_domain);
1141 assert(pd == NULL || pd->is_oop(), "just checking"); 1137 assert(pd == NULL || pd->is_oop(), "just checking");
1142 InstanceKlass::cast(k)->set_protection_domain(pd); 1138 java_lang_Class::set_protection_domain(k->java_mirror(), pd);
1143 } 1139 }
1144 } 1140 }
1145 JVM_END 1141 JVM_END
1146 1142
1147 static bool is_authorized(Handle context, instanceKlassHandle klass, TRAPS) { 1143 static bool is_authorized(Handle context, instanceKlassHandle klass, TRAPS) {