diff -r 853b91521c30 -r ece4ae6beba3 jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java --- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Thu Jun 15 17:24:12 2017 +0000 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Fri Jun 16 04:54:54 2017 +0000 @@ -1032,9 +1032,10 @@ } else if ((fh = f.hash) == MOVED) tab = helpTransfer(tab, f); - else if (onlyIfAbsent && fh == hash && // check first node - ((fk = f.key) == key || fk != null && key.equals(fk)) && - (fv = f.val) != null) + else if (onlyIfAbsent // check first node without acquiring lock + && fh == hash + && ((fk = f.key) == key || (fk != null && key.equals(fk))) + && (fv = f.val) != null) return fv; else { V oldVal = null; @@ -1728,9 +1729,9 @@ } else if ((fh = f.hash) == MOVED) tab = helpTransfer(tab, f); - else if (fh == h && // check first node - ((fk = f.key) == key || fk != null && key.equals(fk)) && - (fv = f.val) != null) + else if (fh == h // check first node without acquiring lock + && ((fk = f.key) == key || (fk != null && key.equals(fk))) + && (fv = f.val) != null) return fv; else { boolean added = false; @@ -3468,9 +3469,9 @@ static final class KeyIterator extends BaseIterator implements Iterator, Enumeration { - KeyIterator(Node[] tab, int index, int size, int limit, + KeyIterator(Node[] tab, int size, int index, int limit, ConcurrentHashMap map) { - super(tab, index, size, limit, map); + super(tab, size, index, limit, map); } public final K next() { @@ -3488,9 +3489,9 @@ static final class ValueIterator extends BaseIterator implements Iterator, Enumeration { - ValueIterator(Node[] tab, int index, int size, int limit, + ValueIterator(Node[] tab, int size, int index, int limit, ConcurrentHashMap map) { - super(tab, index, size, limit, map); + super(tab, size, index, limit, map); } public final V next() { @@ -3508,9 +3509,9 @@ static final class EntryIterator extends BaseIterator implements Iterator> { - EntryIterator(Node[] tab, int index, int size, int limit, + EntryIterator(Node[] tab, int size, int index, int limit, ConcurrentHashMap map) { - super(tab, index, size, limit, map); + super(tab, size, index, limit, map); } public final Map.Entry next() {