Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Match RI behaviour for MethodHandles.unrelfect with OpenJDK MHs
This patch addresses eclipse-openj9/openj9#14985. For MethodHandles to private interface methods, the RI erroneously initializes the MethodHandle to have an InvokeInterface reference kind, leading to an invoke-time AbstractMethodError throw. As per the spec, OpenJ9 initializes MethodHandles to private interface methods to have an InvokeSpecial reference kind which does not throw the error. This distinction causes a test failure for a test reported in eclipse-openj9/openj9#14985. Though not-spec compliant, the test expects an AbstractMethodError to be thrown to conform to the RI behaviour. For OpenJ9 MHs, MethodHandles.unreflect identifies private interface methods and installs an AbstractMethodError-thrower MH. This patch sets up a similar mechanisms for OpenJDK MHs by calling a MethodHandleResolver method that installs the AbstractMethodError-thrower MH. Issues: eclipse-openj9/openj9#14985 Signed-off-by: Nathan Henderson <[email protected]>
- Loading branch information