Review Request: JDK-8173978: Lookup.in should allow teleporting from a lookup class in a named module without dropping all access

Mandy Chung mandy.chung at oracle.com
Fri Jul 5 18:19:32 UTC 2019



On 7/5/19 8:24 AM, Peter Levart wrote:
> Hi Mandy,
>
> On 7/2/19 7:20 PM, Mandy Chung wrote:
>> Webrev updated:
>> http://cr.openjdk.java.net/~mchung/jdk14/8173978/webrev.01/
>
> I just skimmed across code and I think there's a little optimization 
> possible in VerifyAccess:
>
>  :
> ...instead of seting prevLookupModule to lookupModule in case 
> prevLookupClass is null (common case) causing double canRead and 
> isExported checks against the same module in isModuleAccessible() (for 
> positive outcome - the case where we want the check to be quick):
>
alternatively, keep prevLookupModule = lookupModule if prevLookupClass 
is null

> :
> ...and then check against null in isModuleAccessible():
>

and skip for the case where m1 == m2 like:

    public static boolean isModuleAccessible(Class<?> refc, Module m1, 
Module m2) {
         Module refModule = refc.getModule();
         assert refModule != m1 || refModule != m2;
         int mods = getClassModifiers(refc);
         if (isPublic(mods)) {
             if (m1.canRead(refModule) && (m1 == m2 || 
m2.canRead(refModule))) {
                 String pn = refc.getPackageName();

                 // refc is exported package to at least both m1 and m2
                 if (refModule.isExported(pn, m1) && (m1 == m2 || 
refModule.isExported(pn, m2)))
                     return true;
             }
         }
         return false;
     }

Mandy


More information about the core-libs-dev mailing list