< prev index next >
src/hotspot/share/runtime/reflection.cpp
Print this page
rev 59276 : [mq]: v2
*** 682,692 ****
// not for unsafe anonymous classes - so check host_class
if (access.is_private() && host_class == current_class) {
if (current_class->is_instance_klass() && member_class->is_instance_klass() ) {
InstanceKlass* cur_ik = const_cast<InstanceKlass*>(InstanceKlass::cast(current_class));
InstanceKlass* field_ik = const_cast<InstanceKlass*>(InstanceKlass::cast(member_class));
! bool access = cur_ik->has_nestmate_access_to(field_ik, THREAD);
if (access) {
guarantee(resolved_class->is_subclass_of(member_class), "must be!");
return true;
}
}
--- 682,694 ----
// not for unsafe anonymous classes - so check host_class
if (access.is_private() && host_class == current_class) {
if (current_class->is_instance_klass() && member_class->is_instance_klass() ) {
InstanceKlass* cur_ik = const_cast<InstanceKlass*>(InstanceKlass::cast(current_class));
InstanceKlass* field_ik = const_cast<InstanceKlass*>(InstanceKlass::cast(member_class));
! // Nestmate access checks may require resolution and validation of the nest-host.
! // It is up to the caller to check for pending exceptions and handle appropriately.
! bool access = cur_ik->has_nestmate_access_to(field_ik, CHECK_false);
if (access) {
guarantee(resolved_class->is_subclass_of(member_class), "must be!");
return true;
}
}
< prev index next >