@@ -99,8 +99,8 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
9999 // Else, either move the prefix right or the suffix left - whichever is shorter
100100 if (2 * removals >= size) {
101101 val array2 = ArrayDeque .alloc(size - removals)
102- arrayCopy(dest = array2, srcStart = 0 , destStart = 0 , maxItems = idx)
103- arrayCopy(dest = array2, srcStart = idx + removals - 1 , destStart = idx, maxItems = size)
102+ copySliceToArray(srcStart = 0 , dest = array2 , destStart = 0 , maxItems = idx)
103+ copySliceToArray( srcStart = idx + removals - 1 , dest = array2 , destStart = idx, maxItems = size)
104104 set(array = array2, start = 0 , end = size - removals)
105105 } else if (size - idx <= idx + removals) {
106106 // TODO: Instead of if in the loop, break into 2 loops
@@ -164,8 +164,7 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
164164 } else if (len >= size) {
165165 clone()
166166 } else {
167- val array2 = ArrayDeque .alloc(len)
168- arrayCopy(dest = array2, srcStart = left, destStart = 0 , maxItems = len)
167+ val array2 = copySliceToArray(srcStart = left, dest = ArrayDeque .alloc(len), destStart = 0 , maxItems = len)
169168 new ArrayDeque (array2, 0 , len)
170169 }
171170 }
@@ -178,19 +177,16 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
178177 override def grouped (n : Int ) = sliding(n, n)
179178
180179 override def copyToArray [B >: A ](dest : Array [B ], destStart : Int , len : Int ) =
181- arrayCopy(dest = dest, srcStart = 0 , destStart = destStart, maxItems = len)
180+ copySliceToArray(srcStart = 0 , dest = dest , destStart = destStart, maxItems = len)
182181
183182 override def companion = ArrayDeque
184183
185184 override def result () = this
186185
187186 override def stringPrefix = " ArrayDeque"
188187
189- override def toArray [B >: A : ClassTag ] = {
190- val array2 = new Array [B ](size)
191- arrayCopy(dest = array2, srcStart = 0 , destStart = 0 , maxItems = size)
192- array2
193- }
188+ override def toArray [B >: A : ClassTag ] =
189+ copySliceToArray(srcStart = 0 , dest = new Array [B ](size), destStart = 0 , maxItems = size)
194190
195191 /**
196192 * This is a more general version of copyToArray - this also accepts a srcStart unlike copyToArray
@@ -202,7 +198,7 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
202198 * @param destStart
203199 * @param maxItems
204200 */
205- def arrayCopy ( dest : Array [_], srcStart : Int , destStart : Int , maxItems : Int ): Unit = {
201+ def copySliceToArray ( srcStart : Int , dest : Array [_], destStart : Int , maxItems : Int ): dest. type = {
206202 ArrayDeque .checkIndex(srcStart, this )
207203 ArrayDeque .checkIndex(destStart, dest)
208204 val toCopy = maxItems min (size - srcStart) min (dest.length - destStart)
@@ -214,6 +210,7 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
214210 Array .copy(src = array, srcPos = 0 , dest = dest, destPos = block1, length = toCopy - block1)
215211 }
216212 }
213+ dest
217214 }
218215
219216 /**
@@ -242,8 +239,7 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
242239 }
243240
244241 private def resize (len : Int ) = {
245- val array2 = ArrayDeque .alloc(len)
246- arrayCopy(dest = array2, srcStart = 0 , destStart = 0 , maxItems = size)
242+ val array2 = copySliceToArray(srcStart = 0 , dest = ArrayDeque .alloc(len), destStart = 0 , maxItems = size)
247243 set(array = array2, start = 0 , end = size)
248244 }
249245}
0 commit comments