Do not regenerate objects if all captured lambdas are noinline

This commit is contained in:
pyos
2020-03-18 17:51:30 +01:00
committed by max-kammerer
parent 54e725668f
commit e0a5ab7146
3 changed files with 70 additions and 70 deletions
@@ -97,9 +97,9 @@ class AnonymousObjectTransformationInfo internal constructor(
nameGenerator: NameGenerator
) : this(ownerInternalName, needReification, hashMapOf(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator)
override fun shouldRegenerate(sameModule: Boolean): Boolean =
!alreadyRegenerated &&
(!functionalArguments.isEmpty() || !sameModule || capturedOuterRegenerated || needReification || capturesAnonymousObjectThatMustBeRegenerated)
override fun shouldRegenerate(sameModule: Boolean): Boolean = !alreadyRegenerated &&
(!sameModule || capturedOuterRegenerated || needReification || capturesAnonymousObjectThatMustBeRegenerated ||
functionalArguments.values.any { it != NonInlineableArgumentForInlineableParameterCalledInSuspend })
override fun canRemoveAfterTransformation(): Boolean {
// Note: It is unsafe to remove anonymous class that is referenced by GETSTATIC within lambda