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