diff --git a/platform/core-impl/src/com/intellij/concurrency/ConcurrentHashMap.java b/platform/core-impl/src/com/intellij/concurrency/ConcurrentHashMap.java index 0b3b2c06b743..8120c790a9d1 100644 --- a/platform/core-impl/src/com/intellij/concurrency/ConcurrentHashMap.java +++ b/platform/core-impl/src/com/intellij/concurrency/ConcurrentHashMap.java @@ -3155,7 +3155,6 @@ class ConcurrentHashMap extends AbstractMap return true; } - private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private static final long LOCKSTATE; static { try { diff --git a/platform/platform-tests/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java b/platform/platform-tests/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java index 35e8add8a275..31f9a34bda1c 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java @@ -15,6 +15,7 @@ */ package com.intellij.util.containers; +import com.intellij.concurrency.ConcurrentCollectionFactory; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.ref.GCUtil; import gnu.trove.TObjectHashingStrategy; @@ -469,4 +470,31 @@ public class ConcurrentMapsTest { assertSame(newVal, map.get(key)); } } + + @Test + public void testConcurrentHashMapTreeBinifiesItself() { + class Meh { + @Override + public int hashCode() { + return 0; + } + } + + ConcurrentMap map = ConcurrentCollectionFactory.createMap(new TObjectHashingStrategy() { + @Override + public int computeHashCode(Object object) { + return 0; + } + + @Override + public boolean equals(Object o1, Object o2) { + return o1==o2; + } + }); + int N = 1000; + for (int i = 0; i < N; i++) { + map.put(new Meh(), 0); + } + assertEquals(N, map.size()); + } }