Update bytecode text tests in JVM_IR

This commit is contained in:
Dmitry Petrov
2020-02-17 17:48:50 +03:00
parent 64141b8b38
commit 94d20d9176
20 changed files with 52 additions and 6 deletions
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36646 Don't box primitive values in equality comparison with nullable primitive values in JVM_IR
fun testBoolean1(a: Boolean?, b: Boolean) = a == b
fun testBoolean2(a: Boolean?, b: Boolean) = a != b
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36646 Don't box primitive values in equality comparison with nullable primitive values in JVM_IR
fun testBoolean1(a: Boolean, b: Boolean?) = a == b
fun testBoolean2(a: Boolean, b: Boolean?) = a != b
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36646 Don't box primitive values in equality comparison with nullable primitive values in JVM_IR
fun testBoolean1(a: Boolean, b: Any?) = a == b
fun testBoolean2(a: Boolean, b: Any?) = a != b
@@ -17,5 +17,11 @@ fun infiniteLoop() {
while(true) {}
}
// JVM_TEMPLATES
// 2 GOTO L7
// 1 GOTO L1
// 1 GOTO L1
// JVM_IR_TEMPLATES
// 1 GOTO L6
// 1 GOTO L7
// 1 GOtO L0
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36769 Missing LVT entries for inline function (default) parameters at call site
inline fun test(p: String = "OK"): String {
return p
}
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36771 Missing special code for super calls to inline functions support in JVM_IR
//open modality to method handle check generation
open class A {
inline fun test(p: String = "OK"): String {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
fun test() {
fun local(s: Int) {
}
@@ -6,4 +5,8 @@ fun test() {
local(1)
}
// 2 invoke \(I\)V
// JVM_TEMPLATES
// 2 invoke \(I\)V
// JVM_IR_TEMPLATES
// 1 INVOKESTATIC LocalFunKt\.test\$local \(I\)V
@@ -1,4 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36772 Equality compaison between enums should use reference equality in JVM_IR
enum class Bar {
ONE,
TWO
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36773 Use counter loop when generating 'for' loop over an unsigned range in JVM_IR
fun testUIntRangeLiteral(a: UInt, b: UInt): Int {
var s = 0
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
val xs = listOf<Any>().asSequence()
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
fun <T : Sequence<*>> test(sequence: T): String {
val s = StringBuilder()
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
val xs = listOf("a", "b", "c", "d").asSequence()
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
val xs = listOf("a", "b", "c", "d").asSequence()
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
val xs = listOf("a", "b", "c", "d").asSequence()
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
// FULL_JDK
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO KT-36774 Generate optimized loops over 'xs.withIndex()' in JVM_IR
// TODO: Handle Sequences by extending DefaultIterableHandler.
val xs = listOf("a", "b", "c", "d").asSequence()
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
inline fun <reified T : Enum<T>> myValues(): String {
val values = enumValues<T>()
return "OK"
@@ -14,12 +13,23 @@ fun main() {
value<Z>()
}
// JVM_TEMPLATES
//2 reifiedOperationMarker
//1 INVOKESTATIC kotlin/jvm/internal/Intrinsics\.reifiedOperationMarker \(ILjava/lang/String;\)V\s*ICONST_0\s*ANEWARRAY java/lang/Enum
//1 INVOKESTATIC Z\.values \(\)\[LZ;
//4 valueOf
//1 INVOKESTATIC kotlin/jvm/internal/Intrinsics\.reifiedOperationMarker \(ILjava/lang/String;\)V\s*ACONST_NULL\s*ALOAD 2\s*INVOKESTATIC java/lang/Enum\.valueOf \(Ljava/lang/Class;Ljava/lang/String;\)Ljava/lang/Enum;
//1 INVOKESTATIC Z\.valueOf \(Ljava/lang/String;\)LZ;
//1 public static valueOf
//2 INVOKESTATIC java/lang/Enum.valueOf \(Ljava/lang/Class;Ljava/lang/String;\)Ljava/lang/Enum;
// JVM_IR_TEMPLATES
//2 reifiedOperationMarker
//1 INVOKESTATIC kotlin/jvm/internal/Intrinsics\.reifiedOperationMarker \(ILjava/lang/String;\)V\s*ICONST_0\s*ANEWARRAY java/lang/Enum
//1 INVOKESTATIC Z\.values \(\)\[LZ;
//4 valueOf
//1 INVOKESTATIC kotlin/jvm/internal/Intrinsics\.reifiedOperationMarker \(ILjava/lang/String;\)V\s*ACONST_NULL\s*ALOAD 2\s*INVOKESTATIC java/lang/Enum\.valueOf \(Ljava/lang/Class;Ljava/lang/String;\)Ljava/lang/Enum;
//1 INVOKESTATIC Z\.valueOf \(Ljava/lang/String;\)LZ;
//1 public final static valueOf
// ^ valueOf is generated as 'public final static' in JVM_IR
//2 INVOKESTATIC java/lang/Enum.valueOf \(Ljava/lang/Class;Ljava/lang/String;\)Ljava/lang/Enum;
@@ -1,5 +1,6 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
// TODO KT-36783 Consider generating GETFIELD instructions instead of unbox-impl calls in special methods of inline classes in JVM_IR
inline class UInt(val value: Int)
inline class ULong(val value: Long)
@@ -1,5 +1,6 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
// TODO KT-36783 Consider generating GETFIELD instructions instead of unbox-impl calls in special methods of inline classes in JVM_IR
inline class Foo(val x: Int) {
fun empty() {}
@@ -16,4 +17,8 @@ inline class Foo(val x: Int) {
// 1 INVOKESTATIC Foo\.empty-impl \(I\)V
// 1 INVOKESTATIC Foo\.withParam-impl \(ILjava/lang/String;\)V
// 1 INVOKESTATIC Foo\.withInlineClassParam-GWb7d6U \(II\)V
// 5 INVOKEVIRTUAL
// 5 INVOKEVIRTUAL
// 2 INVOKEVIRTUAL java/lang/StringBuilder\.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder;
// 1 INVOKEVIRTUAL java/lang/StringBuilder\.append \(I\)Ljava/lang/StringBuilder;
// 1 INVOKEVIRTUAL java/lang/StringBuilder.toString \(\)Ljava/lang/String;
// 1 INVOKEVIRTUAL Foo.unbox-impl \(\)I
@@ -1,5 +1,6 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
// TODO KT-36783 Consider generating GETFIELD instructions instead of unbox-impl calls in special methods of inline classes in JVM_IR
inline class UInt(private val value: Int)