> On Jan 30, 2018, at 7:22 PM, David Holmes <david.hol...@oracle.com> wrote:
> 
> Hi Paul,
> 
> On 31/01/2018 12:24 PM, Paul Sandoz wrote:
>>> On Jan 30, 2018, at 1:55 AM, David Holmes <david.hol...@oracle.com 
>>> <mailto:david.hol...@oracle.com>> wrote:
>>> 
>>> 
>>>      MethodHandle API Changes:
>>> 
>>> - java/lang/invoke/MethodHandle.java
>>>   * A non-virtual method handle to a specific virtual method implementation
>>>   * can also be created.  These do not perform virtual lookup based on
>>>   * receiver type.  Such a method handle simulates the effect of
>>> - * an {@code invokespecial} instruction to the same method.
>>> + * an {@code invokespecial} instruction to the same non-private method;
>>> + * or an {@code invokevirtual} or {@code invokeinterface} instruction to 
>>> the
>>> + * same private method (as applicable).
>>> 
>>> I tried to clarify that non-virtual invocations are not limited to 
>>> invokespecial - as private invocations via invokevirtual or invokeinterface 
>>> are also non-virtual.
>>> 
>>> 
>> Why s/same method/same non-private method/ for the invokespecial?
>> It’s possible to look up a private method within the same class using 
>> Lookup.invokespecial and invoke it (and also look up a private constructor 
>> and invoke it).
> 
> Yes you are right, but this text is not trying to describe how an 
> invokespecial might be used, but rather how "A non-virtual method handle to a 
> specific virtual method implementation can also be created.”
> 

Ok, i see now.


> But the notion of "specific virtual method implementation" is perhaps not 
> applicable to private methods in the first place.
> 
> Perhaps I just need to remove this change altogether and leave it as-is.
> 

I would be inclined just to leave it as is.

Paul.

Reply via email to