--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java Wed Jul 05 20:46:39 2017 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java Mon Aug 24 13:15:12 2015 +0100
@@ -190,7 +190,11 @@
@Override @DefinedBy(Api.LANGUAGE_MODEL)
public boolean equals(Object any) {
- if (!super.equals(any)) return false;
+ return equalsImpl(any, true);
+ }
+
+ protected boolean equalsImpl(Object any, boolean includeDynamicArgs) {
+ if (includeDynamicArgs && !super.equals(any)) return false;
if (!(any instanceof DynamicMethod)) return false;
DynamicMethodSymbol dm1 = (DynamicMethodSymbol)other;
DynamicMethodSymbol dm2 = (DynamicMethodSymbol)((DynamicMethod)any).other;
@@ -202,7 +206,11 @@
@Override @DefinedBy(Api.LANGUAGE_MODEL)
public int hashCode() {
- int hash = super.hashCode();
+ return hashCodeImpl(true);
+ }
+
+ protected int hashCodeImpl(boolean includeDynamicArgs) {
+ int hash = includeDynamicArgs ? super.hashCode() : 0;
DynamicMethodSymbol dm = (DynamicMethodSymbol)other;
hash += dm.bsmKind * 7 +
dm.bsm.hashCode() * 11;
@@ -223,6 +231,26 @@
}
return result;
}
+
+ static class BootstrapMethodsKey extends DynamicMethod {
+ BootstrapMethodsKey(DynamicMethodSymbol m, Types types) {
+ super(m, types);
+ }
+
+ @Override @DefinedBy(Api.LANGUAGE_MODEL)
+ public boolean equals(Object any) {
+ return equalsImpl(any, false);
+ }
+
+ @Override @DefinedBy(Api.LANGUAGE_MODEL)
+ public int hashCode() {
+ return hashCodeImpl(false);
+ }
+
+ Object[] getUniqueArgs() {
+ return uniqueStaticArgs;
+ }
+ }
}
static class Variable extends DelegatedSymbol<VarSymbol> {