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

Reply via email to