--- a/src/hotspot/share/runtime/reflection.cpp Thu Oct 11 14:10:13 2018 +0100
+++ b/src/hotspot/share/runtime/reflection.cpp Thu Oct 11 10:11:18 2018 -0400
@@ -750,10 +750,12 @@
InnerClassesIterator iter(outer);
constantPoolHandle cp (THREAD, outer->constants());
for (; !iter.done(); iter.next()) {
- int ioff = iter.inner_class_info_index();
- int ooff = iter.outer_class_info_index();
+ int ioff = iter.inner_class_info_index();
+ int ooff = iter.outer_class_info_index();
- if (inner_is_member && ioff != 0 && ooff != 0) {
+ if (inner_is_member && ioff != 0 && ooff != 0) {
+ if (cp->klass_name_at_matches(outer, ooff) &&
+ cp->klass_name_at_matches(inner, ioff)) {
Klass* o = cp->klass_at(ooff, CHECK);
if (o == outer) {
Klass* i = cp->klass_at(ioff, CHECK);
@@ -761,14 +763,16 @@
return;
}
}
- }
- if (!inner_is_member && ioff != 0 && ooff == 0 &&
- cp->klass_name_at_matches(inner, ioff)) {
- Klass* i = cp->klass_at(ioff, CHECK);
- if (i == inner) {
- return;
- }
- }
+ }
+ }
+
+ if (!inner_is_member && ioff != 0 && ooff == 0 &&
+ cp->klass_name_at_matches(inner, ioff)) {
+ Klass* i = cp->klass_at(ioff, CHECK);
+ if (i == inner) {
+ return;
+ }
+ }
}
// 'inner' not declared as an inner klass in outer