diff --git a/platform/util/base/src/com/intellij/util/containers/ConcurrentRefHashMap.java b/platform/util/base/src/com/intellij/util/containers/ConcurrentRefHashMap.java index 86f005325717..e7645b01b494 100644 --- a/platform/util/base/src/com/intellij/util/containers/ConcurrentRefHashMap.java +++ b/platform/util/base/src/com/intellij/util/containers/ConcurrentRefHashMap.java @@ -351,22 +351,21 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C @Override public boolean remove(@NotNull Object key, @NotNull Object value) { - //noinspection unchecked - boolean removed = myMap.remove(createKeyReference((K)key), value); + boolean removed = myMap.remove(createHardKey(key), value); processQueue(); return removed; } @Override public boolean replace(@NotNull K key, @NotNull V oldValue, @NotNull V newValue) { - boolean replaced = myMap.replace(createKeyReference(key), oldValue, newValue); + boolean replaced = myMap.replace(createHardKey(key), oldValue, newValue); processQueue(); return replaced; } @Override public V replace(@NotNull K key, @NotNull V value) { - V replaced = myMap.replace(createKeyReference(key), value); + V replaced = myMap.replace(createHardKey(key), value); processQueue(); return replaced; } diff --git a/platform/util/base/src/com/intellij/util/containers/ConcurrentSoftKeySoftValueHashMap.java b/platform/util/base/src/com/intellij/util/containers/ConcurrentSoftKeySoftValueHashMap.java index 710314efc29f..688c57da9dd2 100644 --- a/platform/util/base/src/com/intellij/util/containers/ConcurrentSoftKeySoftValueHashMap.java +++ b/platform/util/base/src/com/intellij/util/containers/ConcurrentSoftKeySoftValueHashMap.java @@ -11,7 +11,7 @@ import java.lang.ref.SoftReference; * Concurrent map with soft keys and soft values. * Null keys are NOT allowed * Null values are NOT allowed - * To instantiate use {@link ContainerUtil#createConcurrentWeakKeySoftValueMap(int, float, int, HashingStrategy)} + * To instantiate use {@link ContainerUtil#createConcurrentSoftKeySoftValueMap()} */ final class ConcurrentSoftKeySoftValueHashMap extends ConcurrentWeakKeySoftValueHashMap { ConcurrentSoftKeySoftValueHashMap(int initialCapacity, diff --git a/platform/util/base/src/com/intellij/util/containers/ConcurrentWeakKeySoftValueHashMap.java b/platform/util/base/src/com/intellij/util/containers/ConcurrentWeakKeySoftValueHashMap.java index 789901a5bcd8..07f9d01c5af8 100644 --- a/platform/util/base/src/com/intellij/util/containers/ConcurrentWeakKeySoftValueHashMap.java +++ b/platform/util/base/src/com/intellij/util/containers/ConcurrentWeakKeySoftValueHashMap.java @@ -341,10 +341,9 @@ public class ConcurrentWeakKeySoftValueHashMap implements ConcurrentMap oldKeyReference = createKeyReference(key, oldValue); - ValueReference oldValueReference = oldKeyReference.getValueReference(); - KeyReference newKeyReference = createKeyReference(key, newValue); - ValueReference newValueReference = newKeyReference.getValueReference(); + KeyReference oldKeyReference = createHardKey(key); + ValueReference oldValueReference = createValueReference(oldValue, myValueQueue); + ValueReference newValueReference = createValueReference(newValue, myValueQueue); boolean replaced = myMap.replace(oldKeyReference, oldValueReference, newValueReference); processQueues(); @@ -353,8 +352,8 @@ public class ConcurrentWeakKeySoftValueHashMap implements ConcurrentMap keyReference = createKeyReference(key, value); - ValueReference valueReference = keyReference.getValueReference(); + KeyReference keyReference = createHardKey(key); + ValueReference valueReference = createValueReference(value, myValueQueue); ValueReference result = myMap.replace(keyReference, valueReference); V prev = result == null ? null : result.get(); processQueues();