diff --git a/native/commonizer/build.gradle.kts b/native/commonizer/build.gradle.kts index 5709461a62a..b3f0e352a18 100644 --- a/native/commonizer/build.gradle.kts +++ b/native/commonizer/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { compileOnly(project(":native:frontend.native")) compileOnly(project(":kotlin-util-klib-metadata")) compileOnly(intellijCoreDep()) { includeJars("intellij-core") } + compileOnly(intellijDep()) { includeJars("trove4j") } // 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/descriptors/commonizer/builder/CommonizedMemberScope.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/builder/CommonizedMemberScope.kt index ca6165f28b0..1aa74ac7e78 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/builder/CommonizedMemberScope.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/builder/CommonizedMemberScope.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.builder +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.name.Name @@ -13,9 +14,9 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.utils.Printer class CommonizedMemberScope : MemberScope { - private val functions = HashMap>() - private val variables = HashMap>() - private val classifiers = HashMap() + private val functions = THashMap>() + private val variables = THashMap>() + private val classifiers = THashMap() private fun addMember(member: DeclarationDescriptor) { when (member) { diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirAnnotationFactory.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirAnnotationFactory.kt index 85c132ffbad..acfec12f18e 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirAnnotationFactory.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirAnnotationFactory.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.commonizer.cir.CirAnnotation import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirAnnotationImpl @@ -26,8 +27,8 @@ object CirAnnotationFactory { if (allValueArguments.isEmpty()) return create(fqName = fqName, constantValueArguments = emptyMap(), annotationValueArguments = emptyMap()) - val constantValueArguments: MutableMap> = HashMap() - val annotationValueArguments: MutableMap = HashMap() + val constantValueArguments: MutableMap> = THashMap() + val annotationValueArguments: MutableMap = THashMap() allValueArguments.forEach { (name, constantValue) -> checkConstantSupportedInCommonization( diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionLibrary.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionLibrary.kt index 7a08dea53d3..a0ce30ddb91 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionLibrary.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionLibrary.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.konan +import gnu.trove.THashMap import org.jetbrains.kotlin.library.KotlinLibrary internal interface NativeManifestDataProvider { @@ -66,4 +67,4 @@ internal class CommonNativeManifestDataProvider( } private fun NativeDistributionLibraries.buildManifestIndex(): MutableMap = - (platformLibs + stdlib).map { it.manifestData }.associateByTo(HashMap()) { it.uniqueName } + (platformLibs + stdlib).map { it.manifestData }.associateByTo(THashMap()) { it.uniqueName } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt index c6cee0bc459..a1bc2e2202b 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt @@ -63,6 +63,6 @@ internal class NativeDistributionModulesProvider( module.setDependencies(listOf(module) + dependencies + forwardDeclarations) } - return platformModulesMap.values + return platformModulesMap.values.toList() } } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt index e1a360b8e14..9d55b779bf2 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.commonizer.cir.CirClass import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.name.FqName @@ -17,10 +18,10 @@ class CirClassNode( override val fqName: FqName ) : CirNodeWithFqName { - val constructors: MutableMap = HashMap() - val properties: MutableMap = HashMap() - val functions: MutableMap = HashMap() - val classes: MutableMap = HashMap() + val constructors: MutableMap = THashMap() + val properties: MutableMap = THashMap() + val functions: MutableMap = THashMap() + val classes: MutableMap = THashMap() override fun accept(visitor: CirNodeVisitor, data: T): R = visitor.visitClassNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirModuleNode.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirModuleNode.kt index f5e254dea3b..d8ef2298434 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirModuleNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirModuleNode.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.commonizer.cir.CirModule import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.name.FqName @@ -14,7 +15,7 @@ class CirModuleNode( override val targetDeclarations: CommonizedGroup, override val commonDeclaration: NullableLazyValue ) : CirNode { - val packages: MutableMap = HashMap() + val packages: MutableMap = THashMap() override fun accept(visitor: CirNodeVisitor, data: T) = visitor.visitModuleNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt index 4a661212ba0..06388719a9d 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.commonizer.cir.CirPackage import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.name.FqName @@ -18,10 +19,10 @@ class CirPackageNode( val moduleName: Name ) : CirNodeWithFqName { - val properties: MutableMap = HashMap() - val functions: MutableMap = HashMap() - val classes: MutableMap = HashMap() - val typeAliases: MutableMap = HashMap() + val properties: MutableMap = THashMap() + val functions: MutableMap = THashMap() + val classes: MutableMap = THashMap() + val typeAliases: MutableMap = THashMap() override fun accept(visitor: CirNodeVisitor, data: T) = visitor.visitPackageNode(this, data) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirRootNode.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirRootNode.kt index f409a687993..64e9126e1cd 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirRootNode.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirRootNode.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree +import gnu.trove.THashMap import org.jetbrains.kotlin.descriptors.commonizer.cir.CirRoot import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.name.FqName @@ -16,11 +17,11 @@ class CirRootNode( override val commonDeclaration: NullableLazyValue ) : CirNode { class CirClassifiersCacheImpl : CirClassifiersCache { - override val classes = HashMap() - override val typeAliases = HashMap() + override val classes = THashMap() + override val typeAliases = THashMap() } - val modules: MutableMap = HashMap() + val modules: MutableMap = THashMap() val cache = CirClassifiersCacheImpl() override fun accept(visitor: CirNodeVisitor, data: T): R = diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/commonizedGroup.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/commonizedGroup.kt index d52e531a860..9ec2cb375a2 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/commonizedGroup.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/commonizedGroup.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.descriptors.commonizer.utils +import gnu.trove.THashMap + /** Fixed-size ordered collection with no extra space that represents a commonized group of same-rank elements */ class CommonizedGroup( override val size: Int, @@ -32,7 +34,7 @@ class CommonizedGroup( } internal class CommonizedGroupMap(val size: Int) : Iterable>> { - private val wrapped: MutableMap> = HashMap() + private val wrapped: MutableMap> = THashMap() operator fun get(key: K): CommonizedGroup = wrapped.getOrPut(key) { CommonizedGroup(size) } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt index 362c9d6f9bf..739a9eba795 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.utils +import gnu.trove.THashMap import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance internal fun Sequence.toList(expectedCapacity: Int): List { @@ -17,7 +18,7 @@ internal infix fun Map.concat(other: Map): Map = when { isEmpty() -> other other.isEmpty() -> this - else -> HashMap(size + other.size, 1F).apply { + else -> THashMap(size + other.size, 1F).apply { putAll(this@concat) putAll(other) }