diff -r 816b9f30f5b1 -r 0a9d1d17b076 jdk/src/share/classes/java/util/HashMap.java --- a/jdk/src/share/classes/java/util/HashMap.java Wed Sep 25 07:36:29 2013 -0700 +++ b/jdk/src/share/classes/java/util/HashMap.java Thu Sep 26 11:13:34 2013 -0700 @@ -624,8 +624,7 @@ final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node[] tab; Node p; int n, i; - if (size > threshold || (tab = table) == null || - (n = tab.length) == 0) + if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).length; if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(hash, key, value, null); @@ -659,7 +658,8 @@ } } ++modCount; - ++size; + if (++size > threshold) + resize(); afterNodeInsertion(evict); return null; }