From 7f4d9ddde50418671ab15de8af2aa78b62c5758e Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Wed, 17 May 2023 16:56:22 +0200 Subject: [PATCH] [PL] Optimization: Avoid excessive type checks in IR type operators --- .../common/linkage/partial/PartiallyLinkedIrTreePatcher.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt index 16698382c03..a79f99772a4 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue import org.jetbrains.kotlin.utils.compact import java.util.* import kotlin.properties.Delegates @@ -479,7 +480,7 @@ internal class PartiallyLinkedIrTreePatcher( } override fun visitTypeOperator(expression: IrTypeOperatorCall) = expression.maybeThrowLinkageError { - checkExpressionType(typeOperand) + (typeOperand !== type).ifTrue { checkExpressionType(typeOperand) } } override fun visitDeclarationReference(expression: IrDeclarationReference) = expression.maybeThrowLinkageError {