[JVM] Implement new inlined variable naming format

^KT-65478 fixed
This commit is contained in:
Nikita Nazarov
2023-09-18 16:27:46 +02:00
committed by Alexander Udalov
parent 9ea775cbed
commit 407448d8e3
104 changed files with 88125 additions and 92 deletions
@@ -16,6 +16,8 @@ fun bar() {
// 0 valueOf
// 0 Value\s\(\)
// JVM_TEMPLATES
// 1 LOCALVARIABLE x I (.*) 6
// 1 LOCALVARIABLE y I (.*) 5
// 1 LOCALVARIABLE x J (.*) 7
@@ -33,3 +35,38 @@ fun bar() {
// 1 LOCALVARIABLE x Z (.*) 6
// 1 LOCALVARIABLE y Z (.*) 5
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE x I (.*) 6
// 1 LOCALVARIABLE y I (.*) 5
// 1 LOCALVARIABLE x J (.*) 7
// 1 LOCALVARIABLE y J (.*) 5
// 1 LOCALVARIABLE x F (.*) 6
// 1 LOCALVARIABLE y F (.*) 5
// 1 LOCALVARIABLE x D (.*) 7
// 1 LOCALVARIABLE y D (.*) 5
// 1 LOCALVARIABLE x B (.*) 6
// 1 LOCALVARIABLE y B (.*) 5
// 1 LOCALVARIABLE x S (.*) 6
// 1 LOCALVARIABLE y S (.*) 5
// 1 LOCALVARIABLE x C (.*) 6
// 1 LOCALVARIABLE y C (.*) 5
// 1 LOCALVARIABLE x Z (.*) 6
// 1 LOCALVARIABLE y Z (.*) 5
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE x\\2 I (.*) 6
// 1 LOCALVARIABLE y\\2 I (.*) 5
// 1 LOCALVARIABLE x\\4 J (.*) 7
// 1 LOCALVARIABLE y\\4 J (.*) 5
// 1 LOCALVARIABLE x\\6 F (.*) 6
// 1 LOCALVARIABLE y\\6 F (.*) 5
// 1 LOCALVARIABLE x\\8 D (.*) 7
// 1 LOCALVARIABLE y\\8 D (.*) 5
// 1 LOCALVARIABLE x\\10 B (.*) 6
// 1 LOCALVARIABLE y\\10 B (.*) 5
// 1 LOCALVARIABLE x\\12 S (.*) 6
// 1 LOCALVARIABLE y\\12 S (.*) 5
// 1 LOCALVARIABLE x\\14 C (.*) 6
// 1 LOCALVARIABLE y\\14 C (.*) 5
// 1 LOCALVARIABLE x\\16 Z (.*) 6
// 1 LOCALVARIABLE y\\16 Z (.*) 5
@@ -5,6 +5,16 @@ suspend inline fun foo(a: A, block: suspend (A) -> String): String = block(a)
// FILE: test.kt
suspend fun test() = foo(A("O", "K")) { (x_param, y_param) -> x_param + y_param }
// JVM_TEMPLATES
// @TestKt.class:
// 1 LOCALVARIABLE x_param Ljava/lang/String;
// 1 LOCALVARIABLE y_param Ljava/lang/String;
// 1 LOCALVARIABLE y_param Ljava/lang/String;
// JVM_IR_TEMPLATES
// @TestKt.class:
// 1 LOCALVARIABLE x_param Ljava/lang/String;
// 1 LOCALVARIABLE y_param Ljava/lang/String;
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE x_param\\2 Ljava/lang/String;
// 1 LOCALVARIABLE y_param\\2 Ljava/lang/String;
@@ -22,4 +22,11 @@ class MyBlockingAdapter() {
}
}
// JVM_TEMPLATES
// 1 LOCALVARIABLE \$this\$extensionFun\$iv\$iv LAtomicInt;
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE \$this\$extensionFun\$iv\$iv LAtomicInt;
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE \$this\$extensionFun\\2 LAtomicInt;
@@ -11,6 +11,15 @@ fun box() : String {
// 2 LOCALVARIABLE p Ljava/lang/String;
// 2 LOCALVARIABLE x I
// JVM_TEMPLATES
// The $iv suffix should be present in box
// 1 LOCALVARIABLE p\$iv Ljava/lang/String;
// 1 LOCALVARIABLE x\$iv I
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE p\$iv Ljava/lang/String;
// 1 LOCALVARIABLE x\$iv I
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE p\\1 Ljava/lang/String;
// 1 LOCALVARIABLE x\\1 I
@@ -16,5 +16,13 @@ fun box() : String {
// 0 NULL
//proper variable start label: after assignment
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE p\\1 Ljava/lang/String; L2 L4 0
// JVM_TEMPLATES
// 1 LOCALVARIABLE p\$iv Ljava/lang/String; L2 L4 0
// 1 LDC "OK"\s*ASTORE 0\s*L2
// 1 LDC "OK"\s*ASTORE 0\s*L2
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE p\$iv Ljava/lang/String; L2 L4 0
// 1 LDC "OK"\s*ASTORE 0\s*L2
@@ -10,6 +10,18 @@ fun box(): String {
return inlineFun<OK>()
}
// JVM_TEMPLATES
// 1 LOCALVARIABLE \$i\$a\$-inlineFun-DefaultLambdaKt\$inlineFun\$1 I
// inlineFun, inlineFun$default, inlined inlineFun:
// 3 LOCALVARIABLE \$i\$f\$inlineFun
// 3 LOCALVARIABLE \$i\$f\$inlineFun
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE \$i\$a\$-inlineFun-DefaultLambdaKt\$inlineFun\$1 I
// inlineFun, inlineFun$default, inlined inlineFun:
// 3 LOCALVARIABLE \$i\$f\$inlineFun
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 1 LOCALVARIABLE \$i\$a\$-inlineFun-DefaultLambdaKt\$inlineFun\$1\\2\\30\\0 I
// inlineFun, inlineFun$default, inlined inlineFun:
// 1 LOCALVARIABLE \$i\$f\$inlineFun\\1
// 2 LOCALVARIABLE \$i\$f\$inlineFun I
@@ -17,6 +17,14 @@ suspend fun ApplicationCall.test(authenticationService: AuthenticationService) {
respond(authenticationService.execute(receiveJSON()))
}
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 5 ISTORE 3
// 1 ISTORE 2
// 0 ILOAD 3
// 0 ILOAD 2
// 1 \$i\$f\$receiveJSON I .* 2
// 2 \$i\$f\$respond I .* 3
// JVM_TEMPLATES
// $i$f$respond x1, $i$f$receiveJSON x2: before and after suspension point
// 3 ISTORE 5
@@ -5,10 +5,24 @@ fun test() = run {
"OK"
}
// 2 LOCALVARIABLE
// JVM_TEMPLATES
// 1 LOCALVARIABLE tmp I
// 1 LOCALVARIABLE \$i\$a\$-run-NoFakeVariableForInlineOnlyFunWithLambdaKt\$test\$1 I
// 0 LDC 0
// 2 ICONST_0
// 2 ISTORE
// JVM_IR_TEMPLATES
// 1 LOCALVARIABLE tmp I
// 1 LOCALVARIABLE \$i\$a\$-run-NoFakeVariableForInlineOnlyFunWithLambdaKt\$test\$1 I
// 0 LDC 0
// 2 ICONST_0
// 2 ISTORE
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 2 LOCALVARIABLE
// 1 LOCALVARIABLE tmp\\1 I
// 1 LOCALVARIABLE \$i\$a\$-run-NoFakeVariableForInlineOnlyFunWithLambdaKt\$test\$1\\1\\3\\0 I
// 0 LDC 0
// 2 ICONST_0
// 2 ISTORE
@@ -10,7 +10,18 @@ fun test() {
foo(0.0f)
}
// JVM_TEMPLATES
// two in foo and two in test
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// JVM_IR_TEMPLATES
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\\1 Ljava/lang/Object;
@@ -10,7 +10,18 @@ fun test() {
foo(0.0f)
}
// JVM_TEMPLATES
// two in foo and two in test
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// JVM_IR_TEMPLATES
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\$iv Ljava/lang/Object;
// JVM_IR_TEMPLATES_WITH_INLINE_SCOPES
// 4 ASTORE 2
// 1 LOCALVARIABLE t Ljava/lang/Object;
// 1 LOCALVARIABLE t\\1 Ljava/lang/Object;