diff --git a/analysis/decompiled/decompiler-to-file-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/file/KotlinClsStubBuilder.kt b/analysis/decompiled/decompiler-to-file-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/file/KotlinClsStubBuilder.kt index 64ebe9f3059..b715c17470c 100644 --- a/analysis/decompiled/decompiler-to-file-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/file/KotlinClsStubBuilder.kt +++ b/analysis/decompiled/decompiler-to-file-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/file/KotlinClsStubBuilder.kt @@ -31,6 +31,8 @@ import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue import org.jetbrains.kotlin.resolve.constants.ConstantValue import org.jetbrains.kotlin.resolve.constants.KClassValue import org.jetbrains.kotlin.serialization.deserialization.getClassId +import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.storage.StorageManager open class KotlinClsStubBuilder : ClsStubBuilder() { override fun getStubVersion() = ClassFileStubBuilder.STUB_VERSION + KotlinStubVersions.CLASSFILE_STUB_VERSION @@ -128,8 +130,13 @@ private class AnnotationLoaderForClassFileStubBuilder( private val cachedFileContent: ByteArray ) : AbstractBinaryClassAnnotationLoader(kotlinClassFinder) { + private val storage = + LockBasedStorageManager.NO_LOCKS.createMemoizedFunction { kotlinClass -> + loadAnnotationsAndInitializers(kotlinClass) + } + override fun getAnnotationsContainer(binaryClass: KotlinJvmBinaryClass): AnnotationsClassIdContainer { - return loadAnnotationsAndInitializers(binaryClass) + return storage(binaryClass) } override fun getCachedFileContent(kotlinClass: KotlinJvmBinaryClass): ByteArray? {