summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-11-13 15:57:17 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-11-13 15:57:17 -0800
commit69e62de87d80cf5b9d8c7f4eefcea0638fb2759d (patch)
tree5a07335c83c94a0319c91741452ebd0f3445fff3 /src
parent96df73d994097e3318d003ddef00194b711289a3 (diff)
parent6b13a1ddd27bafbca78cd402e83ea72718e0d92f (diff)
downloadscala-69e62de87d80cf5b9d8c7f4eefcea0638fb2759d.tar.gz
scala-69e62de87d80cf5b9d8c7f4eefcea0638fb2759d.tar.bz2
scala-69e62de87d80cf5b9d8c7f4eefcea0638fb2759d.zip
Merge pull request #3127 from RajivKurian/OpenHashMap-nextPowerOfTwo-implementation
Use an intrinsic for the next power of two calculation.
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/mutable/OpenHashMap.scala5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/library/scala/collection/mutable/OpenHashMap.scala b/src/library/scala/collection/mutable/OpenHashMap.scala
index 7d522d1e6e..aade2ed6fb 100644
--- a/src/library/scala/collection/mutable/OpenHashMap.scala
+++ b/src/library/scala/collection/mutable/OpenHashMap.scala
@@ -17,7 +17,6 @@ package mutable
* @since 2.7
*/
object OpenHashMap {
- import generic.BitOperations.Int.highestOneBit
def apply[K, V](elems : (K, V)*) = new OpenHashMap[K, V] ++= elems
def empty[K, V] = new OpenHashMap[K, V]
@@ -27,7 +26,7 @@ object OpenHashMap {
var value: Option[Value])
extends HashEntry[Key, OpenEntry[Key, Value]]
- private[mutable] def nextPowerOfTwo(i : Int) = highestOneBit(i) << 1
+ private[mutable] def nextPositivePowerOfTwo(i : Int) = 1 << (32 - Integer.numberOfLeadingZeros(i - 1))
}
/** A mutable hash map based on an open hashing scheme. The precise scheme is
@@ -62,7 +61,7 @@ extends AbstractMap[Key, Value]
override def empty: OpenHashMap[Key, Value] = OpenHashMap.empty[Key, Value]
- private[this] val actualInitialSize = OpenHashMap.nextPowerOfTwo(initialSize)
+ private[this] val actualInitialSize = OpenHashMap.nextPositivePowerOfTwo(initialSize)
private var mask = actualInitialSize - 1
private var table : Array[Entry] = new Array[Entry](actualInitialSize)