Optimize for-in-string loops

For-in-string loop can be generated using specialized 'length' and
'charAt' method calls, and with cached string length.
Note that update of the string variable in loop body doesn't affect
loop execution semantics.

 #KT-21322 Fixed Target versions 1.2.20
This commit is contained in:
Dmitry Petrov
2017-11-27 16:40:05 +03:00
parent e2fa613b70
commit 5b8c0d4c3e
10 changed files with 107 additions and 14 deletions

View File

@@ -0,0 +1,15 @@
// WITH_RUNTIME
fun test() {
var s = ""
for (c in "testString") {
s += c
}
}
// 0 iterator
// 0 hasNext
// 0 nextChar
// 0 INVOKEINTERFACE
// 1 ISTORE 4
// 1 ILOAD 4