From f075c9d50b642fe748e280657e70730c62198624 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 17 Feb 2023 11:39:28 +0100 Subject: [PATCH] IR: extract & rename getTopLevelDeclaration() to IrLazyFunctionBase --- .../kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt | 10 +--------- .../kotlin/ir/declarations/lazy/IrLazyFunction.kt | 10 +--------- .../ir/declarations/lazy/IrLazyFunctionBase.kt | 12 +++++++++--- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt index c70c4f64688..f6deec047c5 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt @@ -123,18 +123,10 @@ abstract class AbstractFir2IrLazyFunction( private fun tryLoadIr(): Boolean { if (!isInline || isFakeOverride) return false if (!extensions.irNeedsDeserialization) return false - val toplevel = getToplevel() + val toplevel = getTopLevelDeclaration() return (toplevel as? DeserializableClass)?.loadIr() ?: false } - private fun getToplevel(): IrDeclaration { - var current: IrDeclaration = this - while (current.parent !is IrPackageFragment) { - current = current.parent as IrDeclaration - } - return current - } - companion object { private val JVM_STATIC_CLASS_ID = ClassId.topLevel(JVM_STATIC_ANNOTATION_FQ_NAME) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt index fab9bec05a3..611e87fd14f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt @@ -113,18 +113,10 @@ class IrLazyFunction( private fun tryLoadIr(): Boolean { if (!stubGenerator.extensions.irDeserializationEnabled) return false if (!isInline || isFakeOverride) return false - val toplevel = getToplevel() + val toplevel = getTopLevelDeclaration() return (toplevel as? DeserializableClass)?.loadIr() ?: false } - private fun getToplevel(): IrDeclaration { - var current: IrDeclaration = this - while (current.parent !is IrPackageFragment) { - current = current.parent as IrDeclaration - } - return current - } - init { symbol.bind(this) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt index 77c0887dd07..6180bb8d39d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt @@ -9,9 +9,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET -import org.jetbrains.kotlin.ir.declarations.IrFunction -import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer -import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name @@ -22,6 +20,14 @@ interface IrLazyFunctionBase : IrLazyDeclarationBase, IrTypeParametersContainer val initialSignatureFunction: IrFunction? + fun getTopLevelDeclaration(): IrDeclaration { + var current: IrDeclaration = this + while (current.parent !is IrPackageFragment) { + current = current.parent as IrDeclaration + } + return current + } + fun createInitialSignatureFunction(): Lazy = // Need SYNCHRONIZED; otherwise two stubs generated in parallel may fight for the same symbol. lazy(LazyThreadSafetyMode.SYNCHRONIZED) {