[LL] spare some memory on lists
By default, a list with a single element would have capacity of 10; in big numbers, it might be a lot of wasted memory.
This commit is contained in:
+6
-4
@@ -140,19 +140,21 @@ internal open class JvmStubBasedFirDeserializedSymbolProvider(
|
|||||||
foundFunctions: Collection<KtNamedFunction>?,
|
foundFunctions: Collection<KtNamedFunction>?,
|
||||||
): List<FirNamedFunctionSymbol> {
|
): List<FirNamedFunctionSymbol> {
|
||||||
val topLevelFunctions = foundFunctions ?: declarationProvider.getTopLevelFunctions(callableId)
|
val topLevelFunctions = foundFunctions ?: declarationProvider.getTopLevelFunctions(callableId)
|
||||||
return topLevelFunctions
|
val result = ArrayList<FirNamedFunctionSymbol>(topLevelFunctions.size)
|
||||||
.mapNotNull { function ->
|
topLevelFunctions
|
||||||
|
.mapNotNullTo(result) { function ->
|
||||||
val file = function.containingKtFile
|
val file = function.containingKtFile
|
||||||
val virtualFile = file.virtualFile
|
val virtualFile = file.virtualFile
|
||||||
if (virtualFile.extension == MetadataPackageFragment.METADATA_FILE_EXTENSION) return@mapNotNull null
|
if (virtualFile.extension == MetadataPackageFragment.METADATA_FILE_EXTENSION) return@mapNotNullTo null
|
||||||
if (initialOrigin != FirDeclarationOrigin.BuiltIns && file.packageFqName.asString()
|
if (initialOrigin != FirDeclarationOrigin.BuiltIns && file.packageFqName.asString()
|
||||||
.replace(".", "/") + "/" + virtualFile.nameWithoutExtension in KotlinBuiltins
|
.replace(".", "/") + "/" + virtualFile.nameWithoutExtension in KotlinBuiltins
|
||||||
) return@mapNotNull null
|
) return@mapNotNullTo null
|
||||||
val symbol = FirNamedFunctionSymbol(callableId)
|
val symbol = FirNamedFunctionSymbol(callableId)
|
||||||
val rootContext =
|
val rootContext =
|
||||||
StubBasedFirDeserializationContext.createRootContext(session, moduleData, callableId, function, symbol, initialOrigin)
|
StubBasedFirDeserializationContext.createRootContext(session, moduleData, callableId, function, symbol, initialOrigin)
|
||||||
rootContext.memberDeserializer.loadFunction(function, null, session, symbol).symbol
|
rootContext.memberDeserializer.loadFunction(function, null, session, symbol).symbol
|
||||||
}
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadPropertiesByCallableId(callableId: CallableId, foundProperties: Collection<KtProperty>?): List<FirPropertySymbol> {
|
private fun loadPropertiesByCallableId(callableId: CallableId, foundProperties: Collection<KtProperty>?): List<FirPropertySymbol> {
|
||||||
|
|||||||
Reference in New Issue
Block a user