From 4bd08e5e0cb89fbb0e5f0f5f74e591e98beff20a Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 22 Oct 2020 14:59:39 +0200 Subject: [PATCH] IR: clear callToSubstitutedDescriptorMap for each file to avoid leaking memory This map is populated during psi2ir and is only used in insertImplicitCasts, after which it makes sense to clear it, otherwise it strongly references a lot of descriptors for calls in other files which would never be used. --- .../org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt | 2 +- .../org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt index d8a5263b531..703e506eeb5 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt @@ -32,7 +32,7 @@ class GeneratorContext( val constantValueGenerator: ConstantValueGenerator, override val irBuiltIns: IrBuiltIns ) : IrGeneratorContext { - val callToSubstitutedDescriptorMap = mutableMapOf() + internal val callToSubstitutedDescriptorMap = mutableMapOf() val sourceManager = PsiSourceManager() diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt index 45879220811..cd44ab7cf33 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ModuleGenerator.kt @@ -90,7 +90,10 @@ class ModuleGenerator( } irFile.acceptChildrenVoid(IrSyntheticDeclarationGenerator(context)) + insertImplicitCasts(irFile, context) + context.callToSubstitutedDescriptorMap.clear() + irFile.acceptVoid(AnnotationGenerator(context)) irFile.patchDeclarationParents()