[Commonizer] Switch from trove4j to fastutil
^KT-63159
This commit is contained in:
committed by
Space Team
parent
7658b818ac
commit
0de04f934e
@@ -31,7 +31,7 @@ dependencies {
|
||||
compileOnly(project(":native:frontend.native"))
|
||||
compileOnly(project(":kotlin-util-klib-metadata"))
|
||||
compileOnly(intellijCore())
|
||||
compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
|
||||
compileOnly(commonDependency("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil"))
|
||||
|
||||
// This dependency is necessary to keep the right dependency record inside of POM file:
|
||||
publishedCompile(project(":kotlin-compiler"))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
|
||||
sealed interface TargetDependent<T> : Iterable<T> {
|
||||
val size: Int get() = targets.size
|
||||
@@ -116,7 +116,7 @@ private class FactoryBasedTargetDependent<T>(
|
||||
private object Null
|
||||
private object Uninitialized
|
||||
|
||||
private val values = targets.associateWithTo(THashMap<CommonizerTarget, Any>(targets.size)) { Uninitialized }
|
||||
private val values = targets.associateWithTo(CommonizerMap<CommonizerTarget, Any>(targets.size)) { Uninitialized }
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun get(target: CommonizerTarget): T {
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.konan
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerTarget
|
||||
import org.jetbrains.kotlin.commonizer.UniqueLibraryName
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
|
||||
interface NativeManifestDataProvider {
|
||||
@@ -80,11 +80,11 @@ internal class CommonNativeManifestDataProvider(
|
||||
internal fun NativeManifestDataProvider(target: CommonizerTarget, libraries: List<NativeLibrariesToCommonize>): NativeManifestDataProvider {
|
||||
val manifestsByName = libraries
|
||||
.flatMap { it.libraries }
|
||||
.groupByTo(THashMap()) { it.manifestData.uniqueName }
|
||||
.groupByTo(CommonizerMap()) { it.manifestData.uniqueName }
|
||||
.mapValues { (_, libraries) -> libraries.map { it.manifestData } }
|
||||
|
||||
return CommonNativeManifestDataProvider(target, manifestsByName)
|
||||
}
|
||||
|
||||
private fun NativeLibrariesToCommonize.buildManifestIndex(): MutableMap<UniqueLibraryName, NativeSensitiveManifestData> =
|
||||
libraries.map { it.manifestData }.associateByTo(THashMap()) { it.uniqueName }
|
||||
libraries.map { it.manifestData }.associateByTo(CommonizerMap()) { it.uniqueName }
|
||||
|
||||
+6
-6
@@ -7,12 +7,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import gnu.trove.THashSet
|
||||
import org.jetbrains.kotlin.commonizer.TargetDependent
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirProvided
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirTypeAlias
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerSet
|
||||
|
||||
internal fun AssociatedClassifierIdsResolver(
|
||||
classifierIndices: TargetDependent<CirClassifierIndex>,
|
||||
@@ -38,8 +38,8 @@ internal interface AssociatedClassifierIdsResolverCache {
|
||||
}
|
||||
|
||||
private class Default : AssociatedClassifierIdsResolverCache {
|
||||
private val cachedResults = THashMap<CirEntityId, AssociatedClassifierIds>()
|
||||
private val cachedNullResults = THashSet<CirEntityId>()
|
||||
private val cachedResults = CommonizerMap<CirEntityId, AssociatedClassifierIds>()
|
||||
private val cachedNullResults = CommonizerSet<CirEntityId>()
|
||||
|
||||
override fun set(id: CirEntityId, result: AssociatedClassifierIds?) {
|
||||
if (result == null) cachedNullResults.add(id)
|
||||
@@ -67,10 +67,10 @@ private class AssociatedClassifierIdsResolverImpl(
|
||||
override fun resolveAssociatedIds(id: CirEntityId): AssociatedClassifierIds? {
|
||||
cache[id]?.let { return it }
|
||||
|
||||
val results = THashSet<CirEntityId>()
|
||||
val results = CommonizerSet<CirEntityId>()
|
||||
|
||||
/* Set of every classifier id that once was enqueued already */
|
||||
val visited = THashSet<CirEntityId>()
|
||||
val visited = CommonizerSet<CirEntityId>()
|
||||
|
||||
/* Actual, current queue of classifiers to resolve */
|
||||
val queue = ArrayDeque<CirEntityId>()
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirClass
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirName
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||
|
||||
class CirClassNode(
|
||||
@@ -18,10 +18,10 @@ class CirClassNode(
|
||||
override val commonDeclaration: NullableLazyValue<CirClass>,
|
||||
) : CirClassifierNode<CirClass, CirClass>, CirNodeWithMembers<CirClass, CirClass> {
|
||||
|
||||
val constructors: MutableMap<ConstructorApproximationKey, CirClassConstructorNode> = THashMap()
|
||||
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
|
||||
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
|
||||
override val classes: MutableMap<CirName, CirClassNode> = THashMap()
|
||||
val constructors: MutableMap<ConstructorApproximationKey, CirClassConstructorNode> = CommonizerMap()
|
||||
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = CommonizerMap()
|
||||
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = CommonizerMap()
|
||||
override val classes: MutableMap<CirName, CirClassNode> = CommonizerMap()
|
||||
|
||||
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T): R =
|
||||
visitor.visitClassNode(this, data)
|
||||
|
||||
+5
-5
@@ -10,13 +10,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import gnu.trove.THashSet
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirClass
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirClassifier
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirTypeAlias
|
||||
import org.jetbrains.kotlin.commonizer.tree.*
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerSet
|
||||
|
||||
fun CirClassifierIndex(tree: CirTreeRoot): CirClassifierIndex {
|
||||
return CirClassifierIndexBuilder().apply { invoke(tree) }.build()
|
||||
@@ -62,9 +62,9 @@ private class CirClassifierIndexBuilder {
|
||||
const val initialCapacity = 1000
|
||||
}
|
||||
|
||||
private val typeAliasesByUnderlyingType = THashMap<CirEntityId, MutableList<CirTreeTypeAlias>>(initialCapacity)
|
||||
private val classifiersById = THashMap<CirEntityId, CirClassifier>(initialCapacity)
|
||||
private val classifierIds = THashSet<CirEntityId>(initialCapacity)
|
||||
private val typeAliasesByUnderlyingType = CommonizerMap<CirEntityId, MutableList<CirTreeTypeAlias>>(initialCapacity)
|
||||
private val classifiersById = CommonizerMap<CirEntityId, CirClassifier>(initialCapacity)
|
||||
private val classifierIds = CommonizerSet<CirEntityId>(initialCapacity)
|
||||
|
||||
operator fun invoke(tree: CirTreeRoot) {
|
||||
tree.modules.forEach { module -> this(module) }
|
||||
|
||||
+2
-2
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirName
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirProvided
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
@@ -21,7 +21,7 @@ object CirFictitiousFunctionClassifiers : CirProvidedClassifiers {
|
||||
private val FUNCTION_PREFIXES = arrayOf("Function", "SuspendFunction")
|
||||
private val PACKAGE_NAME = CirPackageName.create("kotlin")
|
||||
|
||||
private val classifiers: Map<CirEntityId, CirProvided.RegularClass> = THashMap<CirEntityId, CirProvided.RegularClass>().apply {
|
||||
private val classifiers: Map<CirEntityId, CirProvided.RegularClass> = CommonizerMap<CirEntityId, CirProvided.RegularClass>().apply {
|
||||
(MIN_ARITY..MAX_ARITY).forEach { arity ->
|
||||
FUNCTION_PREFIXES.forEach { prefix ->
|
||||
buildFictitiousFunctionClass(prefix, arity, this::set)
|
||||
|
||||
+3
-3
@@ -5,9 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.TargetDependent
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
|
||||
class CirKnownClassifiers(
|
||||
val classifierIndices: TargetDependent<CirClassifierIndex>,
|
||||
@@ -30,8 +30,8 @@ interface CirCommonizedClassifierNodes {
|
||||
|
||||
companion object {
|
||||
fun default(allowedDuplicates: Set<CirEntityId> = setOf()) = object : CirCommonizedClassifierNodes {
|
||||
private val classNodes = THashMap<CirEntityId, CirClassNode>()
|
||||
private val typeAliases = THashMap<CirEntityId, CirTypeAliasNode>()
|
||||
private val classNodes = CommonizerMap<CirEntityId, CirClassNode>()
|
||||
private val typeAliases = CommonizerMap<CirEntityId, CirTypeAliasNode>()
|
||||
|
||||
override fun classNode(classId: CirEntityId) = classNodes[classId]
|
||||
override fun typeAliasNode(typeAliasId: CirEntityId) = typeAliases[typeAliasId]
|
||||
|
||||
@@ -5,17 +5,17 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirModule
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||
|
||||
class CirModuleNode(
|
||||
override val targetDeclarations: CommonizedGroup<CirModule>,
|
||||
override val commonDeclaration: NullableLazyValue<CirModule>
|
||||
) : CirNode<CirModule, CirModule> {
|
||||
val packages: MutableMap<CirPackageName, CirPackageNode> = THashMap()
|
||||
val packages: MutableMap<CirPackageName, CirPackageNode> = CommonizerMap()
|
||||
|
||||
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T) =
|
||||
visitor.visitModuleNode(this, data)
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirName
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirPackage
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.commonizer.utils.firstNonNull
|
||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||
|
||||
@@ -18,10 +18,10 @@ class CirPackageNode(
|
||||
override val commonDeclaration: NullableLazyValue<CirPackage>
|
||||
) : CirNodeWithMembers<CirPackage, CirPackage> {
|
||||
|
||||
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
|
||||
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
|
||||
override val classes: MutableMap<CirName, CirClassNode> = THashMap()
|
||||
val typeAliases: MutableMap<CirName, CirTypeAliasNode> = THashMap()
|
||||
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = CommonizerMap()
|
||||
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = CommonizerMap()
|
||||
override val classes: MutableMap<CirName, CirClassNode> = CommonizerMap()
|
||||
val typeAliases: MutableMap<CirName, CirTypeAliasNode> = CommonizerMap()
|
||||
|
||||
val packageName: CirPackageName
|
||||
get() = targetDeclarations.firstNonNull().packageName
|
||||
|
||||
+5
-6
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import com.intellij.util.containers.FactoryMap
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.ModulesProvider
|
||||
import org.jetbrains.kotlin.commonizer.ModulesProvider.CInteropModuleAttributes
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
@@ -28,7 +27,7 @@ internal class CirProvidedClassifiersByModules internal constructor(
|
||||
) : CirProvidedClassifiers {
|
||||
|
||||
private val typeAliasesByUnderlyingTypes = run {
|
||||
THashMap<CirEntityId, MutableList<CirEntityId>>().also { map ->
|
||||
CommonizerMap<CirEntityId, MutableList<CirEntityId>>().also { map ->
|
||||
classifiers.forEach { (id, classifier) ->
|
||||
if (classifier is CirProvided.TypeAlias) {
|
||||
val set = map.computeIfAbsent(classifier.underlyingType.classifierId) { ArrayList() }
|
||||
@@ -55,14 +54,14 @@ internal class CirProvidedClassifiersByModules internal constructor(
|
||||
|
||||
companion object {
|
||||
fun load(modulesProvider: ModulesProvider): CirProvidedClassifiers {
|
||||
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
|
||||
val classifiers = CommonizerMap<CirEntityId, CirProvided.Classifier>()
|
||||
|
||||
modulesProvider.moduleInfos.forEach { moduleInfo ->
|
||||
val metadata = modulesProvider.loadModuleMetadata(moduleInfo.name)
|
||||
readModule(metadata, classifiers::set)
|
||||
}
|
||||
|
||||
if (classifiers.isEmpty)
|
||||
if (classifiers.isEmpty())
|
||||
return CirProvidedClassifiers.EMPTY
|
||||
|
||||
return CirProvidedClassifiersByModules(false, classifiers)
|
||||
@@ -73,13 +72,13 @@ internal class CirProvidedClassifiersByModules internal constructor(
|
||||
* Note: This builds a union *not an intersection* of forward declarations.
|
||||
*/
|
||||
fun loadExportedForwardDeclarations(modulesProviders: List<ModulesProvider>): CirProvidedClassifiers {
|
||||
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
|
||||
val classifiers = CommonizerMap<CirEntityId, CirProvided.Classifier>()
|
||||
|
||||
modulesProviders.flatMap { moduleProvider -> moduleProvider.moduleInfos }
|
||||
.mapNotNull { moduleInfo -> moduleInfo.cInteropAttributes }
|
||||
.forEach { attrs -> readExportedForwardDeclarations(attrs, classifiers::set) }
|
||||
|
||||
if (classifiers.isEmpty) return CirProvidedClassifiers.EMPTY
|
||||
if (classifiers.isEmpty()) return CirProvidedClassifiers.EMPTY
|
||||
return CirProvidedClassifiersByModules(true, classifiers)
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirName
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirRoot
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
|
||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||
|
||||
class CirRootNode(
|
||||
@@ -16,7 +16,7 @@ class CirRootNode(
|
||||
override val targetDeclarations: CommonizedGroup<CirRoot>,
|
||||
override val commonDeclaration: NullableLazyValue<CirRoot>
|
||||
) : CirNode<CirRoot, CirRoot> {
|
||||
val modules: MutableMap<CirName, CirModuleNode> = THashMap()
|
||||
val modules: MutableMap<CirName, CirModuleNode> = CommonizerMap()
|
||||
|
||||
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T): R =
|
||||
visitor.visitRootNode(this, data)
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.TIntHashSet
|
||||
import org.jetbrains.kotlin.commonizer.cir.*
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerIntSet
|
||||
import org.jetbrains.kotlin.commonizer.utils.Interner
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
@@ -191,7 +191,7 @@ private class TypeParameterTypeSignatureBuildingContext(
|
||||
private val functionOrPropertyOrConstructor: CirHasTypeParameters
|
||||
) : SignatureBuildingContext {
|
||||
|
||||
private val alreadyVisitedParameterTypeIndices = TIntHashSet()
|
||||
private val alreadyVisitedParameterTypeIndices = CommonizerIntSet()
|
||||
|
||||
fun isVisitedFirstTime(typeParameterIndex: Int): Boolean {
|
||||
return alreadyVisitedParameterTypeIndices.add(typeParameterIndex)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.metadata
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import kotlinx.metadata.*
|
||||
import kotlinx.metadata.Modality as KmModality
|
||||
import kotlinx.metadata.Visibility as KmVisibility
|
||||
@@ -54,8 +53,8 @@ object CirDeserializers {
|
||||
if (allValueArguments.isEmpty())
|
||||
return CirAnnotation.createInterned(type = type, constantValueArguments = emptyMap(), annotationValueArguments = emptyMap())
|
||||
|
||||
val constantValueArguments: MutableMap<CirName, CirConstantValue> = THashMap(allValueArguments.size)
|
||||
val annotationValueArguments: MutableMap<CirName, CirAnnotation> = THashMap(allValueArguments.size)
|
||||
val constantValueArguments: MutableMap<CirName, CirConstantValue> = CommonizerMap(allValueArguments.size)
|
||||
val annotationValueArguments: MutableMap<CirName, CirAnnotation> = CommonizerMap(allValueArguments.size)
|
||||
|
||||
allValueArguments.forEach { (name, constantValue) ->
|
||||
val cirName = CirName.create(name)
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.metadata
|
||||
|
||||
import gnu.trove.TIntObjectHashMap
|
||||
import kotlinx.metadata.KmTypeParameter
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.commonizer.cir.CirProvided
|
||||
import org.jetbrains.kotlin.commonizer.mergedtree.CirProvidedClassifiers
|
||||
import org.jetbrains.kotlin.commonizer.tree.deserializer.ClassesToProcess
|
||||
import org.jetbrains.kotlin.commonizer.utils.CommonizerIntObjectMap
|
||||
|
||||
typealias TypeParameterId = Int
|
||||
typealias TypeParameterIndex = Int
|
||||
@@ -42,10 +42,10 @@ abstract class CirTypeResolver : CirTypeParameterResolver {
|
||||
|
||||
private class Nested(
|
||||
private val parent: CirTypeResolver,
|
||||
private val typeParameterMapping: TIntObjectHashMap<TypeParameterInfo>
|
||||
private val typeParameterMapping: CommonizerIntObjectMap<TypeParameterInfo>
|
||||
) : CirTypeResolver() {
|
||||
override val providedClassifiers get() = parent.providedClassifiers
|
||||
override val typeParameterIndexOffset = typeParameterMapping.size() + parent.typeParameterIndexOffset
|
||||
override val typeParameterIndexOffset = typeParameterMapping.size + parent.typeParameterIndexOffset
|
||||
|
||||
override fun resolveTypeParameterIndex(id: TypeParameterId) =
|
||||
typeParameterMapping[id]?.index ?: parent.resolveTypeParameterIndex(id)
|
||||
@@ -60,7 +60,7 @@ abstract class CirTypeResolver : CirTypeParameterResolver {
|
||||
if (typeParameters.isEmpty())
|
||||
this
|
||||
else {
|
||||
val mapping = TIntObjectHashMap<TypeParameterInfo>(typeParameters.size * 2)
|
||||
val mapping = CommonizerIntObjectMap<TypeParameterInfo>(typeParameters.size * 2)
|
||||
typeParameters.forEachIndexed { localIndex, typeParameter ->
|
||||
val typeParameterInfo = TypeParameterInfo(
|
||||
index = localIndex + typeParameterIndexOffset,
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.commonizer.utils
|
||||
|
||||
internal typealias CommonizerMap<K, V> = it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<K, V>
|
||||
internal typealias CommonizerSet<E> = it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<E>
|
||||
internal typealias CommonizerIntObjectMap<V> = it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<V>
|
||||
internal typealias CommonizerIntSet = it.unimi.dsi.fastutil.ints.IntOpenHashSet
|
||||
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.commonizer.utils
|
||||
|
||||
import com.intellij.util.SmartFMap
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
|
||||
import java.util.*
|
||||
import java.util.Collections.singletonList
|
||||
@@ -17,7 +16,7 @@ internal inline fun <K : Any, V, R> Map<K, V>.compactMapValues(transform: (Map.E
|
||||
0 -> emptyMap()
|
||||
1 -> with(entries.iterator().next()) { singletonMap(key, transform(this)) }
|
||||
2, 3 -> entries.fold(SmartFMap.emptyMap()) { acc, entry -> acc.plus(entry.key, transform(entry)) }
|
||||
else -> mapValuesTo(THashMap(size), transform)
|
||||
else -> mapValuesTo(CommonizerMap(size), transform)
|
||||
}
|
||||
|
||||
internal inline fun <T, R> Collection<T>.compactMap(transform: (T) -> R): List<R> =
|
||||
@@ -69,7 +68,7 @@ internal fun <K, V> Map<K, V>.compact(): Map<K, V> =
|
||||
0 -> emptyMap()
|
||||
1 -> with(entries.iterator().next()) { singletonMap(key, value) }
|
||||
2, 3 -> SmartFMap.emptyMap<K, V>().plusAll(this)
|
||||
else -> THashMap(this)
|
||||
else -> CommonizerMap(this)
|
||||
}
|
||||
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
@@ -83,7 +82,7 @@ internal inline fun <K : Any, V> compactMapOf(key1: K, value1: V, key2: K, value
|
||||
internal inline fun <reified T> Iterable<T?>.firstNonNull() = firstIsInstance<T>()
|
||||
|
||||
internal inline fun <reified T, reified K : Any> Collection<T>.foldToMap(keySelector: (T) -> K): Map<K, List<T>> {
|
||||
val result = fold(THashMap<K, MutableList<T>>()) { accumulator, element ->
|
||||
val result = fold(CommonizerMap<K, MutableList<T>>()) { accumulator, element ->
|
||||
accumulator.getOrPut(keySelector(element)) { ArrayList() } += element
|
||||
accumulator
|
||||
}
|
||||
|
||||
@@ -239,21 +239,6 @@ class CodeConformanceTest : TestCase() {
|
||||
"js/js.ast/src/org/jetbrains/kotlin/js/backend/JsReservedIdentifiers.java",
|
||||
"js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java",
|
||||
"js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/SourceMap3Builder.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt",
|
||||
"native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt"
|
||||
)
|
||||
) { _, source ->
|
||||
"gnu.trove" in source
|
||||
|
||||
Reference in New Issue
Block a user