From e1b3c5b5ba5cfb8243d760e99887bbe1015a9d69 Mon Sep 17 00:00:00 2001 From: Ivan Gerasimov Date: Tue, 30 Jul 2013 21:11:08 +0400 Subject: [PATCH] 7192942: (coll) Inefficient calculation of power of two in HashMap Reviewed-by: mduigou --- jdk/src/share/classes/java/util/HashMap.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/jdk/src/share/classes/java/util/HashMap.java b/jdk/src/share/classes/java/util/HashMap.java index c2aace9db8f..8dfafac8642 100644 --- a/jdk/src/share/classes/java/util/HashMap.java +++ b/jdk/src/share/classes/java/util/HashMap.java @@ -876,13 +876,9 @@ public class HashMap private static int roundUpToPowerOf2(int number) { // assert number >= 0 : "number must be non-negative"; - int rounded = number >= MAXIMUM_CAPACITY + return number >= MAXIMUM_CAPACITY ? MAXIMUM_CAPACITY - : (rounded = Integer.highestOneBit(number)) != 0 - ? (Integer.bitCount(number) > 1) ? rounded << 1 : rounded - : 1; - - return rounded; + : (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1; } /**