src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/AheadOfTimeVerificationPhase.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/AheadOfTimeVerificationPhase.java Thu Oct 31 14:23:06 2019 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/AheadOfTimeVerificationPhase.java Thu Oct 31 16:54:16 2019 -0700
@@ -70,10 +70,22 @@
}
private static boolean isDirectMethodHandle(ConstantNode node) {
+ String typeName = StampTool.typeOrNull(node).getName();
if (!isObject(node)) {
return false;
}
- return "Ljava/lang/invoke/DirectMethodHandle;".equals(StampTool.typeOrNull(node).getName());
+
+ switch (typeName) {
+ case "Ljava/lang/invoke/DirectMethodHandle;":
+ case "Ljava/lang/invoke/DirectMethodHandle$StaticAccessor;":
+ case "Ljava/lang/invoke/DirectMethodHandle$Accessor;":
+ case "Ljava/lang/invoke/DirectMethodHandle$Constructor;":
+ case "Ljava/lang/invoke/DirectMethodHandle$Special;":
+ case "Ljava/lang/invoke/DirectMethodHandle$Interface;":
+ return true;
+ default:
+ return false;
+ }
}
private static boolean isBoundMethodHandle(ConstantNode node) {