diff --git a/compiler/ir/serialization.common/build.gradle.kts b/compiler/ir/serialization.common/build.gradle.kts index 59c082381c2..4a4d78edecc 100644 --- a/compiler/ir/serialization.common/build.gradle.kts +++ b/compiler/ir/serialization.common/build.gradle.kts @@ -13,7 +13,6 @@ dependencies { compileOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false } compileOnly(intellijCore()) - compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j")) } sourceSets { diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/unlinked/UsedClassifierSymbols.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/unlinked/UsedClassifierSymbols.kt index 8f39ba5321a..1f2275465c8 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/unlinked/UsedClassifierSymbols.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/unlinked/UsedClassifierSymbols.kt @@ -5,8 +5,6 @@ package org.jetbrains.kotlin.backend.common.serialization.unlinked -import gnu.trove.THashSet -import gnu.trove.TObjectByteHashMap import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol @@ -24,37 +22,26 @@ internal enum class UsedClassifierSymbolStatus(val isUnlinked: Boolean) { } internal class UsedClassifierSymbols { - private val symbols = TObjectByteHashMap() - private val patchedSymbols = THashSet() // To avoid re-patching what already has been patched. + private val symbols = HashMap() + private val patchedSymbols = HashSet() // To avoid re-patching what already has been patched. fun forEachClassSymbolToPatch(patchAction: (IrClassSymbol) -> Unit) { - symbols.forEachEntry { symbol, code -> - if (symbol.isBound && code.status == UNLINKED && symbol is IrClassSymbol && patchedSymbols.add(symbol)) { + symbols.forEach { (symbol, isUnlinked) -> + if (isUnlinked && symbol.isBound && symbol is IrClassSymbol && patchedSymbols.add(symbol)) { patchAction(symbol) } - true } } - operator fun get(symbol: IrClassifierSymbol): UsedClassifierSymbolStatus? = symbols[symbol].status + operator fun get(symbol: IrClassifierSymbol): UsedClassifierSymbolStatus? = + when (symbols[symbol]) { + true -> UNLINKED + false -> LINKED + null -> null + } fun register(symbol: IrClassifierSymbol, status: UsedClassifierSymbolStatus): Boolean { - symbols.put(symbol, status.code) + symbols[symbol] = status.isUnlinked return status.isUnlinked } - - companion object { - private inline val Byte.status: UsedClassifierSymbolStatus? - get() = when (this) { - 1.toByte() -> UNLINKED - 2.toByte() -> LINKED - else -> null - } - - private inline val UsedClassifierSymbolStatus.code: Byte - get() = when (this) { - UNLINKED -> 1.toByte() - LINKED -> 2.toByte() - } - } }