JVM IR: improve generation of receiver for bound callable references

Trick codegen into generating getfield from the anonymous class instead
of its supertype (e.g. kotlin.jvm.internal.FunctionReference,
PropertyReference or AdaptedFunctionReference). This gets rid of
unnecessary accessors in some cases, and will help in the subsequent
commit that changes logic around access to fields from Java
superclasses.
This commit is contained in:
Alexander Udalov
2023-02-10 13:39:38 +01:00
parent 4ad594a3cd
commit 641d636c45
4 changed files with 20 additions and 8 deletions
@@ -4,7 +4,6 @@ synthetic final class A$testDefaultArguments$1 {
enclosing method A.testDefaultArguments()V
inner (anonymous) class A$testDefaultArguments$1
method <init>(p0: java.lang.Object): void
public synthetic final static method access$getReceiver$p(p0: A$testDefaultArguments$1): java.lang.Object
public synthetic bridge method invoke(): java.lang.Object
public final @org.jetbrains.annotations.NotNull method invoke(): java.lang.String
}
@@ -15,7 +14,6 @@ synthetic final class A$testDefaultArguments$2 {
enclosing method A.testDefaultArguments()V
inner (anonymous) class A$testDefaultArguments$2
method <init>(p0: java.lang.Object): void
public synthetic final static method access$getReceiver$p(p0: A$testDefaultArguments$2): java.lang.Object
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
}