@@ -113,8 +113,8 @@ object ArraySeq {
113
113
override def hashCode = MurmurHash3 .arrayHash(unsafeArray, MurmurHash3 .seqSeed)
114
114
override def equals (that : Any ) = that match {
115
115
case that : ofRef[_] =>
116
- Arrays .equals (unsafeArray.asInstanceOf [Array [AnyRef ]],
117
- that.unsafeArray.asInstanceOf [Array [AnyRef ]])
116
+ arrayEquals (unsafeArray.asInstanceOf [Array [AnyRef ]],
117
+ that.unsafeArray.asInstanceOf [Array [AnyRef ]])
118
118
case _ => super .equals(that)
119
119
}
120
120
}
@@ -125,7 +125,7 @@ object ArraySeq {
125
125
def length : Int = unsafeArray.length
126
126
def apply (index : Int ): Byte = unsafeArray(index)
127
127
def update (index : Int , elem : Byte ) { unsafeArray(index) = elem }
128
- override def hashCode = MurmurHash3 .bytesHash (unsafeArray, MurmurHash3 .seqSeed)
128
+ override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed)
129
129
override def equals (that : Any ) = that match {
130
130
case that : ofByte => Arrays .equals(unsafeArray, that.unsafeArray)
131
131
case _ => super .equals(that)
@@ -237,4 +237,20 @@ object ArraySeq {
237
237
case _ => super .equals(that)
238
238
}
239
239
}
240
+
241
+ private [this ] def arrayEquals (xs : Array [AnyRef ], ys : Array [AnyRef ]): Boolean = {
242
+ if (xs eq ys)
243
+ return true
244
+ if (xs.length != ys.length)
245
+ return false
246
+
247
+ val len = xs.length
248
+ var i = 0
249
+ while (i < len) {
250
+ if (xs(i) != ys(i))
251
+ return false
252
+ i += 1
253
+ }
254
+ true
255
+ }
240
256
}
0 commit comments