Skip to content

Commit 6bf76d1

Browse files
committed
refactor vc array creation
1 parent a57809f commit 6bf76d1

File tree

1 file changed

+11
-29
lines changed

1 file changed

+11
-29
lines changed

src/scala/Array.scala

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -118,71 +118,53 @@ object Array extends FallbackArrayBuilding {
118118
*/
119119
def apply[T](xs: T*)(implicit ct: ClassTag[T]): Array[T] = {
120120
var i = 0
121+
val array = new Array[T](xs.length)
121122
xs match {
122123
case vcwra: VCWrappedArray[T] =>
123124
(vcwra.array: Object) match {
124125
case vcia: VCIntArray[_] =>
125126
val oldUndArr = vcia.arr
126-
val newArr = new Array[T](vcia.length)
127-
val newUndArr = newArr.asInstanceOf[VCIntArray[_]].arr
127+
val newUndArr = array.asInstanceOf[VCIntArray[_]].arr
128128
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
129-
newArr
130129
case vcoa: VCObjectArray[_] =>
131130
val oldUndArr = vcoa.arr
132-
val newArr = new Array[T](vcoa.length)
133-
val newUndArr = newArr.asInstanceOf[VCObjectArray[_]].arr
131+
val newUndArr = array.asInstanceOf[VCObjectArray[_]].arr
134132
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
135-
newArr
136133
case vcba: VCByteArray[_] =>
137134
val oldUndArr = vcba.arr
138-
val newArr = new Array[T](vcba.length)
139-
val newUndArr = newArr.asInstanceOf[VCByteArray[_]].arr
135+
val newUndArr = array.asInstanceOf[VCByteArray[_]].arr
140136
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
141-
newArr
142137
case vcboola: VCBooleanArray[_] =>
143138
val oldUndArr = vcboola.arr
144-
val newArr = new Array[T](vcboola.length)
145-
val newUndArr = newArr.asInstanceOf[VCBooleanArray[_]].arr
139+
val newUndArr = array.asInstanceOf[VCBooleanArray[_]].arr
146140
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
147-
newArr
148141
case vcla: VCLongArray[_] =>
149142
val oldUndArr = vcla.arr
150-
val newArr = new Array[T](vcla.length)
151-
val newUndArr = newArr.asInstanceOf[VCLongArray[_]].arr
143+
val newUndArr = array.asInstanceOf[VCLongArray[_]].arr
152144
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
153-
newArr
154145
case vcfa: VCFloatArray[_] =>
155146
val oldUndArr = vcfa.arr
156-
val newArr = new Array[T](vcfa.length)
157-
val newUndArr = newArr.asInstanceOf[VCFloatArray[_]].arr
147+
val newUndArr = array.asInstanceOf[VCFloatArray[_]].arr
158148
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
159-
newArr
160149
case vcda: VCDoubleArray[_] =>
161150
val oldUndArr = vcda.arr
162-
val newArr = new Array[T](vcda.length)
163-
val newUndArr = newArr.asInstanceOf[VCDoubleArray[_]].arr
151+
val newUndArr = array.asInstanceOf[VCDoubleArray[_]].arr
164152
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
165-
newArr
166153
case vcca: VCCharArray[_] =>
167154
val oldUndArr = vcca.arr
168-
val newArr = new Array[T](vcca.length)
169-
val newUndArr = newArr.asInstanceOf[VCCharArray[_]].arr
155+
val newUndArr = array.asInstanceOf[VCCharArray[_]].arr
170156
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
171-
newArr
172157
case vcsa: VCShortArray[_] =>
173158
val oldUndArr = vcsa.arr
174-
val newArr = new Array[T](vcsa.length)
175-
val newUndArr = newArr.asInstanceOf[VCShortArray[_]].arr
159+
val newUndArr = array.asInstanceOf[VCShortArray[_]].arr
176160
for (x <- oldUndArr.iterator) { newUndArr(i) = x; i += 1 }
177-
newArr
178161
}
179162
case _ =>
180163
// Subject to a compiler optimization in Cleanup.
181164
// Array(e0, ..., en) is translated to { val a = new Array(3); a(i) = ei; a }
182-
val array = new Array[T](xs.length)
183165
for (x <- xs.iterator) { array(i) = x; i += 1 }
184-
array
185166
}
167+
array
186168
}
187169

188170
/** Creates an array of `Boolean` objects */

0 commit comments

Comments
 (0)