[FIR] optimize direct allocation of empty ConeTypeProjection arrays
On the snapshot from KTIJ-26260 empty ConeTypeProjection arrays take about 10mb
This commit is contained in:
committed by
Space Team
parent
04d330edae
commit
bdfc68468f
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.buildEmptyExpressionBlock
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.toLookupTag
|
||||
@@ -50,7 +51,11 @@ fun FirRegularClassBuilder.generateValuesFunction(
|
||||
type = ConeClassLikeTypeImpl(
|
||||
StandardClassIds.Array.toLookupTag(),
|
||||
arrayOf(
|
||||
ConeClassLikeTypeImpl(this@generateValuesFunction.symbol.toLookupTag(), emptyArray(), isNullable = false)
|
||||
ConeClassLikeTypeImpl(
|
||||
this@generateValuesFunction.symbol.toLookupTag(),
|
||||
ConeTypeProjection.EMPTY_ARRAY,
|
||||
isNullable = false
|
||||
)
|
||||
),
|
||||
isNullable = false
|
||||
)
|
||||
@@ -145,7 +150,7 @@ fun FirRegularClassBuilder.generateEntriesGetter(
|
||||
type = ConeClassLikeTypeImpl(
|
||||
StandardClassIds.EnumEntries.toLookupTag(),
|
||||
arrayOf(
|
||||
ConeClassLikeTypeImpl(this@generateEntriesGetter.symbol.toLookupTag(), emptyArray(), isNullable = false)
|
||||
ConeClassLikeTypeImpl(this@generateEntriesGetter.symbol.toLookupTag(), ConeTypeProjection.EMPTY_ARRAY, isNullable = false)
|
||||
),
|
||||
isNullable = false
|
||||
)
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.ConeTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.toLookupTag
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -29,7 +30,7 @@ object StandardTypes {
|
||||
}
|
||||
|
||||
private fun ClassId.createType(isNullable: Boolean = false): ConeClassLikeType =
|
||||
ConeClassLikeTypeImpl(this.toLookupTag(), emptyArray(), isNullable)
|
||||
ConeClassLikeTypeImpl(this.toLookupTag(), ConeTypeProjection.EMPTY_ARRAY, isNullable)
|
||||
|
||||
fun ConeClassLikeType.isDouble(): Boolean = lookupTag.classId == StandardClassIds.Double
|
||||
fun ConeClassLikeType.isFloat(): Boolean = lookupTag.classId == StandardClassIds.Float
|
||||
|
||||
@@ -84,7 +84,7 @@ class ConeIntegerLiteralConstantTypeImpl(
|
||||
}
|
||||
|
||||
private fun createType(classId: ClassId): ConeClassLikeType {
|
||||
return ConeClassLikeTypeImpl(classId.toLookupTag(), emptyArray(), false)
|
||||
return ConeClassLikeTypeImpl(classId.toLookupTag(), EMPTY_ARRAY, false)
|
||||
}
|
||||
|
||||
private val INT_RANGE = Int.MIN_VALUE.toLong()..Int.MAX_VALUE.toLong()
|
||||
@@ -147,7 +147,7 @@ private object ConeIntegerLiteralTypeExtensions {
|
||||
}
|
||||
|
||||
fun createClassLikeType(classId: ClassId): ConeClassLikeType {
|
||||
return ConeClassLikeTypeImpl(classId.toLookupTag(), emptyArray(), false)
|
||||
return ConeClassLikeTypeImpl(classId.toLookupTag(), ConeTypeProjection.EMPTY_ARRAY, false)
|
||||
}
|
||||
|
||||
fun ConeIntegerLiteralType.getApproximatedTypeImpl(expectedType: ConeKotlinType?): ConeClassLikeType {
|
||||
|
||||
Reference in New Issue
Block a user