From 1647279a8c09cd8432bef4b57b77a45c72d2d8e2 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Mon, 11 Nov 2019 13:59:47 +0300 Subject: [PATCH] IR: move UniqId to ir.tree module --- .../src/org/jetbrains/kotlin/ir/util/UniqId.kt | 15 +++++++++++++++ .../common/serialization/DeclarationTable.kt | 1 + .../DeserializeDescriptorReference.kt | 1 + .../kotlin/backend/common/serialization/UniqId.kt | 9 --------- .../lower/serialization/ir/JsDeclarationTable.kt | 1 + .../js/lower/serialization/ir/JsIrLinker.kt | 1 + 6 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/UniqId.kt diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/UniqId.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/UniqId.kt new file mode 100644 index 00000000000..1aa979bfc44 --- /dev/null +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/UniqId.kt @@ -0,0 +1,15 @@ +package org.jetbrains.kotlin.ir.util + +// This is an abstract uniqIdIndex any serialized IR declarations gets. +// It is either isLocal and then just gets and ordinary number within its module. +// Or is visible across modules and then gets a hash of mangled name as its index. + +inline class UniqId(val index: Long) { + val isPublic: Boolean get() = (index and (1L shl 63)) != 0L + val isLocal: Boolean get() = (index and (1L shl 63)) == 0L + + companion object { + val NONE = UniqId(0x7fffffffL) + } +} + diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt index 0b6399162ac..6bfaa02591b 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.KotlinMangler +import org.jetbrains.kotlin.ir.util.UniqId class DescriptorTable { private val descriptors = mutableMapOf() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt index 002a5f0d09f..1b12696c703 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.KotlinMangler +import org.jetbrains.kotlin.ir.util.UniqId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt index 2ac291c085c..6f6d101bfb9 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt @@ -10,15 +10,6 @@ import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.protobuf.GeneratedMessageLite import org.jetbrains.kotlin.serialization.deserialization.descriptors.* -// This is an abstract uniqIdIndex any serialized IR declarations gets. -// It is either isLocal and then just gets and ordinary number within its module. -// Or is visible across modules and then gets a hash of mangled name as its index. - -inline class UniqId(val index: Long) { - val isPublic: Boolean get() = (index and (1L shl 63)) != 0L - val isLocal: Boolean get() = (index and (1L shl 63)) == 0L -} - fun > M.tryGetExtension(extension: GeneratedMessageLite.GeneratedExtension) = if (this.hasExtension(extension)) this.getExtension(extension) else null diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt index c8edcb8b8c7..902073663cc 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrTypeParameter import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns +import org.jetbrains.kotlin.ir.util.UniqId import org.jetbrains.kotlin.ir.util.render class JsUniqIdClashTracker : UniqIdClashTracker { diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt index 15b99e53fc1..b18c6505a07 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.descriptors.konan.kotlinLibrary import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.UniqId import org.jetbrains.kotlin.resolve.descriptorUtil.isPublishedApi class JsIrLinker(