langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java
changeset 32334 fd65e32e16b3
parent 27224 228abfa87080
child 32336 9e9acf7f26a4
equal deleted inserted replaced
32256:3966bd3b8167 32334:fd65e32e16b3
   188             uniqueStaticArgs = getUniqueTypeArray(m.staticArgs, types);
   188             uniqueStaticArgs = getUniqueTypeArray(m.staticArgs, types);
   189         }
   189         }
   190 
   190 
   191         @Override @DefinedBy(Api.LANGUAGE_MODEL)
   191         @Override @DefinedBy(Api.LANGUAGE_MODEL)
   192         public boolean equals(Object any) {
   192         public boolean equals(Object any) {
   193             if (!super.equals(any)) return false;
   193             return equalsImpl(any, true);
       
   194         }
       
   195 
       
   196         protected boolean equalsImpl(Object any, boolean includeDynamicArgs) {
       
   197             if (includeDynamicArgs && !super.equals(any)) return false;
   194             if (!(any instanceof DynamicMethod)) return false;
   198             if (!(any instanceof DynamicMethod)) return false;
   195             DynamicMethodSymbol dm1 = (DynamicMethodSymbol)other;
   199             DynamicMethodSymbol dm1 = (DynamicMethodSymbol)other;
   196             DynamicMethodSymbol dm2 = (DynamicMethodSymbol)((DynamicMethod)any).other;
   200             DynamicMethodSymbol dm2 = (DynamicMethodSymbol)((DynamicMethod)any).other;
   197             return dm1.bsm == dm2.bsm &&
   201             return dm1.bsm == dm2.bsm &&
   198                         dm1.bsmKind == dm2.bsmKind &&
   202                         dm1.bsmKind == dm2.bsmKind &&
   200                             ((DynamicMethod)any).uniqueStaticArgs);
   204                             ((DynamicMethod)any).uniqueStaticArgs);
   201         }
   205         }
   202 
   206 
   203         @Override @DefinedBy(Api.LANGUAGE_MODEL)
   207         @Override @DefinedBy(Api.LANGUAGE_MODEL)
   204         public int hashCode() {
   208         public int hashCode() {
   205             int hash = super.hashCode();
   209             return hashCodeImpl(true);
       
   210         }
       
   211 
       
   212         protected int hashCodeImpl(boolean includeDynamicArgs) {
       
   213             int hash = includeDynamicArgs ? super.hashCode() : 0;
   206             DynamicMethodSymbol dm = (DynamicMethodSymbol)other;
   214             DynamicMethodSymbol dm = (DynamicMethodSymbol)other;
   207             hash += dm.bsmKind * 7 +
   215             hash += dm.bsmKind * 7 +
   208                     dm.bsm.hashCode() * 11;
   216                     dm.bsm.hashCode() * 11;
   209             for (int i = 0; i < dm.staticArgs.length; i++) {
   217             for (int i = 0; i < dm.staticArgs.length; i++) {
   210                 hash += (uniqueStaticArgs[i].hashCode() * 23);
   218                 hash += (uniqueStaticArgs[i].hashCode() * 23);
   220                 } else {
   228                 } else {
   221                     result[i] = objects[i];
   229                     result[i] = objects[i];
   222                 }
   230                 }
   223             }
   231             }
   224             return result;
   232             return result;
       
   233         }
       
   234 
       
   235         static class BootstrapMethodsKey extends DynamicMethod {
       
   236             BootstrapMethodsKey(DynamicMethodSymbol m, Types types) {
       
   237                 super(m, types);
       
   238             }
       
   239 
       
   240             @Override @DefinedBy(Api.LANGUAGE_MODEL)
       
   241             public boolean equals(Object any) {
       
   242                 return equalsImpl(any, false);
       
   243             }
       
   244 
       
   245             @Override @DefinedBy(Api.LANGUAGE_MODEL)
       
   246             public int hashCode() {
       
   247                 return hashCodeImpl(false);
       
   248             }
       
   249 
       
   250             Object[] getUniqueArgs() {
       
   251                 return uniqueStaticArgs;
       
   252             }
   225         }
   253         }
   226     }
   254     }
   227 
   255 
   228     static class Variable extends DelegatedSymbol<VarSymbol> {
   256     static class Variable extends DelegatedSymbol<VarSymbol> {
   229         UniqueType uniqueType;
   257         UniqueType uniqueType;