271 #endif // PRODUCT |
271 #endif // PRODUCT |
272 //------------------------------------------------------------------------------------------------------------------------ |
272 //------------------------------------------------------------------------------------------------------------------------ |
273 // Klass resolution |
273 // Klass resolution |
274 |
274 |
275 void LinkResolver::check_klass_accessability(KlassHandle ref_klass, KlassHandle sel_klass, TRAPS) { |
275 void LinkResolver::check_klass_accessability(KlassHandle ref_klass, KlassHandle sel_klass, TRAPS) { |
276 if (!Reflection::verify_class_access(ref_klass(), |
276 Reflection::VerifyClassAccessResults vca_result = |
277 sel_klass(), |
277 Reflection::verify_class_access(ref_klass(), sel_klass(), true); |
278 true)) { |
278 if (vca_result != Reflection::ACCESS_OK) { |
279 ResourceMark rm(THREAD); |
279 ResourceMark rm(THREAD); |
280 Exceptions::fthrow( |
280 char* msg = Reflection::verify_class_access_msg(ref_klass(), sel_klass(), vca_result); |
281 THREAD_AND_LOCATION, |
281 if (msg == NULL) { |
282 vmSymbols::java_lang_IllegalAccessError(), |
282 Exceptions::fthrow( |
283 "tried to access class %s from class %s", |
283 THREAD_AND_LOCATION, |
284 sel_klass->external_name(), |
284 vmSymbols::java_lang_IllegalAccessError(), |
285 ref_klass->external_name() |
285 "failed to access class %s from class %s", |
286 ); |
286 sel_klass->external_name(), |
287 return; |
287 ref_klass->external_name()); |
|
288 } else { |
|
289 // Use module specific message returned by verify_class_access_msg(). |
|
290 Exceptions::fthrow( |
|
291 THREAD_AND_LOCATION, |
|
292 vmSymbols::java_lang_IllegalAccessError(), |
|
293 "%s", msg); |
|
294 } |
288 } |
295 } |
289 } |
296 } |
290 |
297 |
291 //------------------------------------------------------------------------------------------------------------------------ |
298 //------------------------------------------------------------------------------------------------------------------------ |
292 // Method resolution |
299 // Method resolution |