EVALUATION
Here's the obvious patch:
diff --git a/src/share/classes/java/util/HashMap.java b/src/share/classes/java/util/HashMap.java
--- a/src/share/classes/java/util/HashMap.java
+++ b/src/share/classes/java/util/HashMap.java
@@ -173,7 +173,7 @@ public class HashMap<K,V>
* rehash). This field is used to make iterators on Collection-views of
* the HashMap fail-fast. (See ConcurrentModificationException).
*/
- transient volatile int modCount;
+ transient int modCount;
/**
* Constructs an empty <tt>HashMap</tt> with the specified initial
diff --git a/src/share/classes/java/util/IdentityHashMap.java b/src/share/classes/java/util/IdentityHashMap.java
--- a/src/share/classes/java/util/IdentityHashMap.java
+++ b/src/share/classes/java/util/IdentityHashMap.java
@@ -173,7 +173,7 @@ public class IdentityHashMap<K,V>
/**
* The number of modifications, to support fast-fail iterators
*/
- private transient volatile int modCount;
+ private transient int modCount;
/**
* The next size value at which to resize (capacity * load factor).
diff --git a/src/share/classes/java/util/WeakHashMap.java b/src/share/classes/java/util/WeakHashMap.java
--- a/src/share/classes/java/util/WeakHashMap.java
+++ b/src/share/classes/java/util/WeakHashMap.java
@@ -181,7 +181,7 @@ public class WeakHashMap<K,V>
*
* @see ConcurrentModificationException
*/
- volatile int modCount;
+ int modCount;
@SuppressWarnings("unchecked")
private Entry<K,V>[] newTable(int n) {
|