equal
deleted
inserted
replaced
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; |