hotspot/src/share/vm/interpreter/linkResolver.cpp
changeset 36508 5f9eee6b383b
parent 35913 928548a43408
child 37242 91e5f98fff6f
child 36822 cdc493d7bc9a
equal deleted inserted replaced
36507:c80f6ecb0bb3 36508:5f9eee6b383b
   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