diff -r c459186b9584 -r 7a1e2d7ac55a src/hotspot/share/runtime/reflection.cpp --- 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