Review request 8153895 (proxy) redundant read edges to superinterfaces of proxy interfaces

Peter Levart peter.levart at gmail.com
Tue Apr 12 12:34:55 UTC 2016


Hi Mandy,

This is OK, but the whole loop could be simplified. No need for Dequeue 
any more:

             // set up proxy class access to proxy interfaces
             Set<Class<?>> visited = new HashSet<>(interfaces);
             for (Class<?> c : visited) {
                 ensureAccess(target, c);
             }

Regards, Peter

On 04/12/2016 01:45 AM, Mandy Chung wrote:
> Peter spots the redundant read edges are added to dynamic module when creating a proxy class.   Proxy class does not access super interfaces of proxy interfaces.   I have verified this simple patch with all core tests and JCK api tests.
>
> diff --git a/src/java.base/share/classes/java/lang/reflect/Proxy.java b/src/java.base/share/classes/java/lang/reflect/Proxy.java
> --- a/src/java.base/share/classes/java/lang/reflect/Proxy.java
> +++ b/src/java.base/share/classes/java/lang/reflect/Proxy.java
> @@ -804,11 +804,6 @@
>                       continue;
>                   }
>                   ensureAccess(target, c);
> -
> -                // add all superinterfaces
> -                for (Class<?> intf : c.getInterfaces()) {
> -                    deque.add(intf);
> -                }
>               }
>   
>               // set up proxy class access to types referenced in the method signature




More information about the core-libs-dev mailing list