JVM_IR KT-45103 optimize direct invoke for lambdas and callable refs

This commit is contained in:
Dmitry Petrov
2021-04-26 17:17:25 +03:00
committed by teamcityserver
parent bfb1a06f3d
commit 851980e36f
124 changed files with 1340 additions and 324 deletions
+4 -1
View File
@@ -4,7 +4,10 @@ fun Array<String>.test1(): Array<String> {
}
fun Array<String>.test1Nested(): Array<String> {
val func = { i: Int -> { this }()}
val func = { i: Int ->
val lam = { this }
lam()
}
return func(1)
}
@@ -3,10 +3,12 @@ class C(val i: Int) {
operator fun component2() = i + 2
}
fun <T> eval(fn: () -> T) = fn()
fun doTest(l : Array<C>): String {
var s = ""
for ((a, b) in l) {
s += {"$a:$b;"}()
s += eval {"$a:$b;"}
}
return s
}
@@ -1,10 +1,12 @@
operator fun Int.component1() = this + 1
operator fun Int.component2() = this + 2
fun <T> eval(fn: () -> T) = fn()
fun doTest(l : Array<Int>): String {
var s = ""
for ((a, b) in l) {
s += {"$a:$b;"}()
s += eval {"$a:$b;"}
}
return s
}
@@ -1,10 +1,12 @@
operator fun Long.component1() = this + 1
operator fun Long.component2() = this + 2
fun <T> eval(fn: () -> T) = fn()
fun doTest(l : Array<Long>): String {
var s = ""
for ((a, b) in l) {
s += {"$a:$b;"}()
s += eval { "$a:$b;" }
}
return s
}