[JVM IR] Do not put destructuring params or underscores in LVT.
Putting them in the local variable table means that the debugger needs to have special handling for parameters with specific names. That forces us to generate mangled names for these. Instead of also implementing the name mangling for FIR, this change gets rid of the parameters from the LVT instead.
This commit is contained in:
@@ -10,4 +10,6 @@ fun box() {
|
||||
// VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=2
|
||||
// VARIABLE : NAME=y TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=this TYPE=LDestructuringInLambdasKt$box$1; INDEX=0
|
||||
// VARIABLE : NAME=$dstr$x$y TYPE=LA; INDEX=1
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x$y TYPE=LA; INDEX=1
|
||||
|
||||
+7
@@ -13,8 +13,15 @@ suspend fun foo(data: Data, body: suspend (Data) -> Unit) {
|
||||
|
||||
// METHOD : DataClassKt$test$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x_param$y_param TYPE=LData; INDEX=2
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=3
|
||||
// VARIABLE : NAME=y_param TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this TYPE=LDataClassKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=3
|
||||
// VARIABLE : NAME=y_param TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this TYPE=LDataClassKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
Vendored
-1
@@ -33,7 +33,6 @@ suspend fun test() = B.bar()
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// METHOD : ExtensionComponentsKt$bar$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
|
||||
// VARIABLE : NAME=$dstr$x_param$y_param$z_param TYPE=LA; INDEX=2
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=2
|
||||
// VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=3
|
||||
// VARIABLE : NAME=z_param TYPE=I INDEX=4
|
||||
|
||||
+8
-1
@@ -10,8 +10,15 @@ suspend fun test() = foo(A("OK", 1)) { (x_param, y_param) ->
|
||||
|
||||
// METHOD : GenericKt$test$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x_param$y_param TYPE=LA; INDEX=2
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=3
|
||||
// VARIABLE : NAME=y_param TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this TYPE=LGenericKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=3
|
||||
// VARIABLE : NAME=y_param TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this TYPE=LGenericKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
+11
-1
@@ -9,11 +9,21 @@ suspend fun test() = foo(A("O", "K")) { (x_param, y_param) -> x_param + y_param
|
||||
// TODO: Fix this after other issues in inlining suspend lambdas are resolved.
|
||||
|
||||
// METHOD : InlineKt.test(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=6
|
||||
// VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=7
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x_param$y_param TYPE=LA; INDEX=4
|
||||
// VARIABLE : NAME=continuation TYPE=Lkotlin/coroutines/Continuation; INDEX=3
|
||||
// VARIABLE : NAME=$i$a$-foo-InlineKt$test$2 TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=a$iv TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=$i$f$foo TYPE=I INDEX=2
|
||||
// VARIABLE : NAME=$completion TYPE=Lkotlin/coroutines/Continuation; INDEX=0
|
||||
// VARIABLE : NAME=$completion TYPE=Lkotlin/coroutines/Continuation; INDEX=0
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=continuation TYPE=Lkotlin/coroutines/Continuation; INDEX=3
|
||||
// VARIABLE : NAME=$i$a$-foo-InlineKt$test$2 TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=a$iv TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=$i$f$foo TYPE=I INDEX=2
|
||||
// VARIABLE : NAME=$completion TYPE=Lkotlin/coroutines/Continuation; INDEX=0
|
||||
|
||||
+9
@@ -10,9 +10,18 @@ suspend fun test() = foo(A("O", "K")) { i_param, (x_param, y_param), v_param ->
|
||||
// METHOD : OtherParametersKt$test$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
|
||||
|
||||
// VARIABLE : NAME=i_param TYPE=I INDEX=2
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x_param$y_param TYPE=LA; INDEX=3
|
||||
// VARIABLE : NAME=v_param TYPE=Ljava/lang/String; INDEX=4
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=5
|
||||
// VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=6
|
||||
// VARIABLE : NAME=this TYPE=LOtherParametersKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=v_param TYPE=Ljava/lang/String; INDEX=4
|
||||
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=5
|
||||
// VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=6
|
||||
// VARIABLE : NAME=this TYPE=LOtherParametersKt$test$2; INDEX=0
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
+1
-2
@@ -26,11 +26,10 @@ suspend fun foo(data: Data, body: suspend Long.(String, Data, Int) -> Unit) {
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x$_u24__u24$z TYPE=LData; INDEX=*
|
||||
// VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=*
|
||||
// VARIABLE : NAME=$this$foo TYPE=J INDEX=*
|
||||
// VARIABLE : NAME=i TYPE=I INDEX=*
|
||||
// VARIABLE : NAME=str TYPE=Ljava/lang/String; INDEX=*
|
||||
// VARIABLE : NAME=this TYPE=LParametersKt$test$2; INDEX=*
|
||||
// VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=*
|
||||
// VARIABLE : NAME=z TYPE=I INDEX=*
|
||||
// VARIABLE : NAME=z TYPE=I INDEX=*
|
||||
|
||||
@@ -29,6 +29,11 @@ fun box() {
|
||||
// VARIABLE : NAME=c TYPE=C INDEX=9
|
||||
// VARIABLE : NAME=a TYPE=D INDEX=7
|
||||
// VARIABLE : NAME=this TYPE=LUnderscoreNamesKt$box$1; INDEX=0
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// VARIABLE : NAME=$dstr$x$_u24__u24$y TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=$noName_1 TYPE=Ljava/lang/String; INDEX=2
|
||||
// VARIABLE : NAME=w TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=w TYPE=I INDEX=3
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// VARIABLE : NAME=w TYPE=I INDEX=3
|
||||
|
||||
Reference in New Issue
Block a user