Skip to content

Commit fe4eaa4

Browse files
author
Antoine Brunner
committed
Trying to see if tupleCons is too big for optimizations
1 parent 3286379 commit fe4eaa4

File tree

1 file changed

+15
-101
lines changed

1 file changed

+15
-101
lines changed

library/src/scala/runtime/DynamicTuple.scala

Lines changed: 15 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -189,67 +189,17 @@ object DynamicTuple {
189189
def dynamicCons[H, This <: Tuple](x: H, self: This): H *: This = {
190190
type Result = H *: This
191191
val res = (self: Any) match {
192-
case () =>
193-
Tuple1(x)
194-
case self: Tuple1[_] =>
195-
Tuple2(x, self._1)
196-
case self: Tuple2[_, _] =>
197-
Tuple3(x, self._1, self._2)
198-
case self: Tuple3[_, _, _] =>
199-
Tuple4(x, self._1, self._2, self._3)
200-
case self: Tuple4[_, _, _, _] =>
201-
Tuple5(x, self._1, self._2, self._3, self._4)
202-
case self: Tuple5[_, _, _, _, _] =>
203-
Tuple6(x, self._1, self._2, self._3, self._4, self._5)
204-
case self: Tuple6[_, _, _, _, _, _] =>
205-
Tuple7(x, self._1, self._2, self._3, self._4, self._5, self._6)
206-
case self: Tuple7[_, _, _, _, _, _, _] =>
207-
Tuple8(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7)
208-
case self: Tuple8[_, _, _, _, _, _, _, _] =>
209-
Tuple9(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8)
210-
case self: Tuple9[_, _, _, _, _, _, _, _, _] =>
211-
Tuple10(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9)
212-
case self: Tuple10[_, _, _, _, _, _, _, _, _, _] =>
213-
Tuple11(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10)
214-
case self: Tuple11[_, _, _, _, _, _, _, _, _, _, _] =>
215-
Tuple12(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11)
216-
case self: Tuple12[_, _, _, _, _, _, _, _, _, _, _, _] =>
217-
Tuple13(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12)
218-
case self: Tuple13[_, _, _, _, _, _, _, _, _, _, _, _, _] =>
219-
Tuple14(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13)
220-
case self: Tuple14[_, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
221-
Tuple15(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14)
222-
case self: Tuple15[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
223-
Tuple16(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15)
224-
case self: Tuple16[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
225-
Tuple17(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16)
226-
case self: Tuple17[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
227-
Tuple18(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17)
228-
case self: Tuple18[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
229-
Tuple19(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18)
230-
case self: Tuple19[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
231-
Tuple20(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19)
232-
case self: Tuple20[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
233-
Tuple21(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20)
234-
case self: Tuple21[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
235-
Tuple22(x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21)
236-
case self: Tuple22[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
237-
val arr: Array[Object] = Array(
238-
x.asInstanceOf[Object], self._1.asInstanceOf[Object], self._2.asInstanceOf[Object],
239-
self._3.asInstanceOf[Object], self._4.asInstanceOf[Object], self._5.asInstanceOf[Object],
240-
self._6.asInstanceOf[Object], self._7.asInstanceOf[Object], self._8.asInstanceOf[Object],
241-
self._9.asInstanceOf[Object], self._10.asInstanceOf[Object], self._11.asInstanceOf[Object],
242-
self._12.asInstanceOf[Object], self._13.asInstanceOf[Object], self._14.asInstanceOf[Object],
243-
self._15.asInstanceOf[Object], self._16.asInstanceOf[Object], self._17.asInstanceOf[Object],
244-
self._18.asInstanceOf[Object], self._19.asInstanceOf[Object], self._20.asInstanceOf[Object],
245-
self._21.asInstanceOf[Object], self._22.asInstanceOf[Object],
246-
)
247-
TupleXXL.fromIArray(arr.asInstanceOf[IArray[Object]]).asInstanceOf[Result]
248192
case xxl: TupleXXL =>
249193
val arr = new Array[Object](xxl.productArity + 1)
250194
System.arraycopy(xxl.elems, 0, arr, 1, xxl.productArity)
251195
arr(0) = x.asInstanceOf[Object]
252-
TupleXXL.fromIArray(arr.asInstanceOf[IArray[Object]]).asInstanceOf[Result]
196+
TupleXXL.fromIArray(arr.asInstanceOf[IArray[Object]])
197+
case () =>
198+
Tuple1(x)
199+
case _ =>
200+
val arr = new Array[Object](self.size + 1)
201+
itToArray(self.asInstanceOf[Product].productIterator, self.size, arr, 1)
202+
dynamicFromIArray[Result](arr.asInstanceOf[IArray[Object]])
253203
}
254204
res.asInstanceOf[Result]
255205
}
@@ -295,48 +245,6 @@ object DynamicTuple {
295245
val res = (self: Any) match {
296246
case self: Tuple1[_] =>
297247
()
298-
case self: Tuple2[_, _] =>
299-
Tuple1(self._2)
300-
case self: Tuple3[_, _, _] =>
301-
Tuple2(self._2, self._3)
302-
case self: Tuple4[_, _, _, _] =>
303-
Tuple3(self._2, self._3, self._4)
304-
case self: Tuple5[_, _, _, _, _] =>
305-
Tuple4(self._2, self._3, self._4, self._5)
306-
case self: Tuple6[_, _, _, _, _, _] =>
307-
Tuple5(self._2, self._3, self._4, self._5, self._6)
308-
case self: Tuple7[_, _, _, _, _, _, _] =>
309-
Tuple6(self._2, self._3, self._4, self._5, self._6, self._7)
310-
case self: Tuple8[_, _, _, _, _, _, _, _] =>
311-
Tuple7(self._2, self._3, self._4, self._5, self._6, self._7, self._8)
312-
case self: Tuple9[_, _, _, _, _, _, _, _, _] =>
313-
Tuple8(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9)
314-
case self: Tuple10[_, _, _, _, _, _, _, _, _, _] =>
315-
Tuple9(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10)
316-
case self: Tuple11[_, _, _, _, _, _, _, _, _, _, _] =>
317-
Tuple10(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11)
318-
case self: Tuple12[_, _, _, _, _, _, _, _, _, _, _, _] =>
319-
Tuple11(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12)
320-
case self: Tuple13[_, _, _, _, _, _, _, _, _, _, _, _, _] =>
321-
Tuple12(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13)
322-
case self: Tuple14[_, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
323-
Tuple13(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14)
324-
case self: Tuple15[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
325-
Tuple14(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15)
326-
case self: Tuple16[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
327-
Tuple15(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16)
328-
case self: Tuple17[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
329-
Tuple16(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17)
330-
case self: Tuple18[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
331-
Tuple17(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18)
332-
case self: Tuple19[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
333-
Tuple18(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19)
334-
case self: Tuple20[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
335-
Tuple19(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20)
336-
case self: Tuple21[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
337-
Tuple20(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21)
338-
case self: Tuple22[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
339-
Tuple21(self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21, self._22)
340248
case xxl: TupleXXL =>
341249
if (xxl.productArity == 23) {
342250
val elems = xxl.elems
@@ -345,12 +253,18 @@ object DynamicTuple {
345253
elems(8), elems(9), elems(10), elems(11), elems(12), elems(13), elems(14),
346254
elems(15), elems(16), elems(17), elems(18), elems(19), elems(20),
347255
elems(21), elems(22)
348-
).asInstanceOf[Result]
256+
)
349257
} else {
350258
val arr = new Array[Object](self.size - 1)
351259
System.arraycopy(xxl.elems, 1, arr, 0, self.size - 1)
352-
TupleXXL.fromIArray(arr.asInstanceOf[IArray[Object]]).asInstanceOf[Result]
260+
TupleXXL.fromIArray(arr.asInstanceOf[IArray[Object]])
353261
}
262+
case _ =>
263+
val arr = new Array[Object](self.size - 1)
264+
val it = self.asInstanceOf[Product].productIterator
265+
it.next()
266+
itToArray(it, self.size - 1, arr, 0)
267+
dynamicFromIArray[Result](arr.asInstanceOf[IArray[Object]])
354268
}
355269
res.asInstanceOf[Result]
356270
}

0 commit comments

Comments
 (0)