From 876ee265f2a7cd2c3042e7128e504f158a8f2502 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 31 Jul 2020 15:37:55 +0300 Subject: [PATCH] [KLIB] Fix memory leak in fake override resolver --- .../kotlin/backend/common/overrides/FakeOverrides.kt | 2 ++ .../kotlin/backend/common/overrides/IrOverridingUtil.kt | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt index 8e4811af2d5..cd5cf15f938 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt @@ -158,6 +158,8 @@ class FakeOverrideBuilder( fun provideFakeOverrides(klass: IrClass) { buildFakeOverrideChainsForClass(klass) + propertyOverriddenSymbols.clear() + irOverridingUtil.clear() haveFakeOverrides.add(klass) } } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/IrOverridingUtil.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/IrOverridingUtil.kt index 2d68539c9f7..e163ee4561f 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/IrOverridingUtil.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/IrOverridingUtil.kt @@ -59,6 +59,11 @@ class IrOverridingUtil( private val IrOverridableMember.original get() = originals[this] ?: error("No original for ${this.render()}") private val originalSuperTypes = mutableMapOf() + fun clear() { + originals.clear() + originalSuperTypes.clear() + } + private var IrOverridableMember.overriddenSymbols: List get() = when (this) { is IrSimpleFunction -> this.overriddenSymbols