RFR: 8200289: Reduce number of exceptions created when calling Lookup::canBeCached

Paul Sandoz paul.sandoz at oracle.com
Tue Mar 27 16:07:39 UTC 2018


2038         MemberName resolveOrNull(byte refKind, MemberName member) throws ReflectiveOperationException {
2039             // do this before attempting to resolve
2040             if (!isClassAccessible(member.getDeclaringClass())) {
2041                 return null;
2042             }
2043             Objects.requireNonNull(member.getName());
2044             Objects.requireNonNull(member.getType());
2045             return IMPL_NAMES.resolveOrNull(refKind, member, lookupClassOrNull());
2046         }
2047 
2048         void checkSymbolicClass(Class<?> refc) throws IllegalAccessException {
2049             if (!isClassAccessible(refc)) {
2050                 throw new MemberName(refc).makeAccessException("symbolic reference class is not accessible", this);
2051             }
2052         }
...
2499             try {
2500                 MemberName resolved2 = publicLookup().resolveOrNull(refKind,
2501                     new MemberName(refKind, defc, member.getName(), member.getType()));
2502                 if (resolved2 == null) {
2503                     return false;
2504                 }
2505                 checkSecurityManager(defc, resolved2);
2506             } catch (ReflectiveOperationException | SecurityException ex) {
2507                 return false;
2508             }

Is it (or was it ever) possible for these methods paths to throw IllegalAccessException / ReflectiveOperationException?

Paul.

> On Mar 27, 2018, at 5:02 AM, Claes Redestad <claes.redestad at oracle.com> wrote:
> 
> Sundar,
> 
> On 2018-03-27 13:23, Sundararajan Athijegannathan wrote:
>> Hi,
>> 
>> +            if (caller != null&& !VerifyAccess.isClassAccessible(refc, caller, allowedModes)) {
>> +                return false;
>> +            }
>> +            return true;
>> 
>> 
>> can be
>> 
>>     return caller == null || VerifyAccess.isClassAccessible(refc, caller, allowedModes);
> 
> agreed, updated in-place.
> 
>> 
>> +1
> 
> Thanks for reviewing!
> 
> /Claes



More information about the core-libs-dev mailing list