From fc95889115f97575d0dc9274a330fc2ed95b95c3 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 20 Dec 2022 11:23:06 +0100 Subject: [PATCH] Move isCompilingAgainstJdk8OrLater to JvmBackendContext This should solve multi-thread synchronization problem Probably #KT-55483 Fixed --- .../backend/jvm/lower/AdditionalClassAnnotationLowering.kt | 6 +----- .../org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt | 4 ++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt index 5e2118cd6d9..3b29acb771a 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt @@ -39,12 +39,8 @@ internal val additionalClassAnnotationPhase = makeIrFilePhase( private class AdditionalClassAnnotationLowering(private val context: JvmBackendContext) : ClassLoweringPass { private val symbols = context.ir.symbols.javaAnnotations - private val isCompilingAgainstJdk8OrLater = - context.state.jvmBackendClassResolver.resolveToClassDescriptors( - Type.getObjectType("java/lang/invoke/LambdaMetafactory") - ).isNotEmpty() private val noNewJavaAnnotationTargets = - context.state.noNewJavaAnnotationTargets || !isCompilingAgainstJdk8OrLater + context.state.noNewJavaAnnotationTargets || !context.isCompilingAgainstJdk8OrLater override fun lower(irClass: IrClass) { if (!irClass.isAnnotationClass) return diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt index 8c2ad2d0a15..baa23430e54 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt @@ -93,6 +93,10 @@ class JvmBackendContext( private val localClassType = ConcurrentHashMap() + val isCompilingAgainstJdk8OrLater = state.jvmBackendClassResolver.resolveToClassDescriptors( + Type.getObjectType("java/lang/invoke/LambdaMetafactory") + ).isNotEmpty() + fun getLocalClassType(container: IrAttributeContainer): Type? = localClassType[container.attributeOwnerId]