Use GETFIELD instead of unbox-impl inside inline classes

#KT-36783 Fixed
This commit is contained in:
Ilmir Usmanov
2021-05-04 03:01:36 +02:00
committed by Space
parent e5f3091f2c
commit c4ddf3530d
15 changed files with 52 additions and 37 deletions
@@ -1,7 +1,4 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND_FIR: JVM_IR
// 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() {}
@@ -19,7 +16,12 @@ inline class Foo(val x: Int) {
// 1 INVOKESTATIC Foo\.withParam-impl \(ILjava/lang/String;\)V
// 1 INVOKESTATIC Foo\.withInlineClassParam-GWb7d6U \(II\)V
// 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 INVOKEVIRTUAL Foo.unbox-impl \(\)I
// JVM_TEMPLATES:
// 2 INVOKEVIRTUAL java/lang/StringBuilder\.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder;
// JVM_IR_TEMPLATES:
// 1 INVOKEVIRTUAL java/lang/StringBuilder\.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder;