Optimize/simplify loadFunctions(Properties)ByName in FIR deserializer

This commit is contained in:
Mikhail Glukhikh
2020-12-08 13:10:30 +03:00
parent e51503ab42
commit 7b277600a9
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.ThreadSafeMutableState import org.jetbrains.kotlin.fir.ThreadSafeMutableState
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl
import org.jetbrains.kotlin.fir.deserialization.FirConstDeserializer import org.jetbrains.kotlin.fir.deserialization.FirConstDeserializer
import org.jetbrains.kotlin.fir.deserialization.FirDeserializationContext import org.jetbrains.kotlin.fir.deserialization.FirDeserializationContext
import org.jetbrains.kotlin.fir.deserialization.deserializeClassToSymbol import org.jetbrains.kotlin.fir.deserialization.deserializeClassToSymbol
@@ -366,20 +365,16 @@ class KotlinDeserializedJvmSymbolsProvider(
private fun loadFunctionsByName(part: PackagePartsCacheData, name: Name): List<FirCallableSymbol<*>> { private fun loadFunctionsByName(part: PackagePartsCacheData, name: Name): List<FirCallableSymbol<*>> {
val functionIds = part.topLevelFunctionNameIndex[name] ?: return emptyList() val functionIds = part.topLevelFunctionNameIndex[name] ?: return emptyList()
return functionIds.map { part.proto.getFunction(it) } return functionIds.map {
.map { part.context.memberDeserializer.loadFunction(part.proto.getFunction(it)).symbol
val firNamedFunction = part.context.memberDeserializer.loadFunction(it) as FirSimpleFunctionImpl }
firNamedFunction.symbol
}
} }
private fun loadPropertiesByName(part: PackagePartsCacheData, name: Name): List<FirCallableSymbol<*>> { private fun loadPropertiesByName(part: PackagePartsCacheData, name: Name): List<FirCallableSymbol<*>> {
val propertyIds = part.topLevelPropertyNameIndex[name] ?: return emptyList() val propertyIds = part.topLevelPropertyNameIndex[name] ?: return emptyList()
return propertyIds.map { part.proto.getProperty(it) } return propertyIds.map {
.map { part.context.memberDeserializer.loadProperty(part.proto.getProperty(it)).symbol
val firProperty = part.context.memberDeserializer.loadProperty(it) }
firProperty.symbol
}
} }
@FirSymbolProviderInternals @FirSymbolProviderInternals