Paul,

Thank you so much for the review and suggestion. I will rewrite this this way 
and resend.

thanks!
Karen

On Oct 10, 2013, at 5:13 AM, Paul Sandoz wrote:

> 
> On Oct 10, 2013, at 12:13 AM, Karen Kinnear <karen.kinn...@oracle.com> wrote:
> 
>> 
>> Please review:
>> 
>> webrev: http://cr.openjdk.java.net/~acorn/8026213/webrev/
>> bug: https://bugs.openjdk.java.net/browse/JDK-8026213
>> 
>> Summary:
>> Reflection generates code dynamically to speed up reflection processing 
>> after startup. The first
>> 15 runs of a reflection call  use the vm code path, after that we use the 
>> generated code path, which
>> needs to use invokespecial on private methods in interfaces.
>> 
> 
> You don't need to pass modifiers as a parameter to emitInvoke since it is set 
> as a field on AccessorGenerator and used, e.g. see isStatic().
> 
> So perhaps add the following method to AccessorGenerator:
> 
>    protected boolean isPrivate() {
>        return Modifier.isPrivate(modifiers);
>    }
> 
> and do:
> 
> 642                 if (isInterface()) {
> 
> 643                     if (isPrivate()) {
> 644                       cb.opc_invokespecial(targetMethodRef, count, 0);
> 645                     } else {
> 
> 646                       cb.opc_invokeinterface(targetMethodRef,
> 647                                              count,
> 648                                              count,
> 649                                              
> typeSizeInStackSlots(returnType));
> 
> 650                     }
> 
> 651                 } else {
> 652                     cb.opc_invokevirtual(targetMethodRef,
> 653                                          count,
> 654                                          
> typeSizeInStackSlots(returnType));
> 655                 }
> 656             }
> 657         }
> 
> ?
> 
> Paul.
> 
>> Tested:
>> Test attached to the bug
>> 
>> Also - all the 8011311 private method testing was run with this in the build:
>> Robert Field's TypeTest
>> 8025475 test
>> defmeth privatemethodstest with reflection
>> John Rose's intfbug
>> jtreg: java.util, java.lang
>> jck vm, lang
>> 
>> thanks,
>> Karen
>> 
>> 
> 

Reply via email to