@@ -9,7 +9,7 @@ import scala.collection.IterableOnce
9
9
import scala .annotation .unchecked .uncheckedVariance
10
10
import scala .util .hashing .MurmurHash3
11
11
import scala .reflect .ClassTag
12
- import scala .runtime .ScalaRunTime
12
+ import scala .runtime .{ BoxesRunTime , ScalaRunTime }
13
13
import java .util .Arrays
14
14
15
15
/**
@@ -228,9 +228,12 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
228
228
def length : Int = unsafeArray.length
229
229
@ throws[ArrayIndexOutOfBoundsException ]
230
230
def apply (i : Int ): T = unsafeArray(i)
231
- override def hashCode = MurmurHash3 .arrayHash(unsafeArray, MurmurHash3 .seqSeed)
232
- override def equals (that : Any ) = that match {
233
- case that : ofRef[_] => Arrays .equals(unsafeArray.asInstanceOf [Array [AnyRef ]], that.unsafeArray.asInstanceOf [Array [AnyRef ]])
231
+ override def hashCode = MurmurHash3 .arraySeqHash(unsafeArray)
232
+ override def equals (that : Any ): Boolean = that match {
233
+ case that : ofRef[_] =>
234
+ BoxesRunTime .arraysEquals(
235
+ this .unsafeArray.asInstanceOf [Array [AnyRef ]],
236
+ that.unsafeArray.asInstanceOf [Array [AnyRef ]])
234
237
case _ => super .equals(that)
235
238
}
236
239
}
@@ -241,7 +244,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
241
244
def length : Int = unsafeArray.length
242
245
@ throws[ArrayIndexOutOfBoundsException ]
243
246
def apply (i : Int ): Byte = unsafeArray(i)
244
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
247
+ override def hashCode = MurmurHash3 .byteArraySeqHash (unsafeArray)
245
248
override def equals (that : Any ) = that match {
246
249
case that : ofByte => Arrays .equals(unsafeArray, that.unsafeArray)
247
250
case _ => super .equals(that)
@@ -254,7 +257,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
254
257
def length : Int = unsafeArray.length
255
258
@ throws[ArrayIndexOutOfBoundsException ]
256
259
def apply (i : Int ): Short = unsafeArray(i)
257
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
260
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
258
261
override def equals (that : Any ) = that match {
259
262
case that : ofShort => Arrays .equals(unsafeArray, that.unsafeArray)
260
263
case _ => super .equals(that)
@@ -267,7 +270,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
267
270
def length : Int = unsafeArray.length
268
271
@ throws[ArrayIndexOutOfBoundsException ]
269
272
def apply (i : Int ): Char = unsafeArray(i)
270
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
273
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
271
274
override def equals (that : Any ) = that match {
272
275
case that : ofChar => Arrays .equals(unsafeArray, that.unsafeArray)
273
276
case _ => super .equals(that)
@@ -283,7 +286,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
283
286
def length : Int = unsafeArray.length
284
287
@ throws[ArrayIndexOutOfBoundsException ]
285
288
def apply (i : Int ): Int = unsafeArray(i)
286
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
289
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
287
290
override def equals (that : Any ) = that match {
288
291
case that : ofInt => Arrays .equals(unsafeArray, that.unsafeArray)
289
292
case _ => super .equals(that)
@@ -296,7 +299,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
296
299
def length : Int = unsafeArray.length
297
300
@ throws[ArrayIndexOutOfBoundsException ]
298
301
def apply (i : Int ): Long = unsafeArray(i)
299
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
302
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
300
303
override def equals (that : Any ) = that match {
301
304
case that : ofLong => Arrays .equals(unsafeArray, that.unsafeArray)
302
305
case _ => super .equals(that)
@@ -309,7 +312,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
309
312
def length : Int = unsafeArray.length
310
313
@ throws[ArrayIndexOutOfBoundsException ]
311
314
def apply (i : Int ): Float = unsafeArray(i)
312
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
315
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
313
316
override def equals (that : Any ) = that match {
314
317
case that : ofFloat => Arrays .equals(unsafeArray, that.unsafeArray)
315
318
case _ => super .equals(that)
@@ -322,7 +325,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
322
325
def length : Int = unsafeArray.length
323
326
@ throws[ArrayIndexOutOfBoundsException ]
324
327
def apply (i : Int ): Double = unsafeArray(i)
325
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
328
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
326
329
override def equals (that : Any ) = that match {
327
330
case that : ofDouble => Arrays .equals(unsafeArray, that.unsafeArray)
328
331
case _ => super .equals(that)
@@ -335,7 +338,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
335
338
def length : Int = unsafeArray.length
336
339
@ throws[ArrayIndexOutOfBoundsException ]
337
340
def apply (i : Int ): Boolean = unsafeArray(i)
338
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
341
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
339
342
override def equals (that : Any ) = that match {
340
343
case that : ofBoolean => Arrays .equals(unsafeArray, that.unsafeArray)
341
344
case _ => super .equals(that)
@@ -348,7 +351,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
348
351
def length : Int = unsafeArray.length
349
352
@ throws[ArrayIndexOutOfBoundsException ]
350
353
def apply (i : Int ): Unit = unsafeArray(i)
351
- override def hashCode = MurmurHash3 .arrayHash (unsafeArray, MurmurHash3 .seqSeed )
354
+ override def hashCode = MurmurHash3 .arraySeqHash (unsafeArray)
352
355
override def equals (that : Any ) = that match {
353
356
case that : ofUnit => unsafeArray.length == that.unsafeArray.length
354
357
case _ => super .equals(that)
0 commit comments