diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2017-04-03 12:38:45 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2017-04-03 12:38:45 -0700 |
commit | 73c9693c8aced6945b75faa5e3765b7bc6ec21e9 (patch) | |
tree | b3c8c976c6ab64ca2958412082b912ef4e70048a /src/library/scala/collection/mutable/WrappedArray.scala | |
parent | fe20cce42b879cdc25bd31af2b55091794cc11be (diff) | |
download | scala-73c9693c8aced6945b75faa5e3765b7bc6ec21e9.tar.gz scala-73c9693c8aced6945b75faa5e3765b7bc6ec21e9.tar.bz2 scala-73c9693c8aced6945b75faa5e3765b7bc6ec21e9.zip |
Revert "Optimize slice and take in ArrayOps, WrappedArray"
This reverts commit d540bf01fe4d9e5c56a68b0d3bada9d97af77e3f.
Diffstat (limited to 'src/library/scala/collection/mutable/WrappedArray.scala')
-rw-r--r-- | src/library/scala/collection/mutable/WrappedArray.scala | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/src/library/scala/collection/mutable/WrappedArray.scala b/src/library/scala/collection/mutable/WrappedArray.scala index 81e0e64fb2..8740bda835 100644 --- a/src/library/scala/collection/mutable/WrappedArray.scala +++ b/src/library/scala/collection/mutable/WrappedArray.scala @@ -72,17 +72,6 @@ extends AbstractSeq[T] else super.toArray[U] } - override def slice(from: Int, until: Int): WrappedArray[T] = { - val start = if (from < 0) 0 else from - if (until <= start || start >= repr.length) - return emptyImpl - val end = if (until > length) length else until - sliceImpl(start, end) - } - //retain existing functionallity for existing implementations outside this file - protected def emptyImpl: WrappedArray[T] = newBuilder.result() - //retain existing functionallity for existing implementations outside this file - protected def sliceImpl(from: Int, until: Int): WrappedArray[T] = super.slice(from, until) override def stringPrefix = "WrappedArray" @@ -99,7 +88,6 @@ extends AbstractSeq[T] /** A companion object used to create instances of `WrappedArray`. */ object WrappedArray { - import java.util // This is reused for all calls to empty. private val EmptyWrappedArray = new ofRef[AnyRef](new Array[AnyRef](0)) def empty[T <: AnyRef]: WrappedArray[T] = EmptyWrappedArray.asInstanceOf[WrappedArray[T]] @@ -133,23 +121,11 @@ object WrappedArray { def newBuilder[A]: Builder[A, IndexedSeq[A]] = new ArrayBuffer - private val emptyWrappedByte = new ofByte(new Array[Byte](0)) - private val emptyWrappedShort = new ofShort(new Array[Short](0)) - private val emptyWrappedInt = new ofInt(new Array[Int](0)) - private val emptyWrappedLong = new ofLong(new Array[Long](0)) - private val emptyWrappedFloat = new ofFloat(new Array[Float](0)) - private val emptyWrappedDouble = new ofDouble(new Array[Double](0)) - private val emptyWrappedUnit = new ofUnit(new Array[Unit](0)) - private val emptyWrappedChar = new ofChar(new Array[Char](0)) - private val emptyWrappedBoolean = new ofBoolean(new Array[Boolean](0)) - final class ofRef[T <: AnyRef](val array: Array[T]) extends WrappedArray[T] with Serializable { lazy val elemTag = ClassTag[T](arrayElementClass(array.getClass)) def length: Int = array.length def apply(index: Int): T = array(index).asInstanceOf[T] def update(index: Int, elem: T) { array(index) = elem } - protected override def emptyImpl = new ofRef(util.Arrays.copyOf[T](array,0)) - protected override def sliceImpl(from: Int, until: Int) = new ofRef[T](util.Arrays.copyOfRange[T](array, from, until)) } final class ofByte(val array: Array[Byte]) extends WrappedArray[Byte] with Serializable { @@ -157,8 +133,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Byte = array(index) def update(index: Int, elem: Byte) { array(index) = elem } - protected override def emptyImpl = emptyWrappedByte - protected override def sliceImpl(from: Int, until: Int) = new ofByte(util.Arrays.copyOfRange(array, from, until)) } final class ofShort(val array: Array[Short]) extends WrappedArray[Short] with Serializable { @@ -166,8 +140,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Short = array(index) def update(index: Int, elem: Short) { array(index) = elem } - protected override def emptyImpl = emptyWrappedShort - protected override def sliceImpl(from: Int, until: Int) = new ofShort(util.Arrays.copyOfRange(array, from, until)) } final class ofChar(val array: Array[Char]) extends WrappedArray[Char] with Serializable { @@ -175,8 +147,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Char = array(index) def update(index: Int, elem: Char) { array(index) = elem } - protected override def emptyImpl = emptyWrappedChar - protected override def sliceImpl(from: Int, until: Int) = new ofChar(util.Arrays.copyOfRange(array, from, until)) } final class ofInt(val array: Array[Int]) extends WrappedArray[Int] with Serializable { @@ -184,8 +154,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Int = array(index) def update(index: Int, elem: Int) { array(index) = elem } - protected override def emptyImpl = emptyWrappedInt - protected override def sliceImpl(from: Int, until: Int) = new ofInt(util.Arrays.copyOfRange(array, from, until)) } final class ofLong(val array: Array[Long]) extends WrappedArray[Long] with Serializable { @@ -193,8 +161,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Long = array(index) def update(index: Int, elem: Long) { array(index) = elem } - protected override def emptyImpl = emptyWrappedLong - protected override def sliceImpl(from: Int, until: Int) = new ofLong(util.Arrays.copyOfRange(array, from, until)) } final class ofFloat(val array: Array[Float]) extends WrappedArray[Float] with Serializable { @@ -202,8 +168,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Float = array(index) def update(index: Int, elem: Float) { array(index) = elem } - protected override def emptyImpl = emptyWrappedFloat - protected override def sliceImpl(from: Int, until: Int) = new ofFloat(util.Arrays.copyOfRange(array, from, until)) } final class ofDouble(val array: Array[Double]) extends WrappedArray[Double] with Serializable { @@ -211,8 +175,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Double = array(index) def update(index: Int, elem: Double) { array(index) = elem } - protected override def emptyImpl = emptyWrappedDouble - protected override def sliceImpl(from: Int, until: Int) = new ofDouble(util.Arrays.copyOfRange(array, from, until)) } final class ofBoolean(val array: Array[Boolean]) extends WrappedArray[Boolean] with Serializable { @@ -220,8 +182,6 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Boolean = array(index) def update(index: Int, elem: Boolean) { array(index) = elem } - protected override def emptyImpl = emptyWrappedBoolean - protected override def sliceImpl(from: Int, until: Int) = new ofBoolean(util.Arrays.copyOfRange(array, from, until)) } final class ofUnit(val array: Array[Unit]) extends WrappedArray[Unit] with Serializable { @@ -229,14 +189,5 @@ object WrappedArray { def length: Int = array.length def apply(index: Int): Unit = array(index) def update(index: Int, elem: Unit) { array(index) = elem } - protected override def emptyImpl = emptyWrappedUnit - protected override def sliceImpl(from: Int, until: Int) = { - // cant use - // new ofUnit(util.Arrays.copyOfRange[Unit](array, from, until)) - Unit is special and doesnt compile - // cant use util.Arrays.copyOfRange[Unit](repr, from, until) - Unit is special and doesnt compile - val res = new Array[Unit](until-from) - System.arraycopy(repr, from, res, 0, until-from) - new ofUnit(res) - } } } |