Generate optimized hashCode for primitive type with jvmTarget 1.8+

#KT-7571 Fixed
This commit is contained in:
Mikhael Bogdanov
2017-06-27 14:09:26 +02:00
parent d7e4350d42
commit 69457ef3f1
15 changed files with 293 additions and 29 deletions

View File

@@ -0,0 +1,25 @@
// JVM_TARGET: 1.8
data class Hash(
val a: Boolean,
val b: Byte,
val c: Char,
val d: Short,
val e: Int,
val f: Long,
val g: Float,
val j: Double,
val k: Any
)
// 8 \.hashCode
// 0 INVOKESTATIC java/lang/Boolean\.hashCode \(Z\)I
// 1 INVOKESTATIC java/lang/Byte\.hashCode \(B\)I
// 1 INVOKESTATIC java/lang/Character\.hashCode \(C\)I
// 1 INVOKESTATIC java/lang/Short\.hashCode \(S\)I
// 1 INVOKESTATIC java/lang/Integer\.hashCode \(I\)I
// 1 INVOKESTATIC java/lang/Long\.hashCode \(J\)I
// 1 INVOKESTATIC java/lang/Float\.hashCode \(F\)I
// 1 INVOKESTATIC java/lang/Double\.hashCode \(D\)I
// 1 INVOKEVIRTUAL java/lang/Object\.hashCode \(\)I

View File

@@ -0,0 +1,26 @@
// JVM_TARGET: 1.8
fun box(): String {
true.hashCode()
1.toByte().hashCode()
1.toChar().hashCode()
1.toShort().hashCode()
1.hashCode()
1L.hashCode()
1.0F.hashCode()
1.0.hashCode()
"".hashCode()
return "OK"
}
// 9 \.hashCode
// 1 INVOKESTATIC java/lang/Boolean\.hashCode \(Z\)I
// 1 INVOKESTATIC java/lang/Byte\.hashCode \(B\)I
// 1 INVOKESTATIC java/lang/Character\.hashCode \(C\)I
// 1 INVOKESTATIC java/lang/Short\.hashCode \(S\)I
// 1 INVOKESTATIC java/lang/Integer\.hashCode \(I\)I
// 1 INVOKESTATIC java/lang/Long\.hashCode \(J\)I
// 1 INVOKESTATIC java/lang/Float\.hashCode \(F\)I
// 1 INVOKESTATIC java/lang/Double\.hashCode \(D\)I
// 1 INVOKEVIRTUAL java/lang/String\.hashCode \(\)I