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

Claes Redestad claes.redestad at oracle.com
Tue Mar 27 17:01:38 UTC 2018


Paul,

On 2018-03-27 18:07, Paul Sandoz wrote:

> 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         }

this one still throws IllegalAccessException, which extends ROE...

> 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         }

... but is no longer used here. I'll remove the throws.


> ...
> 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             }

... nor here, so ROE can no longer be caught here. Removing.

http://cr.openjdk.java.net/~redestad/8200289/open.01/

/Claes


More information about the core-libs-dev mailing list