< prev index next >

src/hotspot/share/interpreter/linkResolver.cpp

Print this page
rev 50260 : 8199940: Print more information about class loaders in IllegalAccessErrors.
ReviewedBy: lfoltan

@@ -216,11 +216,11 @@
     break;
   default:
     fatal("Unexpected call kind %d", call_kind());
   }
 }
-#endif //ASSERT
+#endif // ASSERT
 
 #ifndef PRODUCT
 void CallInfo::print() {
   ResourceMark rm;
   const char* kindstr;

@@ -292,11 +292,11 @@
   if (fold_type_to_class) {
     if (sel_klass->is_objArray_klass()) {
       base_klass = ObjArrayKlass::cast(sel_klass)->bottom_klass();
     }
     // The element type could be a typeArray - we only need the access
-    // check if it is an reference to another class.
+    // check if it is a reference to another class.
     if (!base_klass->is_instance_klass()) {
       return;  // no relevant check to do
     }
   }
   Reflection::VerifyClassAccessResults vca_result =

@@ -309,12 +309,12 @@
     if (msg == NULL) {
       Exceptions::fthrow(
         THREAD_AND_LOCATION,
         vmSymbols::java_lang_IllegalAccessError(),
         "failed to access class %s from class %s",
-        base_klass->external_name(),
-        ref_klass->external_name());
+        base_klass->class_loader_and_module_name(),
+        ref_klass->class_loader_and_module_name());
     } else {
       // Use module specific message returned by verify_class_access_msg().
       Exceptions::fthrow(
         THREAD_AND_LOCATION,
         vmSymbols::java_lang_IllegalAccessError(),

@@ -541,11 +541,11 @@
           tty->print_cr("*** result for %s: ", vmIntrinsics::name_at(iid));
           result->print();
         }
         assert(actual_size_of_params == expected_size_of_params,
                "%d != %d", actual_size_of_params, expected_size_of_params);
-#endif //ASSERT
+#endif // ASSERT
 
         assert(appendix_result_or_null != NULL, "");
         (*appendix_result_or_null) = appendix;
         (*method_type_result)      = method_type;
       }

@@ -589,16 +589,18 @@
                                        true)) {
     ResourceMark rm(THREAD);
     Exceptions::fthrow(
       THREAD_AND_LOCATION,
       vmSymbols::java_lang_IllegalAccessError(),
-      "tried to access method %s.%s%s from class %s",
-      sel_klass->external_name(),
+      "tried to access %s%s%smethod %s.%s%s from class %s",
+      sel_method->is_abstract()  ? "abstract "  : "",
+      sel_method->is_protected() ? "protected " : "",
+      sel_method->is_private()   ? "private "   : "",
+      sel_klass->class_loader_and_module_name(),
       sel_method->name()->as_C_string(),
       sel_method->signature()->as_C_string(),
-      ref_klass->external_name()
-    );
+      ref_klass->class_loader_and_module_name());
     return;
   }
 }
 
 methodHandle LinkResolver::resolve_method_statically(Bytecodes::Code code,

@@ -911,15 +913,16 @@
                                        true)) {
     ResourceMark rm(THREAD);
     Exceptions::fthrow(
       THREAD_AND_LOCATION,
       vmSymbols::java_lang_IllegalAccessError(),
-      "tried to access field %s.%s from class %s",
-      sel_klass->external_name(),
+      "tried to access %s%sfield %s.%s from class %s",
+      fd.is_protected() ? "protected " : "",
+      fd.is_private()   ? "private "   : "",
+      sel_klass->class_loader_and_module_name(),
       fd.name()->as_C_string(),
-      ref_klass->external_name()
-    );
+      ref_klass->class_loader_and_module_name());
     return;
   }
 }
 
 void LinkResolver::resolve_field_access(fieldDescriptor& fd, const constantPoolHandle& pool, int index, const methodHandle& method, Bytecodes::Code byte, TRAPS) {
< prev index next >