JVM_IR KT-45103 optimize direct invoke for lambdas and callable refs
This commit is contained in:
committed by
teamcityserver
parent
bfb1a06f3d
commit
851980e36f
+13
@@ -0,0 +1,13 @@
|
||||
// IGNORE_BACKEND: WASM
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
class Outer (val x: String) {
|
||||
inner class Inner(val y: String) {
|
||||
val yx = y + x
|
||||
}
|
||||
}
|
||||
|
||||
fun box() =
|
||||
Outer("K")::Inner.invoke("O").yx
|
||||
@@ -0,0 +1,11 @@
|
||||
// IGNORE_BACKEND: WASM
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
class C(val x: String) {
|
||||
fun foo(s: String) = x + s
|
||||
}
|
||||
|
||||
fun box() =
|
||||
C("O")::foo.invoke("K")
|
||||
@@ -0,0 +1,11 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 invoke
|
||||
|
||||
fun box(): String {
|
||||
var ok = "FAILED"
|
||||
{ s: String ->
|
||||
ok = s
|
||||
}("OK")
|
||||
return ok
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
class C(x: String, y: String) {
|
||||
val yx = y + x
|
||||
}
|
||||
|
||||
fun box() =
|
||||
::C.invoke("K", "O").yx
|
||||
@@ -0,0 +1,12 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
fun box() =
|
||||
{ k: String ->
|
||||
{ o: String ->
|
||||
var ok = o
|
||||
ok += k
|
||||
ok
|
||||
}("O")
|
||||
}("K")
|
||||
@@ -0,0 +1,10 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
fun box() =
|
||||
(fun (s: String): String {
|
||||
var ok = "O"
|
||||
ok += s
|
||||
return ok
|
||||
}).invoke("K")
|
||||
@@ -0,0 +1,8 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
fun ok(s: String) = "O" + s
|
||||
|
||||
fun box() =
|
||||
::ok.invoke("K")
|
||||
@@ -0,0 +1,10 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
fun box() =
|
||||
{ s: String ->
|
||||
var ok = "O"
|
||||
ok += s
|
||||
ok
|
||||
}.invoke("K")
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 Function(^.)*.invoke
|
||||
|
||||
class Outer (val x: String) {
|
||||
inner class Inner(val y: String) {
|
||||
val yx = y + x
|
||||
}
|
||||
}
|
||||
|
||||
fun box() =
|
||||
(Outer::Inner).invoke(Outer("K"), "O").yx
|
||||
@@ -0,0 +1,2 @@
|
||||
fun box(): String =
|
||||
(String::plus)("O", "K")
|
||||
Reference in New Issue
Block a user