JVM IR: Move direct invoke optimization into a separate pass

This also changes the transformation to inline the body of a directly
invoked lambda rather than producing a call to an anonymous local
function. The latter is unsupported in inline functions and problematic
from an ABI perspective, since it results in functions whose name
depends on the entire source code up to this point.
This commit is contained in:
Steven Schäfer
2022-06-13 13:57:54 +02:00
committed by Alexander Udalov
parent 7d59c7689c
commit f0760e0550
12 changed files with 192 additions and 132 deletions
@@ -7,11 +7,11 @@ fun box() {
}
// EXPECTATIONS
// test.kt:4 box
// EXPECTATIONS JVM
// test.kt:5 invoke
// EXPECTATIONS JVM_IR
// test.kt:5 box$lambda$0
// EXPECTATIONS
// test.kt:5 box
// EXPECTATIONS JVM
// test.kt:4 box
// test.kt:5 invoke
// test.kt:4 box
// EXPECTATIONS
// test.kt:7 box