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
@@ -1,6 +1,7 @@
fun test() {
{
{}()
val lam = {}
lam()
}()
}
@@ -11,16 +12,19 @@ inline fun ifun(s: () -> Unit) {
fun test2() {
var z = 1;
ifun {
{ z = 2 }()
val lam = { z = 2 }
lam()
}
}
// 1 class DeleteClassOnTransformationKt\$test\$1\$1
// JVM_TEMPLATES:
// 1 class DeleteClassOnTransformationKt\$test\$1 extends
// 1 class DeleteClassOnTransformationKt\$test\$1\$lam\$1 extends
// 0 class DeleteClassOnTransformationKt\$test2\$1\$1
// 1 class DeleteClassOnTransformationKt\$test2\$\$inlined\$ifun\$lambda\$1
// JVM_IR_TEMPLATES:
// 1 class DeleteClassOnTransformationKt\$test2\$1\$1
// 0 class DeleteClassOnTransformationKt\$test2\$\$inlined
// 3 final class
// 1 class DeleteClassOnTransformationKt\$test\$1\$lam\$1
// 1 class DeleteClassOnTransformationKt\$test2\$1\$lam\$1