Files
kotlin/compiler/testData/codegen/bytecodeText/boxingOptimization/maxMinBy.kt
Mads Ager bb0cd92da0 JVM_IR: Fix codegeneration for missing branches.
This used to generate an ACONST_NULL instruction leading to incorrect
stack height for code such as:

```
if (condition) else 32
```
2019-01-28 15:41:48 +01:00

37 lines
854 B
Kotlin
Vendored

// FILE: list.kt
val intList = listOf(1, 2, 3)
val longList = listOf(1L, 2L, 3L)
// FILE: box.kt
fun box(): String {
val intListMin = intList.minBy { it } ?: -1
if (intListMin != 1) return "Fail intListMin=$intListMin"
val intListMax = intList.maxBy { it } ?: -1
if (intListMax != 3) return "Fail intListMax=$intListMax"
val longListMin = longList.minBy { it } ?: -1
if (longListMin != 1L) return "Fail longListMin=$longListMin"
val longListMax = longList.maxBy { it } ?: -1
if (longListMax != 3L) return "Fail longListMax=$longListMax"
return "OK"
}
// @BoxKt.class:
// -- no boxing
// 0 valueOf
// -- no compareTo
// 0 compareTo
// -- comparisons are properly fused with conditional jumps
// comparisons: 0 + fake inline variables: 8
// 8 ICONST_0
// 1 IF_ICMPGE
// 1 IF_ICMPLE
// 4 LCMP
// 1 IFGE
// 1 IFLE