@@ -306,8 +306,9 @@ private final class BitmapIndexedMapNode[K, +V](
306
306
307
307
if ((dataMap & bitpos) != 0 ) {
308
308
val index = indexFrom(dataMap, mask, bitpos)
309
- val key0 = this .getKey(index)
310
- if (key0 == key) {
309
+ val key0 = getKey(index)
310
+ val key0UnimprovedHash = getHash(index)
311
+ if (key0UnimprovedHash == originalHash && key0 == key) {
311
312
val value0 = this .getValue(index)
312
313
return (
313
314
if ((key0.asInstanceOf [AnyRef ] eq key.asInstanceOf [AnyRef ]) && (value0.asInstanceOf [AnyRef ] eq value.asInstanceOf [AnyRef ]))
@@ -316,7 +317,6 @@ private final class BitmapIndexedMapNode[K, +V](
316
317
)
317
318
} else {
318
319
val value0 = this .getValue(index)
319
- val key0UnimprovedHash = key0.##
320
320
val key0Hash = improve(key0UnimprovedHash)
321
321
322
322
val subNodeNew = mergeTwoKeyValPairs(key0, value0, key0UnimprovedHash, key0Hash, key, value, originalHash, keyHash, shift + BitPartitionSize )
@@ -943,17 +943,16 @@ private[immutable] final class HashMapBuilder[K, V] extends Builder[(K, V), Hash
943
943
if ((bm.dataMap & bitpos) != 0 ) {
944
944
val index = indexFrom(bm.dataMap, mask, bitpos)
945
945
val key0 = bm.getKey(index)
946
+ val key0UnimprovedHash = bm.getHash(index)
946
947
947
- if (key0 == key) {
948
+ if (key0UnimprovedHash == originalHash && key0 == key) {
948
949
val value0 = mapNode.getValue(index)
949
950
if (! ((key0.asInstanceOf [AnyRef ] eq key.asInstanceOf [AnyRef ]) &&
950
951
(value0.asInstanceOf [AnyRef ] eq value.asInstanceOf [AnyRef ]))) {
951
952
setValue(bm, bitpos, key, value)
952
953
}
953
954
} else {
954
-
955
955
val value0 = bm.getValue(index)
956
- val key0UnimprovedHash = key0.##
957
956
val key0Hash = improve(key0UnimprovedHash)
958
957
959
958
val subNodeNew : MapNode [K , V ] =
0 commit comments