[JS IC] Drop special IdSignatureSerializer for IC

This commit is contained in:
Roman Artemev
2021-07-28 15:38:06 +03:00
committed by teamcityserver
parent 4a601ebf95
commit b1251c1716
5 changed files with 24 additions and 51 deletions
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.ir.backend.js.ic
import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer
import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.backend.js.JsMapping
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsGlobalDeclarationTable
@@ -79,7 +78,7 @@ class IcSerializer(
val symbolToSignature = fileDeserializer.symbolDeserializer.deserializedSymbols.entries.associate { (idSig, symbol) -> symbol to idSig }.toMutableMap()
val icDeclarationTable = IcDeclarationTable(globalDeclarationTable, irFactory, 1000000, 1000000, symbolToSignature)
val icDeclarationTable = IcDeclarationTable(globalDeclarationTable, irFactory, 1000000, symbolToSignature)
val fileSerializer = JsIrFileSerializer(
linker.messageLogger,
icDeclarationTable,
@@ -138,12 +137,12 @@ class IcSerializer(
class IcDeclarationTable(
globalDeclarationTable: JsGlobalDeclarationTable,
val irFactory: PersistentIrFactory,
newLocalIndex: Long,
newScopeIndex: Int,
startIndex: Int,
val existingMappings: MutableMap<IrSymbol, IdSignature>
) : DeclarationTable(globalDeclarationTable) {
override val signaturer: IdSignatureSerializer = IdSignatureSerializerWithForIC(globalDeclarationTable.publicIdSignatureComputer, this, newLocalIndex, newScopeIndex)
override val signaturer: IdSignatureSerializer =
IdSignatureSerializer(globalDeclarationTable.publicIdSignatureComputer, this, startIndex)
override fun signatureByDeclaration(declaration: IrDeclaration, compatibleMode: Boolean): IdSignature {
return existingMappings.getOrPut(declaration.symbol) {
@@ -153,18 +152,6 @@ class IcSerializer(
}
}
class IdSignatureSerializerWithForIC(
publicSignatureBuilder: PublicIdSignatureComputer,
table: DeclarationTable,
localIndexOffset: Long = 0,
scopeIndexOffset: Int = 0,
) : IdSignatureSerializer(publicSignatureBuilder, table) {
init {
localIndex = localIndexOffset
scopeIndex = scopeIndexOffset
}
}
fun storeOrder(file: IrFile, fileDeclarations: Iterable<IrDeclaration>, idSigToLong: (IrSymbol) -> Long): SerializedOrder {
val topLevelSignatures = mutableListOf<Long>()
val containerSignatures = mutableListOf<Long>()
@@ -7,12 +7,10 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder
import org.jetbrains.kotlin.backend.common.serialization.*
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.backend.js.JsMapping
import org.jetbrains.kotlin.ir.backend.js.ic.IcModuleDeserializer
import org.jetbrains.kotlin.ir.backend.js.ic.IdSignatureSerializerWithForIC
import org.jetbrains.kotlin.ir.backend.js.ic.SerializedIcData
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
@@ -35,14 +33,7 @@ class JsIrLinker(
private val useGlobalSignatures: Boolean = false,
) : KotlinIrLinker(currentModule, messageLogger, builtIns, symbolTable, emptyList()) {
override val fakeOverrideBuilder = FakeOverrideBuilder(
this, symbolTable, JsManglerIr, IrTypeSystemContextImpl(builtIns), signatureSerializerFactory = { publicSignatureBuilder, table ->
if (useGlobalSignatures) IdSignatureSerializerWithForIC(publicSignatureBuilder, table) else IdSignatureSerializer(
publicSignatureBuilder,
table
)
}
)
override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JsManglerIr, IrTypeSystemContextImpl(builtIns))
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean =
moduleDescriptor === moduleDescriptor.builtIns.builtInsModule