[FIR2IR] Extract logic of IR declarations generation into separate component. Part 4
Move caching of created IrAnonymousInitializer back to Fir2IrDeclarationStorage Fix all call-sites
This commit is contained in:
committed by
Space Team
parent
5a46563a2c
commit
6621b16e77
@@ -486,7 +486,7 @@ class Fir2IrConverter(
|
||||
classifierStorage.getIrEnumEntry(declaration, parent as IrClass)
|
||||
}
|
||||
is FirAnonymousInitializer -> {
|
||||
callablesGenerator.createIrAnonymousInitializer(declaration, parent as IrClass)
|
||||
declarationStorage.getOrCreateIrAnonymousInitializer(declaration, parent as IrClass)
|
||||
}
|
||||
is FirTypeAlias -> {
|
||||
// DO NOTHING
|
||||
|
||||
+9
-2
@@ -48,6 +48,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerAbiStability
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.getOrPut
|
||||
import org.jetbrains.kotlin.utils.threadLocal
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
@@ -475,8 +476,14 @@ class Fir2IrDeclarationStorage(
|
||||
return irFunction
|
||||
}
|
||||
|
||||
fun getCachedIrAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer): IrAnonymousInitializer? =
|
||||
initializerCache[anonymousInitializer]
|
||||
fun getOrCreateIrAnonymousInitializer(
|
||||
anonymousInitializer: FirAnonymousInitializer,
|
||||
containingIrClass: IrClass,
|
||||
): IrAnonymousInitializer {
|
||||
return initializerCache.computeIfAbsent(anonymousInitializer) {
|
||||
callablesGenerator.createIrAnonymousInitializer(anonymousInitializer, containingIrClass)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(IrSymbolInternals::class)
|
||||
fun getCachedIrConstructor(
|
||||
|
||||
@@ -387,7 +387,7 @@ class Fir2IrVisitor(
|
||||
anonymousInitializer: FirAnonymousInitializer,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(session, anonymousInitializer) {
|
||||
val irAnonymousInitializer = declarationStorage.getCachedIrAnonymousInitializer(anonymousInitializer)!!
|
||||
val irAnonymousInitializer = declarationStorage.getOrCreateIrAnonymousInitializer(anonymousInitializer, conversionScope.lastClass()!!)
|
||||
declarationStorage.enterScope(irAnonymousInitializer.symbol)
|
||||
irAnonymousInitializer.body = convertToIrBlockBody(anonymousInitializer.body!!)
|
||||
declarationStorage.leaveScope(irAnonymousInitializer.symbol)
|
||||
|
||||
-1
@@ -367,7 +367,6 @@ class Fir2IrCallableDeclarationsGenerator(val components: Fir2IrComponents) : Fi
|
||||
irParent.descriptor
|
||||
).apply {
|
||||
this.parent = irParent
|
||||
initializerCache[anonymousInitializer] = this
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user