<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi Robert,<br>
      <br>
      I think this fix is not complete. When one sets the system
      property sun.reflect.noInflation=true, reflection proxy is still
      attempted to be generated for anonymous classes (see
      ReflectionFactory.newMethodAccessor/newConstructorAccessor).<br>
      <br>
      I would also restructure the Method/Constructor accessor logic
      differently. The check for ReflectUtil.isVMAnonymousClass() can be
      performed just once (in the
      newMethodAccessor/newConstructorAccessor methods) and based on
      this check, create accessor:<br>
      <br>
      - for classic declaring class - as is / unchanged<br>
      - for anonymous declaring class - just create and return
      NativeMethodAccessorImpl without a parent<br>
      <br>
      Then in NativeMethodAccessorImpl (and same for constructor),
      modify the inflation checking logic:<br>
      <br>
      <tt>        if (<b>parent != null && </b>++numInvocations
        > ReflectionFactory.inflationThreshold()) {</tt><tt><br>
      </tt><tt>            MethodAccessorImpl acc = (MethodAccessorImpl)</tt><tt><br>
      </tt><tt>                new MethodAccessorGenerator().</tt><tt><br>
      </tt><tt>                   
        generateMethod(method.getDeclaringClass(),</tt><tt><br>
      </tt><tt>                                   method.getName(),</tt><tt><br>
      </tt><tt>                                  
        method.getParameterTypes(),</tt><tt><br>
      </tt><tt>                                  
        method.getReturnType(),</tt><tt><br>
      </tt><tt>                                  
        method.getExceptionTypes(),</tt><tt><br>
      </tt><tt>                                  
        method.getModifiers());</tt><tt><br>
      </tt><tt>            parent.setDelegate(acc);</tt><tt><br>
      </tt><tt>        }</tt><br>
      <br>
      Regards, Peter<br>
      <br>
      On 11/04/2013 07:12 PM, <a class="moz-txt-link-abbreviated" href="mailto:robert.field@oracle.com">robert.field@oracle.com</a> wrote:<br>
    </div>
    <blockquote cite="mid:20131104181255.459946297B@hg.openjdk.java.net"
      type="cite">
      <pre wrap="">Changeset: 51b002381b35
Author:    rfield
Date:      2013-11-04 10:12 -0800
URL:       <a class="moz-txt-link-freetext" href="http://hg.openjdk.java.net/jdk8/tl/jdk/rev/51b002381b35">http://hg.openjdk.java.net/jdk8/tl/jdk/rev/51b002381b35</a>

7194897: JSR 292: Cannot create more than 16 instances of an anonymous class
8027681: Lambda serialization fails once reflection proxy generation kicks in
Reviewed-by: ksrini, briangoetz, jfranck
Contributed-by: <a class="moz-txt-link-abbreviated" href="mailto:joel.franck@oracle.com">joel.franck@oracle.com</a>, <a class="moz-txt-link-abbreviated" href="mailto:brian.goetz@oracle.com">brian.goetz@oracle.com</a>, <a class="moz-txt-link-abbreviated" href="mailto:robert.field@oracle.com">robert.field@oracle.com</a>

! src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java
! src/share/classes/sun/reflect/NativeMethodAccessorImpl.java
! src/share/classes/sun/reflect/misc/ReflectUtil.java
+ test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java
! test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java
+ test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java

</pre>
    </blockquote>
    <br>
  </body>
</html>