JVM_IR generate less bytecode for for-loops if possible(KT-22334).
This commit is contained in:
+6
-5
@@ -22,11 +22,12 @@ fun test(): Int {
|
||||
// 1 IF
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 IF_ICMPGT
|
||||
// 1 IF_ICMPEQ
|
||||
// 2 IF
|
||||
// 7 ILOAD
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IF_ICMPEQ
|
||||
// 1 IF
|
||||
// 5 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
// 1 IADD
|
||||
// 1 ISUB
|
||||
// 0 ISUB
|
||||
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = booleanArrayOf(true, false, true)
|
||||
var optimized = ""
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = byteArrayOf(1, 2, 3)
|
||||
var optimized = 0
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = charArrayOf('1', '2', '3')
|
||||
var optimized = ""
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val chars: CharSequence = "123"
|
||||
var optimized = ""
|
||||
for (i in 0..chars.length - 1) optimized += chars[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = doubleArrayOf(1.0, 2.0, 3.0)
|
||||
var optimized = 0.0
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val list = emptyList<Int>()
|
||||
var optimized = 0
|
||||
for (i in 0..list.size - 1) optimized += list[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val map = emptyMap<Int, Int>()
|
||||
var optimized = ""
|
||||
for (i in 0..map.size - 1) optimized += map[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val set = emptySet<Int>()
|
||||
var optimized = ""
|
||||
for (i in 0..set.size - 1) optimized += set.elementAt(i)
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = floatArrayOf(1f, 2f, 3f)
|
||||
var optimized = 0f
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = intArrayOf(1, 2, 3)
|
||||
var optimized = 0
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val list = listOf(1, 2, 3)
|
||||
var optimized = 0
|
||||
for (i in 0..list.size - 1) optimized += list[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = longArrayOf(1, 2, 3)
|
||||
var optimized = 0L
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val map = mapOf(1 to 1, 2 to 2, 3 to 3)
|
||||
var optimized = ""
|
||||
for (i in 0..map.size - 1) optimized += map[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val list = mutableListOf(1, 2, 3)
|
||||
var optimized = 0
|
||||
for (i in 0..list.size - 1) optimized += list[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val map = mutableMapOf(1 to 1, 2 to 2, 3 to 3)
|
||||
var optimized = ""
|
||||
for (i in 0..map.size - 1) optimized += map[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val set = mutableSetOf(1, 2, 3)
|
||||
var optimized = ""
|
||||
for (i in 0..set.size - 1) optimized += set.elementAt(i)
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val set = setOf(1, 2, 3)
|
||||
var optimized = ""
|
||||
for (i in 0..set.size - 1) optimized += set.elementAt(i)
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val array = shortArrayOf(1, 2, 3)
|
||||
var optimized = 0
|
||||
for (i in 0..array.size - 1) optimized += array[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 1 IADD
|
||||
// 0 ISUB
|
||||
// 4 ILOAD
|
||||
// 4 ISTORE
|
||||
// 1 IINC
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
fun test() {
|
||||
val str = "123"
|
||||
var optimized = ""
|
||||
for (i in 0..str.length - 1) optimized += str[i]
|
||||
}
|
||||
|
||||
// 0 IF_ICMPGT
|
||||
// 1 IF_ICMPGE
|
||||
// 0 IADD
|
||||
// 0 ISUB
|
||||
// 3 ILOAD
|
||||
// 2 ISTORE
|
||||
// 1 IINC
|
||||
Reference in New Issue
Block a user