src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java Fri Jun 07 14:32:48 2019 -0700
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java Fri Jun 07 18:11:33 2019 -0400
@@ -241,7 +241,7 @@
@Override
public boolean canBeStaticallyBound() {
- return (isFinal() || isPrivate() || isStatic() || holder.isLeaf()) && isConcrete();
+ return (isFinal() || isPrivate() || isStatic() || holder.isLeaf() || isConstructor()) && isConcrete();
}
@Override
@@ -406,6 +406,8 @@
@Override
public ResolvedJavaMethod uniqueConcreteMethod(HotSpotResolvedObjectType receiver) {
+ assert !canBeStaticallyBound() : this;
+
if (receiver.isInterface()) {
// Cannot trust interfaces. Because of:
// interface I { void foo(); }
@@ -417,6 +419,7 @@
// seeing A.foo().
return null;
}
+ assert !receiver.isLinked() || isInVirtualMethodTable(receiver);
if (this.isDefault()) {
// CHA for default methods doesn't work and may crash the VM
return null;