RFR: JDK-8062849 -- Optimize EnumMap.equals
Please review the following simple fix for the issue reported in https://bugs.openjdk.java.net/browse/JDK-8062849 <https://bugs.openjdk.java.net/browse/JDK-8062849>. ----------------- # HG changeset patch # User sdrach # Date 1437777193 25200 # Fri Jul 24 15:33:13 2015 -0700 # Node ID e57b1569a65ec4dc8c749dedd3345abe5d493054 # Parent 4dd09cb5f7c2a2a23a9958ea7a602dd74d5709b2 8062849: Optimize EnumMap.equals Summary: In the equals method, if the two EnumMaps are a different size return false since they can't be equal. Reviewed-by: brent.christian@oracle.com, paul.sandoz@oracle.com Contributed-by: steve.drach@oracle.com diff --git a/src/java.base/share/classes/java/util/EnumMap.java b/src/java.base/share/classes/java/util/EnumMap.java --- a/src/java.base/share/classes/java/util/EnumMap.java +++ b/src/java.base/share/classes/java/util/EnumMap.java @@ -681,8 +681,11 @@ } private boolean equals(EnumMap<?,?> em) { + if (size != em.size) + return false; + if (em.keyType != keyType) - return size == 0 && em.size == 0; + return size == 0; // Key types match, compare each value for (int i = 0; i < keyUniverse.length; i++) {
Looks good. It would be slightly more consistent with original author's style to write if (em.size != size) On Tue, Jul 28, 2015 at 9:14 AM, Steve Drach <steve.drach@oracle.com> wrote:
Please review the following simple fix for the issue reported in https://bugs.openjdk.java.net/browse/JDK-8062849 < https://bugs.openjdk.java.net/browse/JDK-8062849>.
----------------- # HG changeset patch # User sdrach # Date 1437777193 25200 # Fri Jul 24 15:33:13 2015 -0700 # Node ID e57b1569a65ec4dc8c749dedd3345abe5d493054 # Parent 4dd09cb5f7c2a2a23a9958ea7a602dd74d5709b2 8062849: Optimize EnumMap.equals Summary: In the equals method, if the two EnumMaps are a different size return false since they can't be equal. Reviewed-by: brent.christian@oracle.com, paul.sandoz@oracle.com Contributed-by: steve.drach@oracle.com
diff --git a/src/java.base/share/classes/java/util/EnumMap.java b/src/java.base/share/classes/java/util/EnumMap.java --- a/src/java.base/share/classes/java/util/EnumMap.java +++ b/src/java.base/share/classes/java/util/EnumMap.java @@ -681,8 +681,11 @@ }
private boolean equals(EnumMap<?,?> em) { + if (size != em.size) + return false; + if (em.keyType != keyType) - return size == 0 && em.size == 0; + return size == 0;
// Key types match, compare each value for (int i = 0; i < keyUniverse.length; i++) {
On 28 Jul 2015, at 18:14, Steve Drach <steve.drach@oracle.com> wrote:
Please review the following simple fix for the issue reported in https://bugs.openjdk.java.net/browse/JDK-8062849 <https://bugs.openjdk.java.net/browse/JDK-8062849>.
+1 Paul.
----------------- # HG changeset patch # User sdrach # Date 1437777193 25200 # Fri Jul 24 15:33:13 2015 -0700 # Node ID e57b1569a65ec4dc8c749dedd3345abe5d493054 # Parent 4dd09cb5f7c2a2a23a9958ea7a602dd74d5709b2 8062849: Optimize EnumMap.equals Summary: In the equals method, if the two EnumMaps are a different size return false since they can't be equal. Reviewed-by: brent.christian@oracle.com, paul.sandoz@oracle.com Contributed-by: steve.drach@oracle.com
diff --git a/src/java.base/share/classes/java/util/EnumMap.java b/src/java.base/share/classes/java/util/EnumMap.java --- a/src/java.base/share/classes/java/util/EnumMap.java +++ b/src/java.base/share/classes/java/util/EnumMap.java @@ -681,8 +681,11 @@ }
private boolean equals(EnumMap<?,?> em) { + if (size != em.size) + return false; + if (em.keyType != keyType) - return size == 0 && em.size == 0; + return size == 0;
// Key types match, compare each value for (int i = 0; i < keyUniverse.length; i++) {
Looks reasonable to me. -Brent On 7/28/15 9:14 AM, Steve Drach wrote:
Please review the following simple fix for the issue reported in https://bugs.openjdk.java.net/browse/JDK-8062849 <https://bugs.openjdk.java.net/browse/JDK-8062849>.
----------------- # HG changeset patch # User sdrach # Date 1437777193 25200 # Fri Jul 24 15:33:13 2015 -0700 # Node ID e57b1569a65ec4dc8c749dedd3345abe5d493054 # Parent 4dd09cb5f7c2a2a23a9958ea7a602dd74d5709b2 8062849: Optimize EnumMap.equals Summary: In the equals method, if the two EnumMaps are a different size return false since they can't be equal. Reviewed-by: brent.christian@oracle.com, paul.sandoz@oracle.com Contributed-by: steve.drach@oracle.com
diff --git a/src/java.base/share/classes/java/util/EnumMap.java b/src/java.base/share/classes/java/util/EnumMap.java --- a/src/java.base/share/classes/java/util/EnumMap.java +++ b/src/java.base/share/classes/java/util/EnumMap.java @@ -681,8 +681,11 @@ }
private boolean equals(EnumMap<?,?> em) { + if (size != em.size) + return false; + if (em.keyType != keyType) - return size == 0 && em.size == 0; + return size == 0;
// Key types match, compare each value for (int i = 0; i < keyUniverse.length; i++) {
participants (4)
-
Brent Christian
-
Martin Buchholz
-
Paul Sandoz
-
Steve Drach