JVM_IR: Enable loopVarInterval and forInReversedCollectionIndices

bytecode text tests.
This commit is contained in:
Mark Punzalan
2019-10-28 14:14:38 -07:00
committed by max-kammerer
parent 934cbcbbec
commit de333c18fc
2 changed files with 21 additions and 6 deletions
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// NOTE: Enable once Collection.indices is handled
import kotlin.test.* import kotlin.test.*
fun box(): String { fun box(): String {
@@ -13,6 +11,9 @@ fun box(): String {
return "OK" return "OK"
} }
// JVM non-IR uses while.
// JVM IR uses if + do-while.
// 0 reversed // 0 reversed
// 0 iterator // 0 iterator
// 0 getStart // 0 getStart
@@ -20,5 +21,12 @@ fun box(): String {
// 0 getFirst // 0 getFirst
// 0 getLast // 0 getLast
// 0 getStep // 0 getStep
// 1 IF(_ICMPG|L)T
// 1 IF // JVM_TEMPLATES
// 1 IFLT
// 1 IF
// JVM_IR_TEMPLATES
// 1 IF_ICMPGT
// 1 IF_ICMPLE
// 2 IF
@@ -1,10 +1,17 @@
// IGNORE_BACKEND: JVM_IR
fun f() { fun f() {
for (c in "123") { for (c in "123") {
print(c) print(c)
} }
} }
// Different locals slot numbers are used in JVM vs JVM IR for loop and induction variables.
// JVM_TEMPLATES
// 1 ISTORE 0\s+L3 // 1 ISTORE 0\s+L3
// 1 ILOAD 0\s+INVOKEVIRTUAL java/io/PrintStream.print \(C\)V // 1 ILOAD 0\s+INVOKEVIRTUAL java/io/PrintStream.print \(C\)V
// 1 LOCALVARIABLE c C L3 L.* 0 // 1 LOCALVARIABLE c C L3 L\d+ 0
// JVM_IR_TEMPLATES
// 1 ISTORE 2\s+L5
// 1 ILOAD 2\s+INVOKEVIRTUAL java/io/PrintStream.print \(C\)V
// 1 LOCALVARIABLE c C L5 L\d+ 2