diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java b/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java index 0773a2e1d296..33690d579ece 100644 --- a/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java +++ b/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java @@ -126,7 +126,7 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C @Override public boolean isEmpty() { - return entrySet().isEmpty(); + return myMap.isEmpty(); } @Override @@ -355,8 +355,9 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C @NotNull @Override public Set> entrySet() { - if (entrySet == null) entrySet = new EntrySet(); - return entrySet; + Set> es = entrySet; + if (es == null) entrySet = es = new EntrySet(); + return es; } @Override diff --git a/platform/util/src/com/intellij/util/containers/RefHashMap.java b/platform/util/src/com/intellij/util/containers/RefHashMap.java index eeeac98406de..5d43b267e9a0 100644 --- a/platform/util/src/com/intellij/util/containers/RefHashMap.java +++ b/platform/util/src/com/intellij/util/containers/RefHashMap.java @@ -202,7 +202,7 @@ abstract class RefHashMap extends AbstractMap implements Map { @Override public boolean isEmpty() { - return entrySet().isEmpty(); + return myMap.isEmpty(); } @Override diff --git a/platform/util/src/com/intellij/util/containers/RefKeyRefValueHashMap.java b/platform/util/src/com/intellij/util/containers/RefKeyRefValueHashMap.java index 6c35ab77279e..cd8ad304b4ce 100644 --- a/platform/util/src/com/intellij/util/containers/RefKeyRefValueHashMap.java +++ b/platform/util/src/com/intellij/util/containers/RefKeyRefValueHashMap.java @@ -21,11 +21,11 @@ import java.lang.ref.ReferenceQueue; import java.util.*; abstract class RefKeyRefValueHashMap implements Map{ - private final RefHashMap> myWeakKeyMap; + private final RefHashMap> myMap; private final ReferenceQueue myQueue = new ReferenceQueue(); RefKeyRefValueHashMap(@NotNull RefHashMap> weakKeyMap) { - myWeakKeyMap = weakKeyMap; + myMap = weakKeyMap; } protected interface ValueReference { @@ -43,12 +43,12 @@ abstract class RefKeyRefValueHashMap implements Map{ // returns true if some refs were tossed boolean processQueue() { - boolean processed = myWeakKeyMap.processQueue(); + boolean processed = myMap.processQueue(); while(true) { ValueReference ref = (ValueReference)myQueue.poll(); if (ref == null) break; RefHashMap.Key weakKey = ref.getKey(); - myWeakKeyMap.removeKey(weakKey); + myMap.removeKey(weakKey); processed = true; } return processed; @@ -56,23 +56,23 @@ abstract class RefKeyRefValueHashMap implements Map{ @Override public V get(Object key) { - ValueReference ref = myWeakKeyMap.get(key); + ValueReference ref = myMap.get(key); return dereference(ref); } @Override public V put(K key, V value) { processQueue(); - RefHashMap.Key weakKey = myWeakKeyMap.createKey(key); + RefHashMap.Key weakKey = myMap.createKey(key); ValueReference reference = createValueReference(weakKey, value, myQueue); - ValueReference oldRef = myWeakKeyMap.putKey(weakKey, reference); + ValueReference oldRef = myMap.putKey(weakKey, reference); return dereference(oldRef); } @Override public V remove(Object key) { processQueue(); - ValueReference ref = myWeakKeyMap.remove(key); + ValueReference ref = myMap.remove(key); return dereference(ref); } @@ -83,18 +83,18 @@ abstract class RefKeyRefValueHashMap implements Map{ @Override public void clear() { - myWeakKeyMap.clear(); + myMap.clear(); processQueue(); } @Override public int size() { - return myWeakKeyMap.size(); //? + return myMap.size(); //? } @Override public boolean isEmpty() { - return myWeakKeyMap.isEmpty(); //? + return myMap.isEmpty(); } @Override @@ -110,14 +110,14 @@ abstract class RefKeyRefValueHashMap implements Map{ @NotNull @Override public Set keySet() { - return myWeakKeyMap.keySet(); + return myMap.keySet(); } @NotNull @Override public Collection values() { List result = new ArrayList(); - final Collection> refs = myWeakKeyMap.values(); + final Collection> refs = myMap.values(); for (ValueReference ref : refs) { final V value = ref.get(); if (value != null) {