miniboxing-plugin
miniboxing-plugin copied to clipboard
Optimize specialized methods
class:
class MyTuple2[@miniboxed T1, @miniboxed T2](val t1: T1, val t2: T2)
current result:
// interface:
abstract trait MyTuple2[T1, T2] extends Object {
val t1(): T1
val t1_JJ(val T1_TypeTag: Byte,val T2_TypeTag: Byte): Long
val t1_JL(val T1_TypeTag: Byte): Long
val t1_LJ(val T2_TypeTag: Byte): T1
val t2(): T2
val t2_JJ(val T1_TypeTag: Byte,val T2_TypeTag: Byte): Long
val t2_JL(val T1_TypeTag: Byte): T2
val t2_LJ(val T2_TypeTag: Byte): Long
}
desired result:
// interface:
abstract trait MyTuple2[T1, T2] extends Object {
val t1(): T1
val t1_J*(val T1_TypeTag: Byte): Long
val t2(): T2
val t2_*J(val T2_TypeTag: Byte): Long
}
where *
could be replaced by something else if necessary.
This needs to go hand in hand with the updated naming scheme.