[PL] Don't use trove4j in partial linkage
This commit is contained in:
committed by
Space Team
parent
22ee170f44
commit
4b1f739c89
@@ -13,7 +13,6 @@ dependencies {
|
||||
compileOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
||||
|
||||
compileOnly(intellijCore())
|
||||
compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
|
||||
+11
-24
@@ -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<IrClassifierSymbol>()
|
||||
private val patchedSymbols = THashSet<IrClassSymbol>() // To avoid re-patching what already has been patched.
|
||||
private val symbols = HashMap<IrClassifierSymbol, Boolean>()
|
||||
private val patchedSymbols = HashSet<IrClassSymbol>() // 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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user