summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-06-06 20:16:39 +0200
committerAleksandar Prokopec <axel22@gmail.com>2012-06-06 20:16:39 +0200
commitdaca24d8e7050eab9551b123cef010d7bf33f803 (patch)
treeba69ecd42e915de29a31ba9df50c2fb52bab69b5 /src
parentdb1b777372a6883f9c474159804b8f7798c0ec49 (diff)
downloadscala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.gz
scala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.bz2
scala-daca24d8e7050eab9551b123cef010d7bf33f803.zip
Fix SI-5880.
Add a ChiSquare test for the new hash code.
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/convert/Wrappers.scala10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/library/scala/collection/convert/Wrappers.scala b/src/library/scala/collection/convert/Wrappers.scala
index b1b48b760f..6c66ac6c4d 100644
--- a/src/library/scala/collection/convert/Wrappers.scala
+++ b/src/library/scala/collection/convert/Wrappers.scala
@@ -171,7 +171,13 @@ private[collection] trait Wrappers {
var prev : Option[A] = None
def hasNext = ui.hasNext
-
+
+ def improve(hc: Int) = {
+ var i = hc * 0x9e3775cd
+ i = java.lang.Integer.reverseBytes(i)
+ i * 0x9e3775c
+ }
+
def next() = {
val (k, v) = ui.next
prev = Some(k)
@@ -179,7 +185,7 @@ private[collection] trait Wrappers {
def getKey = k
def getValue = v
def setValue(v1 : B) = self.put(k, v1)
- override def hashCode = k.hashCode + v.hashCode
+ override def hashCode = improve(k.hashCode) + (improve(v.hashCode) << 16)
override def equals(other: Any) = other match {
case e: ju.Map.Entry[_, _] => k == e.getKey && v == e.getValue
case _ => false