From 2e6b7a3856dddea6ed169bf5002c39fdecfd0153 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Mon, 15 Jan 2024 14:10:20 +0100 Subject: [PATCH] [atomicfu] Don't create `Volatile`'s constructor for each call site ^KT-64971 Fixed --- .../compiler/backend/common/AbstractAtomicSymbols.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt index f6bab02e518..82fc896fdc5 100644 --- a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt +++ b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection import org.jetbrains.kotlin.ir.util.createImplicitParameterDeclarationWithWrappedDescriptor import org.jetbrains.kotlin.ir.util.getSimpleFunction +import org.jetbrains.kotlin.ir.util.primaryConstructor import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -39,7 +40,8 @@ abstract class AbstractAtomicSymbols( abstract val volatileAnnotationClass: IrClass val volatileAnnotationConstructorCall: IrConstructorCall get() { - val volatileAnnotationConstructor = buildAnnotationConstructor(volatileAnnotationClass) + val volatileAnnotationConstructor = volatileAnnotationClass.primaryConstructor + ?: error("Missing constructor in Volatile annotation class") return IrConstructorCallImpl.fromSymbolOwner(volatileAnnotationConstructor.returnType, volatileAnnotationConstructor.symbol) } @@ -142,7 +144,4 @@ abstract class AbstractAtomicSymbols( parent = irPackage createImplicitParameterDeclarationWithWrappedDescriptor() }.symbol - - private fun buildAnnotationConstructor(annotationClass: IrClass): IrConstructor = - annotationClass.addConstructor { isPrimary = true } }