[atomicfu] Don't create Volatile's constructor for each call site
^KT-64971 Fixed
This commit is contained in:
committed by
Space Team
parent
ddd71851cf
commit
2e6b7a3856
+3
-4
@@ -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.types.impl.makeTypeProjection
|
||||||
import org.jetbrains.kotlin.ir.util.createImplicitParameterDeclarationWithWrappedDescriptor
|
import org.jetbrains.kotlin.ir.util.createImplicitParameterDeclarationWithWrappedDescriptor
|
||||||
import org.jetbrains.kotlin.ir.util.getSimpleFunction
|
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.ir.util.render
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -39,7 +40,8 @@ abstract class AbstractAtomicSymbols(
|
|||||||
abstract val volatileAnnotationClass: IrClass
|
abstract val volatileAnnotationClass: IrClass
|
||||||
val volatileAnnotationConstructorCall: IrConstructorCall
|
val volatileAnnotationConstructorCall: IrConstructorCall
|
||||||
get() {
|
get() {
|
||||||
val volatileAnnotationConstructor = buildAnnotationConstructor(volatileAnnotationClass)
|
val volatileAnnotationConstructor = volatileAnnotationClass.primaryConstructor
|
||||||
|
?: error("Missing constructor in Volatile annotation class")
|
||||||
return IrConstructorCallImpl.fromSymbolOwner(volatileAnnotationConstructor.returnType, volatileAnnotationConstructor.symbol)
|
return IrConstructorCallImpl.fromSymbolOwner(volatileAnnotationConstructor.returnType, volatileAnnotationConstructor.symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +144,4 @@ abstract class AbstractAtomicSymbols(
|
|||||||
parent = irPackage
|
parent = irPackage
|
||||||
createImplicitParameterDeclarationWithWrappedDescriptor()
|
createImplicitParameterDeclarationWithWrappedDescriptor()
|
||||||
}.symbol
|
}.symbol
|
||||||
|
|
||||||
private fun buildAnnotationConstructor(annotationClass: IrClass): IrConstructor =
|
|
||||||
annotationClass.addConstructor { isPrimary = true }
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user