< 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 >