langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java
changeset 32334 fd65e32e16b3
parent 27224 228abfa87080
child 32336 9e9acf7f26a4
--- 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> {