Update test data

#KT-28309
This commit is contained in:
Ilmir Usmanov
2018-12-12 20:47:18 +03:00
parent 666fec41b9
commit 871134cff8
23 changed files with 108 additions and 95 deletions
@@ -7,11 +7,11 @@ suspend inline fun foo(a: A, block: suspend (A) -> String): String = block(a)
suspend fun test() = foo(A("O", "K")) { (x_param, y_param) -> x_param + y_param } suspend fun test() = foo(A("O", "K")) { (x_param, y_param) -> x_param + y_param }
// METHOD : InlineKt.test(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; // METHOD : InlineKt.test(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
// VARIABLE : NAME=<name for destructuring parameter 0> TYPE=LA; INDEX=3 // VARIABLE : NAME=<name for destructuring parameter 0> TYPE=LA; INDEX=4
// VARIABLE : NAME=continuation TYPE=Lkotlin/coroutines/Continuation; INDEX=2 // VARIABLE : NAME=continuation TYPE=Lkotlin/coroutines/Continuation; INDEX=3
// VARIABLE : NAME=$x_param_y_param TYPE=LA; INDEX=5 // VARIABLE : NAME=$x_param_y_param TYPE=LA; INDEX=6
// VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=6 // VARIABLE : NAME=x_param TYPE=Ljava/lang/String; INDEX=7
// VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=7 // VARIABLE : NAME=y_param TYPE=Ljava/lang/String; INDEX=8
// VARIABLE : NAME=$i$a$-foo-InlineKt$test$2 TYPE=I INDEX=2 // VARIABLE : NAME=$i$a$-foo-InlineKt$test$2 TYPE=I INDEX=5
// VARIABLE : NAME=a$iv TYPE=LA; INDEX=1 // VARIABLE : NAME=a$iv TYPE=LA; INDEX=1
// VARIABLE : NAME=$i$f$foo TYPE=I INDEX=8 // VARIABLE : NAME=$i$f$foo TYPE=I INDEX=2
@@ -14,10 +14,10 @@ fun box(): String {
} }
// METHOD : DestructuringInlineLambdaKt.box()Ljava/lang/String; // METHOD : DestructuringInlineLambdaKt.box()Ljava/lang/String;
// VARIABLE : NAME=i TYPE=I INDEX=1 // VARIABLE : NAME=i TYPE=I INDEX=2
// VARIABLE : NAME=$a1_a2_a3 TYPE=LStation; INDEX=0 // VARIABLE : NAME=$a1_a2_a3 TYPE=LStation; INDEX=1
// VARIABLE : NAME=a1 TYPE=Ljava/lang/String; INDEX=2 // VARIABLE : NAME=a1 TYPE=Ljava/lang/String; INDEX=4
// VARIABLE : NAME=a2 TYPE=Ljava/lang/String; INDEX=3 // VARIABLE : NAME=a2 TYPE=Ljava/lang/String; INDEX=5
// VARIABLE : NAME=a3 TYPE=I INDEX=4 // VARIABLE : NAME=a3 TYPE=I INDEX=6
// VARIABLE : NAME=$i$a$-foo-DestructuringInlineLambdaKt$box$1 TYPE=I INDEX=5 // VARIABLE : NAME=$i$a$-foo-DestructuringInlineLambdaKt$box$1 TYPE=I INDEX=3
// VARIABLE : NAME=$i$f$foo TYPE=I INDEX=6 // VARIABLE : NAME=$i$f$foo TYPE=I INDEX=0
@@ -12,9 +12,9 @@ class A {
} }
// METHOD : A.foo()V // METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=3 // VARIABLE : NAME=zzz TYPE=I INDEX=5
// VARIABLE : NAME=it TYPE=I INDEX=2 // VARIABLE : NAME=it TYPE=I INDEX=3
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=4 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=4
// VARIABLE : NAME=this_$iv TYPE=LA; INDEX=1 // VARIABLE : NAME=this_$iv TYPE=LA; INDEX=1
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=5 // VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=2
// VARIABLE : NAME=this TYPE=LA; INDEX=0 // VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -14,13 +14,13 @@ class A {
} }
// METHOD : A.foo()V // METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=4 // VARIABLE : NAME=zzz TYPE=I INDEX=6
// VARIABLE : NAME=l TYPE=I INDEX=3 // VARIABLE : NAME=l TYPE=I INDEX=4
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=5 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=5
// VARIABLE : NAME=zzz TYPE=I INDEX=4 // VARIABLE : NAME=zzz TYPE=I INDEX=6
// VARIABLE : NAME=l TYPE=I INDEX=3 // VARIABLE : NAME=l TYPE=I INDEX=4
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=5 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=5
// VARIABLE : NAME=this_$iv TYPE=LA; INDEX=1 // VARIABLE : NAME=this_$iv TYPE=LA; INDEX=1
// VARIABLE : NAME=p$iv TYPE=I INDEX=2 // VARIABLE : NAME=p$iv TYPE=I INDEX=2
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=6 // VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=3
// VARIABLE : NAME=this TYPE=LA; INDEX=0 // VARIABLE : NAME=this TYPE=LA; INDEX=0
+2 -2
View File
@@ -13,9 +13,9 @@ class A {
} }
// METHOD : A.foo()V // METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=3 // VARIABLE : NAME=zzz TYPE=I INDEX=5
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=4 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=4
// VARIABLE : NAME=this_$iv TYPE=LA; INDEX=2 // VARIABLE : NAME=this_$iv TYPE=LA; INDEX=2
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=5 // VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=3
// VARIABLE : NAME=s TYPE=I INDEX=1 // VARIABLE : NAME=s TYPE=I INDEX=1
// VARIABLE : NAME=this TYPE=LA; INDEX=0 // VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -18,13 +18,13 @@ class A {
} }
// METHOD : A.foo()V // METHOD : A.foo()V
// VARIABLE : NAME=zz2 TYPE=I INDEX=5 // VARIABLE : NAME=zz2 TYPE=I INDEX=9
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1$1 TYPE=I INDEX=6 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1$1 TYPE=I INDEX=8
// VARIABLE : NAME=this_$iv TYPE=LA; INDEX=4 // VARIABLE : NAME=this_$iv TYPE=LA; INDEX=6
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=7 // VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=7
// VARIABLE : NAME=z TYPE=I INDEX=3 // VARIABLE : NAME=z TYPE=I INDEX=5
// VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=8 // VARIABLE : NAME=$i$a$-inlineFun-A$foo$1 TYPE=I INDEX=4
// VARIABLE : NAME=this_$iv TYPE=LA; INDEX=2 // VARIABLE : NAME=this_$iv TYPE=LA; INDEX=2
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=9 // VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=3
// VARIABLE : NAME=s TYPE=I INDEX=1 // VARIABLE : NAME=s TYPE=I INDEX=1
// VARIABLE : NAME=this TYPE=LA; INDEX=0 // VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -7,17 +7,17 @@ public final class DeepInlineKt : java/lang/Object {
public final static void foo(java.lang.String $receiver, int $i$a$-block-DeepInlineKt$foo$1$1$1) { public final static void foo(java.lang.String $receiver, int $i$a$-block-DeepInlineKt$foo$1$1$1) {
Local variables: Local variables:
14 $receiver: J
16 $i$a$-block-DeepInlineKt$foo$1$1$1: I
13 $i$f$block: I
12 z: Z
9 $receiver: J 9 $receiver: J
11 $i$a$-block-DeepInlineKt$foo$1$1$1: I 11 $i$a$-block-DeepInlineKt$foo$1$1: I
12 $i$f$block: I 8 $i$f$block: I
8 z: Z 7 y: Z
6 $receiver: J 4 $receiver: J
13 $i$a$-block-DeepInlineKt$foo$1$1: I 6 $i$a$-block-DeepInlineKt$foo$1: I
14 $i$f$block: I 3 $i$f$block: I
5 y: Z
3 $receiver: J
15 $i$a$-block-DeepInlineKt$foo$1: I
16 $i$f$block: I
2 x: Z 2 x: Z
0 $receiver: Ljava/lang/String; 0 $receiver: Ljava/lang/String;
1 count: I 1 count: I
@@ -7,17 +7,17 @@ public final class DeepInlineWithLabelsKt : java/lang/Object {
public final static void foo(java.lang.String $receiver, int $i$a$-block-DeepInlineWithLabelsKt$foo$1$1$1) { public final static void foo(java.lang.String $receiver, int $i$a$-block-DeepInlineWithLabelsKt$foo$1$1$1) {
Local variables: Local variables:
14 $receiver: J
16 $i$a$-block-DeepInlineWithLabelsKt$foo$1$1$1: I
13 $i$f$block: I
12 z: Z
9 $receiver: J 9 $receiver: J
11 $i$a$-block-DeepInlineWithLabelsKt$foo$1$1$1: I 11 $i$a$-block-DeepInlineWithLabelsKt$foo$1$1: I
12 $i$f$block: I 8 $i$f$block: I
8 z: Z 7 y: Z
6 $receiver: J 4 $receiver: J
13 $i$a$-block-DeepInlineWithLabelsKt$foo$1$1: I 6 $i$a$-block-DeepInlineWithLabelsKt$foo$1: I
14 $i$f$block: I 3 $i$f$block: I
5 y: Z
3 $receiver: J
15 $i$a$-block-DeepInlineWithLabelsKt$foo$1: I
16 $i$f$block: I
2 x: Z 2 x: Z
0 $receiver: Ljava/lang/String; 0 $receiver: Ljava/lang/String;
1 count: I 1 count: I
@@ -9,10 +9,10 @@ public final class Foo$Bar : java/lang/Object {
public final void bar() { public final void bar() {
Local variables: Local variables:
1 $i$a$-block-Foo$Bar$bar$1$1: I 4 $i$a$-block-Foo$Bar$bar$1$1: I
2 $i$f$block: I 3 $i$f$block: I
3 $i$a$-block-Foo$Bar$bar$1: I 2 $i$a$-block-Foo$Bar$bar$1: I
4 $i$f$block: I 1 $i$f$block: I
0 this: LFoo$Bar; 0 this: LFoo$Bar;
} }
} }
@@ -25,8 +25,8 @@ public final class Foo : java/lang/Object {
public final void foo() { public final void foo() {
Local variables: Local variables:
1 $i$a$-block-Foo$foo$1: I 2 $i$a$-block-Foo$foo$1: I
2 $i$f$block: I 1 $i$f$block: I
0 this: LFoo; 0 this: LFoo;
} }
} }
@@ -7,9 +7,9 @@ public final class InlineReceiversKt : java/lang/Object {
public final static void foo(java.lang.String $receiver, int $i$a$-block-InlineReceiversKt$foo$1) { public final static void foo(java.lang.String $receiver, int $i$a$-block-InlineReceiversKt$foo$1) {
Local variables: Local variables:
3 $receiver: J 4 $receiver: J
5 $i$a$-block-InlineReceiversKt$foo$1: I 6 $i$a$-block-InlineReceiversKt$foo$1: I
6 $i$f$block: I 3 $i$f$block: I
2 x: Z 2 x: Z
0 $receiver: Ljava/lang/String; 0 $receiver: Ljava/lang/String;
1 count: I 1 count: I
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: list.kt // FILE: list.kt
val intList = listOf(1, 2, 3) val intList = listOf(1, 2, 3)
@@ -28,7 +27,8 @@ fun box(): String {
// -- no compareTo // -- no compareTo
// 0 compareTo // 0 compareTo
// -- comparisons are properly fused with conditional jumps // -- comparisons are properly fused with conditional jumps
// 0 ICONST_0 // comparisons: 0 + fake inline variables: 8
// 8 ICONST_0
// 1 IF_ICMPGE // 1 IF_ICMPGE
// 1 IF_ICMPLE // 1 IF_ICMPLE
// 4 LCMP // 4 LCMP
@@ -1,3 +1,4 @@
// IGNORE_BACKEND: JVM_IR
inline fun <R, T> foo(x : R, y : R, block : (R, R) -> T) : T { inline fun <R, T> foo(x : R, y : R, block : (R, R) -> T) : T {
return block(x, y) return block(x, y)
@@ -16,19 +17,20 @@ fun bar() {
// 0 valueOf // 0 valueOf
// 0 Value\s\(\) // 0 Value\s\(\)
// 1 LOCALVARIABLE x I (.*) 5 // 1 LOCALVARIABLE x I (.*) 6
// 1 LOCALVARIABLE y I (.*) 4 // 1 LOCALVARIABLE y I (.*) 5
// 1 LOCALVARIABLE x J (.*) 6 // 1 LOCALVARIABLE x J (.*) 7
// 1 LOCALVARIABLE y J (.*) 4 // 1 LOCALVARIABLE y J (.*) 5
// 1 LOCALVARIABLE x F (.*) 5 // 1 LOCALVARIABLE x F (.*) 6
// 1 LOCALVARIABLE y F (.*) 4 // 1 LOCALVARIABLE y F (.*) 5
// 1 LOCALVARIABLE x D (.*) 6 // 1 LOCALVARIABLE x D (.*) 7
// 1 LOCALVARIABLE y D (.*) 4 // 1 LOCALVARIABLE y D (.*) 5
// 1 LOCALVARIABLE x B (.*) 5 // 1 LOCALVARIABLE x B (.*) 6
// 1 LOCALVARIABLE y B (.*) 4 // 1 LOCALVARIABLE y B (.*) 5
// 1 LOCALVARIABLE x S (.*) 5 // 1 LOCALVARIABLE x S (.*) 6
// 1 LOCALVARIABLE y S (.*) 4 // 1 LOCALVARIABLE y S (.*) 5
// 1 LOCALVARIABLE x C (.*) 5 // 1 LOCALVARIABLE x C (.*) 6
// 1 LOCALVARIABLE y C (.*) 4 // 1 LOCALVARIABLE y C (.*) 5
// 1 LOCALVARIABLE x Z (.*) 5 // 1 LOCALVARIABLE x Z (.*) 6
// 1 LOCALVARIABLE y Z (.*) 4 // 1 LOCALVARIABLE y Z (.*) 5
@@ -19,12 +19,12 @@ fun box(): String {
// Shared variable slots (x1, x2): // Shared variable slots (x1, x2):
// 4 ILOAD 0 // 4 ILOAD 2
// 4 ISTORE 0 // 4 ISTORE 2
// Temporary variable slots for 'x2++': // Temporary variable slots for 'x2++' + store to fake index:
// 0 ILOAD 1 // 0 ILOAD 1
// 1 ISTORE 1 // 2 ISTORE 1
// 0 NEW // 0 NEW
// 0 GETFIELD // 0 GETFIELD
@@ -24,4 +24,4 @@ fun simpleFunVoid(f: () -> Unit): Unit {
return f() return f()
} }
// 7 NOP // 3 NOP
@@ -17,5 +17,5 @@ fun box() : String {
// 0 NULL // 0 NULL
//proper variable start label: after assignment //proper variable start label: after assignment
// 1 LOCALVARIABLE p\$iv Ljava/lang/String; L2 L3 0 // 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
@@ -1,4 +1,4 @@
// WITH_RUNTIME // IGNORE_BACKEND: JVM_IR
class Range<T>(val min: T, val max: T) class Range<T>(val min: T, val max: T)
@@ -1,3 +1,5 @@
// IGNORE_BACKEND: JVM_IR
fun box() { fun box() {
lookAtMe { lookAtMe {
val c = "c" val c = "c"
@@ -9,4 +11,4 @@ inline fun lookAtMe(f: (String) -> Unit) {
f(a) // Should be no unneeded nops on this line, that might be generated for zero-parameters lambda f(a) // Should be no unneeded nops on this line, that might be generated for zero-parameters lambda
} }
// 4 NOP // 3 NOP
@@ -7,11 +7,11 @@ open class A {
// //
// 1 test\$default\(LA;IJLjava/lang/String;ILjava/lang/Object;\)V\s+L0 // 1 test\$default\(LA;IJLjava/lang/String;ILjava/lang/Object;\)V\s+L0
// 1 LOCALVARIABLE this LA; L0 L8 0 // 1 LOCALVARIABLE this LA; L0 L9 0
// 1 LOCALVARIABLE a I L0 L8 1 // 1 LOCALVARIABLE a I L0 L9 1
// 1 LOCALVARIABLE b J L0 L8 2 // 1 LOCALVARIABLE b J L0 L9 2
// 1 LOCALVARIABLE c Ljava/lang/String; L0 L8 4 // 1 LOCALVARIABLE c Ljava/lang/String; L0 L9 4
// 1 LOCALVARIABLE \$i\$f\$test I L5 L8 5 // 1 LOCALVARIABLE \$i\$f\$test I L6 L9 5
// 1 LOCALVARIABLE d I L7 L8 6 // 1 LOCALVARIABLE d I L8 L9 6
@@ -15,4 +15,4 @@ fun main(args: Array<String>) {
} }
/*Threre are two constuctors so we should be sure that we check LOCALVARIABLEs from same method*/ /*Threre are two constuctors so we should be sure that we check LOCALVARIABLEs from same method*/
// 1 LOCALVARIABLE this LInlinedConstuctorWithSuperCallParamsKt\$main\$\$inlined\$test\$1; L0 L7 0\s+LOCALVARIABLE \$super_call_param\$1 Ljava/lang/String; L0 L7 1 // 1 LOCALVARIABLE this LInlinedConstuctorWithSuperCallParamsKt\$main\$\$inlined\$test\$1; L0 L8 0\s+LOCALVARIABLE \$super_call_param\$1 Ljava/lang/String; L0 L8 1
@@ -12,7 +12,8 @@ fun foo() : String {
return foobar(1, 2L, bar(3, 4L, 5.toByte(), "6"), 7.toByte()) return foobar(1, 2L, bar(3, 4L, 5.toByte(), "6"), 7.toByte())
} }
// 9 ISTORE // fake inline variables occupy 7 ISTOREs.
// 16 ISTORE
// 13 ILOAD // 13 ILOAD
// 2 ASTORE // 2 ASTORE
// 8 ALOAD // 8 ALOAD
@@ -14,7 +14,8 @@ fun test() {
val result = foobar(if (1 == 1) true else bar(), foo(), "OK") val result = foobar(if (1 == 1) true else bar(), foo(), "OK")
} }
// 7 ISTORE // fake inline variables occupy 7 ISTOREs.
// 14 ISTORE
// 8 ILOAD // 8 ILOAD
// 2 ASTORE // 2 ASTORE
// 7 ALOAD // 7 ALOAD
@@ -1,3 +1,4 @@
// IGNORE_BACKEND: JVM_IR
inline fun bar(x: Int) : Int { inline fun bar(x: Int) : Int {
return x return x
@@ -9,6 +10,7 @@ fun foo() : Int {
return foobar(1, bar(2), 3) return foobar(1, bar(2), 3)
} }
// 3 ISTORE // fake inline variables occupy 2 ISTOREs.
// 5 ISTORE
// 7 ILOAD // 7 ILOAD
// 0 InlineMarker // 0 InlineMarker
@@ -1948,6 +1948,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
runTest("compiler/testData/codegen/bytecodeText/inline/finallyMarkers.kt"); runTest("compiler/testData/codegen/bytecodeText/inline/finallyMarkers.kt");
} }
@TestMetadata("inlineArgumentSlots.kt")
public void testInlineArgumentSlots() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/inline/inlineArgumentSlots.kt");
}
@TestMetadata("inlineReturnsNothing1.kt") @TestMetadata("inlineReturnsNothing1.kt")
public void testInlineReturnsNothing1() throws Exception { public void testInlineReturnsNothing1() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/inline/inlineReturnsNothing1.kt"); runTest("compiler/testData/codegen/bytecodeText/inline/inlineReturnsNothing1.kt");