Do not regenerate objects if all captured lambdas are noinline
This commit is contained in:
@@ -97,9 +97,9 @@ class AnonymousObjectTransformationInfo internal constructor(
|
|||||||
nameGenerator: NameGenerator
|
nameGenerator: NameGenerator
|
||||||
) : this(ownerInternalName, needReification, hashMapOf(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator)
|
) : this(ownerInternalName, needReification, hashMapOf(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator)
|
||||||
|
|
||||||
override fun shouldRegenerate(sameModule: Boolean): Boolean =
|
override fun shouldRegenerate(sameModule: Boolean): Boolean = !alreadyRegenerated &&
|
||||||
!alreadyRegenerated &&
|
(!sameModule || capturedOuterRegenerated || needReification || capturesAnonymousObjectThatMustBeRegenerated ||
|
||||||
(!functionalArguments.isEmpty() || !sameModule || capturedOuterRegenerated || needReification || capturesAnonymousObjectThatMustBeRegenerated)
|
functionalArguments.values.any { it != NonInlineableArgumentForInlineableParameterCalledInSuspend })
|
||||||
|
|
||||||
override fun canRemoveAfterTransformation(): Boolean {
|
override fun canRemoveAfterTransformation(): Boolean {
|
||||||
// Note: It is unsafe to remove anonymous class that is referenced by GETSTATIC within lambda
|
// Note: It is unsafe to remove anonymous class that is referenced by GETSTATIC within lambda
|
||||||
|
|||||||
+1
-1
@@ -661,7 +661,7 @@ class LocalDeclarationsLowering(
|
|||||||
localFunctionContext.remapType(p.type),
|
localFunctionContext.remapType(p.type),
|
||||||
null,
|
null,
|
||||||
isCrossinline = (capturedValue as? IrValueParameterSymbol)?.owner?.isCrossinline == true,
|
isCrossinline = (capturedValue as? IrValueParameterSymbol)?.owner?.isCrossinline == true,
|
||||||
isNoinline = false
|
isNoinline = (capturedValue as? IrValueParameterSymbol)?.owner?.isNoinline == true
|
||||||
).also {
|
).also {
|
||||||
parameterDescriptor.bind(it)
|
parameterDescriptor.bind(it)
|
||||||
it.parent = newDeclaration
|
it.parent = newDeclaration
|
||||||
|
|||||||
+66
-66
@@ -212,28 +212,6 @@ public final class TcoContinuationKt$transform$$inlined$flow$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$1$lambda$1$1 {
|
|
||||||
field label: int
|
|
||||||
synthetic field result: java.lang.Object
|
|
||||||
synthetic final field this$0: TcoContinuationKt$transform$$inlined$flow$1$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$1$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$1$lambda$1$1
|
|
||||||
public method <init>(p0: TcoContinuationKt$transform$$inlined$flow$1$lambda$1, p1: kotlin.coroutines.Continuation): void
|
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$1$lambda$1 {
|
|
||||||
synthetic final field $this$inlined: FlowCollector
|
|
||||||
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$1$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$1$lambda$1$1
|
|
||||||
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$1 {
|
public final class TcoContinuationKt$transform$$inlined$flow$1 {
|
||||||
synthetic final field $this$inlined: Flow
|
synthetic final field $this$inlined: Flow
|
||||||
@@ -256,28 +234,6 @@ public final class TcoContinuationKt$transform$$inlined$flow$2$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$2$lambda$1$1 {
|
|
||||||
field label: int
|
|
||||||
synthetic field result: java.lang.Object
|
|
||||||
synthetic final field this$0: TcoContinuationKt$transform$$inlined$flow$2$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$2$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$2$lambda$1$1
|
|
||||||
public method <init>(p0: TcoContinuationKt$transform$$inlined$flow$2$lambda$1, p1: kotlin.coroutines.Continuation): void
|
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$2$lambda$1 {
|
|
||||||
synthetic final field $this$inlined: FlowCollector
|
|
||||||
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$2$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$2$lambda$1$1
|
|
||||||
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$2 {
|
public final class TcoContinuationKt$transform$$inlined$flow$2 {
|
||||||
synthetic final field $this$inlined: Flow
|
synthetic final field $this$inlined: Flow
|
||||||
@@ -300,28 +256,6 @@ public final class TcoContinuationKt$transform$$inlined$flow$3$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$3$lambda$1$1 {
|
|
||||||
field label: int
|
|
||||||
synthetic field result: java.lang.Object
|
|
||||||
synthetic final field this$0: TcoContinuationKt$transform$$inlined$flow$3$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$3$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$3$lambda$1$1
|
|
||||||
public method <init>(p0: TcoContinuationKt$transform$$inlined$flow$3$lambda$1, p1: kotlin.coroutines.Continuation): void
|
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$3$lambda$1 {
|
|
||||||
synthetic final field $this$inlined: FlowCollector
|
|
||||||
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$3$lambda$1
|
|
||||||
inner class TcoContinuationKt$transform$$inlined$flow$3$lambda$1$1
|
|
||||||
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class TcoContinuationKt$transform$$inlined$flow$3 {
|
public final class TcoContinuationKt$transform$$inlined$flow$3 {
|
||||||
synthetic final field $this$inlined: Flow
|
synthetic final field $this$inlined: Flow
|
||||||
@@ -333,6 +267,72 @@ public final class TcoContinuationKt$transform$$inlined$flow$3 {
|
|||||||
public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$1$1 {
|
||||||
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
|
synthetic final field this$0: TcoContinuationKt$transform$lambda-1$$inlined$collect$1
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$1
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$1$1
|
||||||
|
public method <init>(p0: TcoContinuationKt$transform$lambda-1$$inlined$collect$1, p1: kotlin.coroutines.Continuation): void
|
||||||
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$1 {
|
||||||
|
synthetic final field $this$inlined: FlowCollector
|
||||||
|
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$1
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$1$1
|
||||||
|
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$2$1 {
|
||||||
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
|
synthetic final field this$0: TcoContinuationKt$transform$lambda-1$$inlined$collect$2
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$2
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$2$1
|
||||||
|
public method <init>(p0: TcoContinuationKt$transform$lambda-1$$inlined$collect$2, p1: kotlin.coroutines.Continuation): void
|
||||||
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$2 {
|
||||||
|
synthetic final field $this$inlined: FlowCollector
|
||||||
|
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$2
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$2$1
|
||||||
|
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$3$1 {
|
||||||
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
|
synthetic final field this$0: TcoContinuationKt$transform$lambda-1$$inlined$collect$3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$3$1
|
||||||
|
public method <init>(p0: TcoContinuationKt$transform$lambda-1$$inlined$collect$3, p1: kotlin.coroutines.Continuation): void
|
||||||
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$3 {
|
||||||
|
synthetic final field $this$inlined: FlowCollector
|
||||||
|
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$3
|
||||||
|
inner class TcoContinuationKt$transform$lambda-1$$inlined$collect$3$1
|
||||||
|
public method <init>(p0: kotlin.jvm.functions.Function3, p1: FlowCollector): void
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public @org.jetbrains.annotations.Nullable method emit(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class TcoContinuationKt {
|
public final class TcoContinuationKt {
|
||||||
inner class TcoContinuationKt$collect$2
|
inner class TcoContinuationKt$collect$2
|
||||||
|
|||||||
Reference in New Issue
Block a user