diff --git a/native/commonizer/build.gradle.kts b/native/commonizer/build.gradle.kts index 07647996c28..ce43aa708b3 100644 --- a/native/commonizer/build.gradle.kts +++ b/native/commonizer/build.gradle.kts @@ -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")) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt index ee851575421..266c43952ba 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.commonizer -import gnu.trove.THashMap +import org.jetbrains.kotlin.commonizer.utils.CommonizerMap sealed interface TargetDependent : Iterable { val size: Int get() = targets.size @@ -116,7 +116,7 @@ private class FactoryBasedTargetDependent( private object Null private object Uninitialized - private val values = targets.associateWithTo(THashMap(targets.size)) { Uninitialized } + private val values = targets.associateWithTo(CommonizerMap(targets.size)) { Uninitialized } @Suppress("UNCHECKED_CAST") override fun get(target: CommonizerTarget): T { diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt index 00bdcbff32f..a56f04e4e56 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt @@ -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): 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 = - libraries.map { it.manifestData }.associateByTo(THashMap()) { it.uniqueName } + libraries.map { it.manifestData }.associateByTo(CommonizerMap()) { it.uniqueName } diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt index 7901875a6c7..bf095fdd2af 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt @@ -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, @@ -38,8 +38,8 @@ internal interface AssociatedClassifierIdsResolverCache { } private class Default : AssociatedClassifierIdsResolverCache { - private val cachedResults = THashMap() - private val cachedNullResults = THashSet() + private val cachedResults = CommonizerMap() + private val cachedNullResults = CommonizerSet() 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() + val results = CommonizerSet() /* Set of every classifier id that once was enqueued already */ - val visited = THashSet() + val visited = CommonizerSet() /* Actual, current queue of classifiers to resolve */ val queue = ArrayDeque() diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt index 38faa65bff7..c018893c6d6 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt @@ -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, ) : CirClassifierNode, CirNodeWithMembers { - val constructors: MutableMap = THashMap() - override val properties: MutableMap = THashMap() - override val functions: MutableMap = THashMap() - override val classes: MutableMap = THashMap() + val constructors: MutableMap = CommonizerMap() + override val properties: MutableMap = CommonizerMap() + override val functions: MutableMap = CommonizerMap() + override val classes: MutableMap = CommonizerMap() override fun accept(visitor: CirNodeVisitor, data: T): R = visitor.visitClassNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt index ee8a4bb9bf2..2ef89758eb0 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt @@ -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>(initialCapacity) - private val classifiersById = THashMap(initialCapacity) - private val classifierIds = THashSet(initialCapacity) + private val typeAliasesByUnderlyingType = CommonizerMap>(initialCapacity) + private val classifiersById = CommonizerMap(initialCapacity) + private val classifierIds = CommonizerSet(initialCapacity) operator fun invoke(tree: CirTreeRoot) { tree.modules.forEach { module -> this(module) } diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt index dd764effba3..5b6cc2b2ed4 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt @@ -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 = THashMap().apply { + private val classifiers: Map = CommonizerMap().apply { (MIN_ARITY..MAX_ARITY).forEach { arity -> FUNCTION_PREFIXES.forEach { prefix -> buildFictitiousFunctionClass(prefix, arity, this::set) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt index 0f896f4d4cc..023b5a37052 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt @@ -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, @@ -30,8 +30,8 @@ interface CirCommonizedClassifierNodes { companion object { fun default(allowedDuplicates: Set = setOf()) = object : CirCommonizedClassifierNodes { - private val classNodes = THashMap() - private val typeAliases = THashMap() + private val classNodes = CommonizerMap() + private val typeAliases = CommonizerMap() override fun classNode(classId: CirEntityId) = classNodes[classId] override fun typeAliasNode(typeAliasId: CirEntityId) = typeAliases[typeAliasId] diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt index 199cafbe438..23634add6cf 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt @@ -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, override val commonDeclaration: NullableLazyValue ) : CirNode { - val packages: MutableMap = THashMap() + val packages: MutableMap = CommonizerMap() override fun accept(visitor: CirNodeVisitor, data: T) = visitor.visitModuleNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt index e11a2cf4229..c1542395315 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt @@ -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 ) : CirNodeWithMembers { - override val properties: MutableMap = THashMap() - override val functions: MutableMap = THashMap() - override val classes: MutableMap = THashMap() - val typeAliases: MutableMap = THashMap() + override val properties: MutableMap = CommonizerMap() + override val functions: MutableMap = CommonizerMap() + override val classes: MutableMap = CommonizerMap() + val typeAliases: MutableMap = CommonizerMap() val packageName: CirPackageName get() = targetDeclarations.firstNonNull().packageName diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt index 0a098cf5da8..ef11290df88 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt @@ -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>().also { map -> + CommonizerMap>().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() + val classifiers = CommonizerMap() 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): CirProvidedClassifiers { - val classifiers = THashMap() + val classifiers = CommonizerMap() 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) } diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt index 56e8a510319..d3a6b5ff458 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt @@ -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, override val commonDeclaration: NullableLazyValue ) : CirNode { - val modules: MutableMap = THashMap() + val modules: MutableMap = CommonizerMap() override fun accept(visitor: CirNodeVisitor, data: T): R = visitor.visitRootNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt index b2af6527d95..dc963c1f127 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt @@ -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) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt index 68f5e0490cc..dc58b8d0fce 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt @@ -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 = THashMap(allValueArguments.size) - val annotationValueArguments: MutableMap = THashMap(allValueArguments.size) + val constantValueArguments: MutableMap = CommonizerMap(allValueArguments.size) + val annotationValueArguments: MutableMap = CommonizerMap(allValueArguments.size) allValueArguments.forEach { (name, constantValue) -> val cirName = CirName.create(name) diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt index 40d05034f50..4287e7e2cda 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt @@ -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 + private val typeParameterMapping: CommonizerIntObjectMap ) : 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(typeParameters.size * 2) + val mapping = CommonizerIntObjectMap(typeParameters.size * 2) typeParameters.forEachIndexed { localIndex, typeParameter -> val typeParameterInfo = TypeParameterInfo( index = localIndex + typeParameterIndexOffset, diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/collections.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/collections.kt new file mode 100644 index 00000000000..3ca4b199f64 --- /dev/null +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/collections.kt @@ -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 = it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap +internal typealias CommonizerSet = it.unimi.dsi.fastutil.objects.ObjectOpenHashSet +internal typealias CommonizerIntObjectMap = it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap +internal typealias CommonizerIntSet = it.unimi.dsi.fastutil.ints.IntOpenHashSet diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt index 9643171aba3..f10a8089f39 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt @@ -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 Map.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 Collection.compactMap(transform: (T) -> R): List = @@ -69,7 +68,7 @@ internal fun Map.compact(): Map = 0 -> emptyMap() 1 -> with(entries.iterator().next()) { singletonMap(key, value) } 2, 3 -> SmartFMap.emptyMap().plusAll(this) - else -> THashMap(this) + else -> CommonizerMap(this) } @Suppress("NOTHING_TO_INLINE") @@ -83,7 +82,7 @@ internal inline fun compactMapOf(key1: K, value1: V, key2: K, value internal inline fun Iterable.firstNonNull() = firstIsInstance() internal inline fun Collection.foldToMap(keySelector: (T) -> K): Map> { - val result = fold(THashMap>()) { accumulator, element -> + val result = fold(CommonizerMap>()) { accumulator, element -> accumulator.getOrPut(keySelector(element)) { ArrayList() } += element accumulator } diff --git a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index bae481455fa..25e2fcc6674 100644 --- a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -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