From ab41017e5854783a82e35a209c59e75a35b16edd Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 13 Jul 2017 09:55:48 +0300 Subject: [PATCH] Cache deserialized inline function bodies --- .../kotlin/backend/konan/serialization/SerializerVisitor.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializerVisitor.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializerVisitor.kt index f0021862c27..76dd259ef5d 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializerVisitor.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializerVisitor.kt @@ -28,7 +28,9 @@ import org.jetbrains.kotlin.backend.konan.KonanPhase internal class DeserializerDriver(val context: Context) { - internal fun deserializeInlineBody(descriptor: FunctionDescriptor): IrDeclaration? { + private val cache = mutableMapOf() + + internal fun deserializeInlineBody(descriptor: FunctionDescriptor): IrDeclaration? = cache.getOrPut(descriptor) { if (!descriptor.needsSerializedIr) return null if (!descriptor.isDeserializableCallable) return null @@ -45,7 +47,7 @@ internal class DeserializerDriver(val context: Context) { if (context.phase!!.verbose) e.printStackTrace() } } - return deserializedIr + deserializedIr } internal fun dumpAllInlineBodies() {