Do not do unnecessary writeBooleanAttribute

Merge-request: KT-MR-10945
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
This commit is contained in:
Vladimir Dolzhenko
2023-07-05 09:27:04 +00:00
committed by Space Team
parent 988dbfc5c8
commit 3c8c20f8d2
@@ -42,10 +42,11 @@ class ClsKotlinBinaryClassCache {
return false return false
} }
getKotlinBinaryFromCache(file)?.let { val binaryFromCache = getKotlinBinaryFromCache(file)
binaryFromCache?.let {
return it.isKotlinBinary return it.isKotlinBinary
} }
return kotlinJvmBinaryClass(file, fileContent, JvmMetadataVersion.INSTANCE) != null return kotlinJvmBinaryClass(file, fileContent, JvmMetadataVersion.INSTANCE, binaryFromCache?.isKotlinBinary) != null
} }
fun getKotlinBinaryClass(file: VirtualFile, fileContent: ByteArray? = null): KotlinJvmBinaryClass? { fun getKotlinBinaryClass(file: VirtualFile, fileContent: ByteArray? = null): KotlinJvmBinaryClass? {
@@ -54,13 +55,19 @@ class ClsKotlinBinaryClassCache {
return null return null
} }
return kotlinJvmBinaryClass(file, fileContent, cached?.headerData?.metadataVersion ?: JvmMetadataVersion.INSTANCE) return kotlinJvmBinaryClass(
file,
fileContent,
cached?.headerData?.metadataVersion ?: JvmMetadataVersion.INSTANCE,
cached?.isKotlinBinary
)
} }
private fun kotlinJvmBinaryClass( private fun kotlinJvmBinaryClass(
file: VirtualFile, file: VirtualFile,
fileContent: ByteArray?, fileContent: ByteArray?,
jvmMetadataVersion: JvmMetadataVersion jvmMetadataVersion: JvmMetadataVersion,
isKotlinBinary: Boolean?
): KotlinJvmBinaryClass? { ): KotlinJvmBinaryClass? {
if (ModelBranch.getFileBranch(file) != null) return null if (ModelBranch.getFileBranch(file) != null) return null
val classFileContent = try { val classFileContent = try {
@@ -75,7 +82,7 @@ class ClsKotlinBinaryClassCache {
val kotlinBinaryClass = classFileContent?.toKotlinJvmBinaryClass() val kotlinBinaryClass = classFileContent?.toKotlinJvmBinaryClass()
val isKotlinBinaryClass = kotlinBinaryClass != null val isKotlinBinaryClass = kotlinBinaryClass != null
if (file is VirtualFileWithId) { if (file is VirtualFileWithId && isKotlinBinaryClass != isKotlinBinary) {
attributeService.writeBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file, isKotlinBinaryClass) attributeService.writeBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file, isKotlinBinaryClass)
} }
@@ -88,7 +95,8 @@ class ClsKotlinBinaryClassCache {
} }
fun getKotlinBinaryClassHeaderData(file: VirtualFile, fileContent: ByteArray? = null): KotlinBinaryClassHeaderData? { fun getKotlinBinaryClassHeaderData(file: VirtualFile, fileContent: ByteArray? = null): KotlinBinaryClassHeaderData? {
getKotlinBinaryFromCache(file)?.let { cached -> val kotlinBinaryData = getKotlinBinaryFromCache(file)
kotlinBinaryData?.let { cached ->
if (!cached.isKotlinBinary) { if (!cached.isKotlinBinary) {
return null return null
} }
@@ -97,7 +105,8 @@ class ClsKotlinBinaryClassCache {
} }
} }
val kotlinBinaryClass = kotlinJvmBinaryClass(file, fileContent, JvmMetadataVersion.INSTANCE) ?: return null val kotlinBinaryClass =
kotlinJvmBinaryClass(file, fileContent, JvmMetadataVersion.INSTANCE, kotlinBinaryData?.isKotlinBinary) ?: return null
return createHeaderInfo(kotlinBinaryClass) return createHeaderInfo(kotlinBinaryClass)
} }