RFR: 8165827: Support private interface methods in JNI, JDWP, JDI and JDB

Daniel D. Daugherty daniel.daugherty at oracle.com
Tue Oct 18 14:27:09 UTC 2016


On 10/17/16 9:59 PM, David Holmes wrote:
> Hi Lois, Dan, Serguei,
>
> Went to push this today and realized I had left off the updated JNI 
> method lookup tests. As I said in the bug report JNI behaves as 
> expected, but there weren't any testcases so I added them:
>
> http://cr.openjdk.java.net/~dholmes/8165827/webrev.hotspot/

test/runtime/jni/PrivateInterfaceMethods/PrivateInterfaceMethods.java
     L74:         lookup(A.class.getName(), "onlyA", null); //should succeed
     :
     :
     L90:         lookup(Impl2.class.getName(), "onlyC", 
NoSuchMethodError.class); //should fail
         nit: please add a space after '//'

     L138:         String desc = " Lookup of " + definingClass + "." + 
method;
         nit: any particular reason for the space before Lookup?



test/runtime/jni/PrivateInterfaceMethods/libPrivateInterfaceMethods.c
     L78: blank line at the end of the file. jcheck will probably complain.


Thumbs up! Feel free to ignore the nits. No need to see a new
webrev if you fix them.

Dan


>
> Thanks,
> David
>
> On 11/10/2016 11:55 AM, David Holmes wrote:
>> Turns out the only place changes were needed were in JDI.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8165827
>>
>> webrev: http://cr.openjdk.java.net/~dholmes/8165827/webrev/
>>
>> The spec change in ObjectReference is very simple and there is a CCC
>> request in progress to ratify that change.
>>
>> The implementation change in ObjectReferenceImpl mirrors the updated
>> spec and use the same format as already present in the class version of
>> the check method.
>>
>> The test is a little more complex. This is obviously an extension to
>> what is already tested in InterfaceMethodsTest. However IMT has a number
>> of problem with the way it is currently written [1] - specifically it
>> doesn't properly separate method lookup from method invocation. So I've
>> added the capability to separate lookup and invocation for use with the
>> private interface methods - I have not tried to address shortcomings of
>> the existing tests. Though I did fix the return value checking logic!
>> And did some clarifying comments and renaming in a couple of place.
>>
>> Still on the test I can't add the negative tests I would like to add
>> because they actually pass due to a different long standing bug in JDI -
>> [2]. So the actual private interface method testing is very simple: can
>> I get the Method from the InterfaceType for the interface declaring the
>> method? Can I then invoke that method on an instance of a class that
>> implements the interface.
>>
>> Thanks,
>> David
>>
>> [1] https://bugs.openjdk.java.net/browse/JDK-8166453
>> [2] https://bugs.openjdk.java.net/browse/JDK-8167416



More information about the serviceability-dev mailing list