[IR SERIALIZATION] Refactored uniqId allocation

- split DeclarationTable into local and global one
 - minimize usages of kotlin mangler
 - clean up interfaces
This commit is contained in:
Roman Artemev
2019-08-08 20:05:03 +03:00
committed by romanart
parent 19b5d57f0e
commit df5f6a2a12
9 changed files with 82 additions and 66 deletions
@@ -19,6 +19,9 @@ import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.*
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrLinker
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSerializer
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.newJsDescriptorUniqId
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.*
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
@@ -291,8 +294,6 @@ fun serializeModuleIntoKlib(
moduleFragment: IrModuleFragment,
nopack: Boolean
) {
val declarationTable = JsDeclarationTable(moduleFragment.irBuiltins, DescriptorTable())
val descriptorTable = DescriptorTable()
val serializedIr = JsIrModuleSerializer(emptyLoggingContext, moduleFragment.irBuiltins, descriptorTable).serializedIrModule(moduleFragment)
@@ -17,4 +17,4 @@ class JsDeclarationTable(builtIns: IrBuiltIns, descriptorTable: DescriptorTable)
loadKnownBuiltins()
currentIndex = 0
}
}
}
@@ -13,4 +13,4 @@ class JsIrFileSerializer(
logger: LoggingContext,
declarationTable: DeclarationTable,
bodiesOnlyForInlines: Boolean = false
) : IrFileSerializer(logger, declarationTable, JsMangler, bodiesOnlyForInlines)
) : IrFileSerializer(logger, declarationTable, bodiesOnlyForInlines)
@@ -6,14 +6,17 @@
package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir
import org.jetbrains.kotlin.backend.common.LoggingContext
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
class JsIrModuleSerializer(logger: LoggingContext, private val irBuiltIns: IrBuiltIns, private val descriptorTable: DescriptorTable) :
IrModuleSerializer<JsIrFileSerializer>(logger, JsMangler) {
class JsIrModuleSerializer(logger: LoggingContext, irBuiltIns: IrBuiltIns, private val descriptorTable: DescriptorTable) :
IrModuleSerializer<JsIrFileSerializer>(logger) {
private val globalDeclarationTable = JsGlobalDeclarationTable(irBuiltIns)
override fun createSerializerForFile(file: IrFile): JsIrFileSerializer =
JsIrFileSerializer(logger, JsDeclarationTable(irBuiltIns, descriptorTable))
JsIrFileSerializer(logger, DeclarationTable(descriptorTable, globalDeclarationTable, 0))
}