[JS IC] Eradicate GlobalFileLocalSignature from code
- Reduce usage of global maps
This commit is contained in:
committed by
teamcityserver
parent
a0449892b2
commit
74d8e16d09
+1
-14
@@ -40,7 +40,6 @@ class IcFileDeserializer(
|
||||
val originalEnqueue: IdSignature.(IcFileDeserializer) -> Unit,
|
||||
val icFileData: SerializedIcDataForFile,
|
||||
val mappingState: JsMappingState,
|
||||
val publicSignatureToIcFileDeserializer: MutableMap<IdSignature, IcFileDeserializer>,
|
||||
val enqueue: IdSignature.(IcFileDeserializer) -> Unit,
|
||||
) {
|
||||
|
||||
@@ -149,7 +148,7 @@ class IcFileDeserializer(
|
||||
icFileReader,
|
||||
file.symbol,
|
||||
emptyList(),
|
||||
{ idSig -> enqueueLocalTopLevelDeclaration(idSig) },
|
||||
{ idSig -> idSig.enqueue(this) },
|
||||
{ _, s -> s },
|
||||
enqueueAllDeclarations = true,
|
||||
useGlobalSignatures = true,
|
||||
@@ -194,12 +193,6 @@ class IcFileDeserializer(
|
||||
}
|
||||
}
|
||||
|
||||
fun init() {
|
||||
reversedSignatureIndex.keys.forEach {
|
||||
publicSignatureToIcFileDeserializer[it] = this
|
||||
}
|
||||
}
|
||||
|
||||
private val containerSigToOrder by lazy {
|
||||
mutableMapOf<IdSignature, ByteArray>().also { map ->
|
||||
val containerIds = IrLongArrayMemoryReader(icFileData.order.containerSignatures).array
|
||||
@@ -236,12 +229,6 @@ class IcFileDeserializer(
|
||||
return actualModuleDeserializer.deserializeIrSymbol(idSig, kind)
|
||||
}
|
||||
|
||||
private fun enqueueLocalTopLevelDeclaration(idSig: IdSignature) {
|
||||
// We only care about declarations from IC cache. They all are in the map.
|
||||
val deser = publicSignatureToIcFileDeserializer[idSig] ?: return
|
||||
idSig.enqueue(deser)
|
||||
}
|
||||
|
||||
fun deserializeDeclaration(idSig: IdSignature): IrDeclaration? {
|
||||
cachedDeclaration(idSig)?.let { return it }
|
||||
|
||||
|
||||
+7
-9
@@ -124,8 +124,6 @@ class IcModuleDeserializer(
|
||||
it.file.path
|
||||
}
|
||||
|
||||
private val publicSignatureToIcFileDeserializer = mutableMapOf<IdSignature, IcFileDeserializer>()
|
||||
|
||||
private fun deserializeIrFile(
|
||||
fileProto: ProtoFile,
|
||||
fileIndex: Int,
|
||||
@@ -152,7 +150,6 @@ class IcModuleDeserializer(
|
||||
{ fileDeserializer -> originalEnqueue(fileDeserializer) },
|
||||
icFileData,
|
||||
mapping.state,
|
||||
publicSignatureToIcFileDeserializer,
|
||||
{ fileDeserializer -> enqueue(fileDeserializer) },
|
||||
)
|
||||
|
||||
@@ -167,14 +164,15 @@ class IcModuleDeserializer(
|
||||
moduleReversedFileIndex.putIfAbsent(it, icDeserializer) // TODO Why not simple put?
|
||||
}
|
||||
|
||||
icDeserializer.init()
|
||||
icDeserializer.reversedSignatureIndex.keys.forEach {
|
||||
if (it in icModuleReversedFileIndex) {
|
||||
val existed = icModuleReversedFileIndex[it]!!
|
||||
error("Duplicate signature $it in both ${existed.originalFileDeserializer.file.path} and in ${file.path}")
|
||||
}
|
||||
if (it.isPubliclyVisible) {
|
||||
if (it in icModuleReversedFileIndex) {
|
||||
val existed = icModuleReversedFileIndex[it]!!
|
||||
error("Duplicate signature $it in both ${existed.originalFileDeserializer.file.path} and in ${file.path}")
|
||||
}
|
||||
|
||||
icModuleReversedFileIndex[it] = icDeserializer
|
||||
icModuleReversedFileIndex[it] = icDeserializer
|
||||
}
|
||||
}
|
||||
|
||||
if (strategy.theWholeWorld) {
|
||||
|
||||
@@ -163,10 +163,6 @@ class IdSignatureSerializerWithForIC(
|
||||
localIndex = localIndexOffset
|
||||
scopeIndex = scopeIndexOffset
|
||||
}
|
||||
|
||||
override fun IrDeclaration.createFileLocalSignature(parentSignature: IdSignature, localIndex: Long, description: String?): IdSignature {
|
||||
return IdSignature.GlobalFileLocalSignature(parentSignature, localIndex, fileOrNull?.path ?: "")
|
||||
}
|
||||
}
|
||||
|
||||
fun storeOrder(file: IrFile, fileDeclarations: Iterable<IrDeclaration>, idSigToLong: (IrSymbol) -> Long): SerializedOrder {
|
||||
|
||||
Reference in New Issue
Block a user