diff -r 210190f00665 test/java/lang/invoke/AccessControlTest.java --- a/test/java/lang/invoke/AccessControlTest.java Sun Dec 06 08:28:15 2015 +0000 +++ b/test/java/lang/invoke/AccessControlTest.java Mon Dec 07 09:36:45 2015 +0100 @@ -225,17 +225,23 @@ return s; } + /** Lookup helper. If the lookup class is in a loose module with PUBLIC + * access, then public members of public types in all unnamed modules + * can be accessed. + */ + private boolean looseModule(Class c1, Class c2) { + return c1.getModule().canRead(null) + && (lookupModes & PUBLIC) != 0 + && (!c2.getModule().isNamed()) + && Modifier.isPublic(c2.getModifiers()); + } + /** Predict the success or failure of accessing this method. */ public boolean willAccess(Method m) { Class c1 = lookupClass(); Class c2 = m.getDeclaringClass(); - // if the lookup class is in a loose module with PUBLIC access then - // public members of public types in all unnamed modules can be accessed - if (c1.getModule().canRead(null) - && (lookupModes & PUBLIC) != 0 - && (!c2.getModule().isNamed()) - && Modifier.isPublic(c2.getModifiers()) + if (looseModule(c1, c2) && Modifier.isPublic(m.getModifiers())) return true; @@ -271,12 +277,7 @@ } } - // if the lookup class is in a loose module with PUBLIC access then - // public types in all unnamed modules can be accessed - if (c1.getModule().canRead(null) - && (lookupModes & PUBLIC) != 0 - && (!c2.getModule().isNamed()) - && Modifier.isPublic(c2.getModifiers())) + if (looseModule(c1, c2)) return true; LookupCase lc = this.in(c2);