Details
-
Enhancement
-
Resolution: Fixed
-
P2
-
9
-
b143
Description
For JDK 9, JDK-8071453 adds support for private methods in interfaces. As noted there, at the VM level, private interface methods have been allowed since JDK 8. However, we also need to be able to debug these methods and as such we need to incorporate them into the JNI, JDWP, JDI and JDB specifications and API's.
For example, at present com.sun.jdi.ObjectReference.invokeMethod is specified to throw IllegalArgumentException if the NONVIRTUAL invocation mode is specified and the method is "abstract or a non-default interface method". [Aside: the specification is actually in error as it already precludes invoking static interface methods!].
The JNI, JDWP, and JDB specifications and APIs need to examined to see whether they permit the appropriate interactions with private interface methods.
For example, at present com.sun.jdi.ObjectReference.invokeMethod is specified to throw IllegalArgumentException if the NONVIRTUAL invocation mode is specified and the method is "abstract or a non-default interface method". [Aside: the specification is actually in error as it already precludes invoking static interface methods!].
The JNI, JDWP, and JDB specifications and APIs need to examined to see whether they permit the appropriate interactions with private interface methods.
Attachments
Issue Links
- csr of
-
CCC-8165827 Support private interface methods in JNI, JDWP, JDI and JDB
- Closed
- relates to
-
JDK-8167336 Handling of static interface methods in JDI ObjectReference.invokeMethod is incorrect and incomplete
- Open
-
JDK-8081800 AbstractMethodError when evaluating a private method in an interface via debugger
- Resolved
-
JDK-8191117 [Nestmates] Update JNI, JVM TI and JDI/JDWP to allow for nestmate access
- Resolved
-
JDK-8071453 Allow interface methods to be private
- Closed