JVM IR: Make inlining in $default stubs compatible with the JVM BE
The JVM BE inlines calls to the underlying function in a $default stub verbatim, e.g., without renaming LVT entries or regenerating anonymous objects. This commit introduces the same behavior in the JVM IR BE. Fixes KT-36769.
This commit is contained in:
committed by
max-kammerer
parent
bef0437edb
commit
5e27d9b089
@@ -29,12 +29,6 @@ fun box(): String {
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// JVM_IR steps on line 15 both on the way in and on the way out
|
||||
// of the massert method. This is consistent with what would
|
||||
// happen if massert was not inline and we used force-step-into
|
||||
// to step through the $default method. JVM only hits line 15 on
|
||||
// the way in.
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:24 box
|
||||
// test.kt:15 box
|
||||
@@ -43,9 +37,6 @@ fun box(): String {
|
||||
// test.kt:16 box
|
||||
// test.kt:17 box
|
||||
// test.kt:21 box
|
||||
// LINENUMBERS JVM_IR
|
||||
// test.kt:15 box
|
||||
// LINENUMBERS
|
||||
// test.kt:25 box
|
||||
// test.kt:6 box
|
||||
// test.kt:3 getMASSERTIONS_ENABLED
|
||||
|
||||
@@ -11,11 +11,6 @@ fun foo(i: Int = 1) {
|
||||
inline fun bar(i: Int = 1) {
|
||||
}
|
||||
|
||||
// The JVM_IR backend has line number 11 for the inlined
|
||||
// default argument handling both before and after the actual
|
||||
// body of bar. That is consistent with what happens with the
|
||||
// $default method in the non-inlined case.
|
||||
|
||||
// FORCE_STEP_INTO
|
||||
// LINENUMBERS
|
||||
// test.kt:4 box
|
||||
@@ -25,7 +20,4 @@ inline fun bar(i: Int = 1) {
|
||||
// test.kt:5 box
|
||||
// test.kt:11 box
|
||||
// test.kt:12 box
|
||||
// LINENUMBERS JVM_IR
|
||||
// test.kt:11 box
|
||||
// LINENUMBERS
|
||||
// test.kt:6 box
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
// FILE: test.kt
|
||||
inline fun foo(stringMaker: () -> String = { "OK" }): String {
|
||||
return stringMaker()
|
||||
@@ -17,19 +17,6 @@ fun box(): String {
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// The IR Backend does the following:
|
||||
// test.kt:15
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:3
|
||||
// test.kt:3 <---
|
||||
// test.kt:16
|
||||
// test.kt:7
|
||||
// test.kt:11
|
||||
// test.kt:8
|
||||
// test.kt:7 <---
|
||||
// test.kt:17
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:15 box
|
||||
// test.kt:3 box
|
||||
|
||||
@@ -13,18 +13,11 @@ fun box(): String {
|
||||
return ifoo2()
|
||||
}
|
||||
|
||||
// JVM_IR backend has the same stepping behavior as
|
||||
// the non-inlined case when using force step into to step
|
||||
// through $default method. JVM does not.
|
||||
|
||||
// FORCE_STEP_INTO
|
||||
// LINENUMBERS
|
||||
// test.kt:12 box
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// LINENUMBERS JVM_IR
|
||||
// test.kt:3 box
|
||||
// LINENUMBERS
|
||||
// test.kt:13 box
|
||||
// test.kt:7 ifoo2$default (synthetic)
|
||||
// test.kt:8 ifoo2
|
||||
|
||||
Reference in New Issue
Block a user