Commit d7eb93d
committed
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]>1 parent 5a3af11 commit d7eb93d
File tree
1 file changed
+5
-1
lines changed1 file changed
+5
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
1183 | 1183 | | |
1184 | 1184 | | |
1185 | 1185 | | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
1186 | 1190 | | |
1187 | 1191 | | |
1188 | 1192 | | |
| |||
0 commit comments