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,8 +1,10 @@
// FILE: 1.kt
import a.*
fun <T> eval(fn: () -> T) = fn()
abstract class B : A() {
fun g() = { f() }()
fun g() = eval { f() }
}
fun box() = object : B() {
@@ -5,13 +5,15 @@ package test2
import test.Actor
import test.O2dScriptAction
fun <T> eval(fn: () -> T) = fn()
class CompositeActor : Actor()
public open class O2dDialog : O2dScriptAction<CompositeActor>() {
fun test() = { owner }()
fun test() = eval { owner }
fun test2() = { calc() }()
fun test2() = eval { calc() }
}
fun box(): String {
@@ -1,6 +1,8 @@
fun <T> eval(fn: () -> T) = fn()
class Foo {
private val fld: String = "O"
get() = { field }() + "K"
get() = eval { field } + "K"
val indirectFldGetter: () -> String = { fld }
}
@@ -1,6 +1,8 @@
fun <T> eval(fn: () -> T) = fn()
class Foo {
private val fld: String = "O"
get() = { field }() + "K"
get() = eval { field } + "K"
val indirectFldGetter: () -> String = { fld }