Don't share descriptor table between runs.

This commit is contained in:
Alexander Gorshenev
2017-04-13 14:38:38 +03:00
committed by alexander-gorshenev
parent 2403f874a6
commit 3139ae279c
3 changed files with 3 additions and 8 deletions
@@ -121,14 +121,13 @@ internal fun DeserializedSimpleFunctionDescriptor.nameResolver(): NameResolver {
// Kotlin descriptors and types for IR. // Kotlin descriptors and types for IR.
internal class IrDescriptorDeserializer(val context: Context, internal class IrDescriptorDeserializer(val context: Context,
val deserializationDescriptorIndex: IrDeserializationDescriptorIndex,
val rootFunction: DeserializedSimpleFunctionDescriptor, val rootFunction: DeserializedSimpleFunctionDescriptor,
val localDeserializer: LocalDeclarationDeserializer) { val localDeserializer: LocalDeclarationDeserializer) {
val loopIndex = mutableMapOf<Int, IrLoop>() val loopIndex = mutableMapOf<Int, IrLoop>()
val nameResolver = rootFunction.nameResolver() as NameResolverImpl val nameResolver = rootFunction.nameResolver() as NameResolverImpl
val nameTable = rootFunction.nameTable() val nameTable = rootFunction.nameTable()
val descriptorIndex = deserializationDescriptorIndex.map val descriptorIndex = IrDeserializationDescriptorIndex(context.irBuiltIns).map
fun deserializeKotlinType(proto: KonanIr.KotlinType): KotlinType { fun deserializeKotlinType(proto: KonanIr.KotlinType): KotlinType {
@@ -562,7 +562,6 @@ internal class IrSerializer(val context: Context,
// --------- Deserializer part ----------------------------- // --------- Deserializer part -----------------------------
internal class IrDeserializer(val context: Context, internal class IrDeserializer(val context: Context,
val descriptorIndex: IrDeserializationDescriptorIndex,
val rootFunction: DeserializedSimpleFunctionDescriptor) { val rootFunction: DeserializedSimpleFunctionDescriptor) {
val loopIndex = mutableMapOf<Int, IrLoop>() val loopIndex = mutableMapOf<Int, IrLoop>()
@@ -570,7 +569,7 @@ internal class IrDeserializer(val context: Context,
val localDeserializer = LocalDeclarationDeserializer(rootFunction, context.moduleDescriptor) val localDeserializer = LocalDeclarationDeserializer(rootFunction, context.moduleDescriptor)
val descriptorDeserializer = IrDescriptorDeserializer( val descriptorDeserializer = IrDescriptorDeserializer(
context, descriptorIndex, rootFunction, localDeserializer) context, rootFunction, localDeserializer)
fun deserializeKotlinType(proto: KonanIr.KotlinType) fun deserializeKotlinType(proto: KonanIr.KotlinType)
@@ -41,8 +41,6 @@ import org.jetbrains.kotlin.backend.common.validateIrFunction
internal class DeserializerDriver(val context: Context) { internal class DeserializerDriver(val context: Context) {
val descriptorIndex = IrDeserializationDescriptorIndex(context.irBuiltIns)
internal fun deserializeInlineBody(descriptor: FunctionDescriptor): IrDeclaration? { internal fun deserializeInlineBody(descriptor: FunctionDescriptor): IrDeclaration? {
if (!descriptor.needsInlining) return null if (!descriptor.needsInlining) return null
@@ -54,7 +52,7 @@ internal class DeserializerDriver(val context: Context) {
PhaseManager(context).phase(KonanPhase.DESERIALIZER) { PhaseManager(context).phase(KonanPhase.DESERIALIZER) {
context.log("### IR deserialization attempt:\t$descriptor") context.log("### IR deserialization attempt:\t$descriptor")
try { try {
deserializedIr = IrDeserializer(context, descriptorIndex, descriptor).decodeDeclaration() deserializedIr = IrDeserializer(context, descriptor).decodeDeclaration()
context.log("${deserializedIr!!.descriptor}") context.log("${deserializedIr!!.descriptor}")
context.log(ir2stringWhole(deserializedIr!!)) context.log(ir2stringWhole(deserializedIr!!))
context.log("IR deserialization SUCCESS:\t$descriptor") context.log("IR deserialization SUCCESS:\t$descriptor")
@@ -84,7 +82,6 @@ internal class DeserializerDriver(val context: Context) {
} }
return true return true
} }
} }
} }