[atomicfu] Don't create Volatile's constructor for each call site

^KT-64971 Fixed
This commit is contained in:
Sergej Jaskiewicz
2024-01-15 14:10:20 +01:00
committed by Space Team
parent ddd71851cf
commit 2e6b7a3856
@@ -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 }
}