[IR] Drastically simplify the hierarchy of IR origins
IrStatementOriginImpl and IrDeclarationOriginImpl were made final classes to simplify the creation of them (a delegate provider was added) and to optimize performance when comparing the origins by type and name
This commit is contained in:
committed by
Space Team
parent
f2ddae533e
commit
a3b55cf758
+1
-1
@@ -44,7 +44,7 @@ private fun Context.getTypeConversionImpl(
|
||||
}.symbol
|
||||
}
|
||||
|
||||
internal object DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION : IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
|
||||
internal val DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION = IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
|
||||
|
||||
private fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
|
||||
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
|
||||
internal object DECLARATION_ORIGIN_FUNCTION_CLASS : IrDeclarationOriginImpl("DECLARATION_ORIGIN_FUNCTION_CLASS")
|
||||
internal val DECLARATION_ORIGIN_FUNCTION_CLASS by IrDeclarationOriginImpl
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
val IrPackageFragment.isFunctionInterfaceFile get() = packageFragmentDescriptor is FunctionInterfacePackageFragment
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.types.typeWith
|
||||
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal object DECLARATION_ORIGIN_ENTRY_POINT : IrDeclarationOriginImpl("ENTRY_POINT")
|
||||
internal val DECLARATION_ORIGIN_ENTRY_POINT = IrDeclarationOriginImpl("ENTRY_POINT")
|
||||
|
||||
internal fun makeEntryPoint(generationState: NativeGenerationState): IrFunction {
|
||||
val context = generationState.context
|
||||
|
||||
+3
-1
@@ -1100,7 +1100,9 @@ private class ObjCBlockPointerValuePassing(
|
||||
)
|
||||
}
|
||||
|
||||
private object OBJC_BLOCK_FUNCTION_IMPL : IrDeclarationOriginImpl("OBJC_BLOCK_FUNCTION_IMPL")
|
||||
private companion object {
|
||||
private val OBJC_BLOCK_FUNCTION_IMPL by IrDeclarationOriginImpl
|
||||
}
|
||||
|
||||
private fun IrBuilderWithScope.createKotlinFunctionObject(blockPointer: IrExpression): IrExpression {
|
||||
val constructor = generateKotlinFunctionClass()
|
||||
|
||||
+4
-4
@@ -151,7 +151,7 @@ internal class KotlinCBridgeBuilder(
|
||||
isKotlinToC: Boolean,
|
||||
foreignExceptionMode: ForeignExceptionMode.Mode = ForeignExceptionMode.default
|
||||
) {
|
||||
private val origin: CBridgeOrigin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
|
||||
private val origin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
|
||||
|
||||
private val kotlinBridgeBuilder = KotlinBridgeBuilder(startOffset, endOffset, cName, stubs, isExternal = isKotlinToC, foreignExceptionMode, origin)
|
||||
private val cBridgeBuilder = CFunctionBuilder()
|
||||
@@ -261,7 +261,7 @@ internal class CCallBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
sealed class CBridgeOrigin(name: String): IrDeclarationOriginImpl(name, isSynthetic = true) {
|
||||
object KOTLIN_TO_C_BRIDGE: CBridgeOrigin("KOTLIN_TO_C_BRIDGE")
|
||||
object C_TO_KOTLIN_BRIDGE: CBridgeOrigin("C_TO_KOTLIN_BRIDGE")
|
||||
object CBridgeOrigin {
|
||||
val KOTLIN_TO_C_BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||
val C_TO_KOTLIN_BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||
}
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
/**
|
||||
* Allows to distinguish external declarations to internal ABI.
|
||||
*/
|
||||
internal object INTERNAL_ABI_ORIGIN : IrDeclarationOriginImpl("INTERNAL_ABI")
|
||||
internal val INTERNAL_ABI_ORIGIN = IrDeclarationOriginImpl("INTERNAL_ABI")
|
||||
|
||||
/**
|
||||
* Sometimes we need to reference symbols that are not declared in metadata.
|
||||
|
||||
+3
-1
@@ -288,5 +288,7 @@ internal class PropertyDelegationLowering(val generationState: NativeGenerationS
|
||||
return type.classifier == expectedClass
|
||||
}
|
||||
|
||||
private object DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION : IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
||||
private companion object {
|
||||
private val DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION = IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.ARGUMENTS_REORDERING_FOR_CALL
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.ARGUMENTS_REORDERING_FOR_CALL
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.types.classifierOrNull
|
||||
import org.jetbrains.kotlin.ir.types.typeWith
|
||||
@@ -85,7 +85,7 @@ internal class EnumsSupport(
|
||||
}
|
||||
}
|
||||
|
||||
internal object DECLARATION_ORIGIN_ENUM : IrDeclarationOriginImpl("ENUM")
|
||||
internal val DECLARATION_ORIGIN_ENUM = IrDeclarationOriginImpl("ENUM")
|
||||
|
||||
internal class NativeEnumWhenLowering constructor(context: Context) : EnumWhenLowering(context) {
|
||||
override fun mapConstEnumEntry(entry: IrEnumEntry): Int {
|
||||
|
||||
+2
-2
@@ -61,9 +61,9 @@ import org.jetbrains.kotlin.name.Name
|
||||
* ```
|
||||
*/
|
||||
internal class FunctionReferenceLowering(val generationState: NativeGenerationState) : FileLoweringPass {
|
||||
private object DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||
|
||||
companion object {
|
||||
private val DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL = IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||
|
||||
fun isLoweredFunctionReference(declaration: IrDeclaration): Boolean =
|
||||
declaration.origin == DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL
|
||||
}
|
||||
|
||||
+4
-4
@@ -26,10 +26,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
|
||||
internal class InitializersLowering(val context: CommonBackendContext) : ClassLoweringPass {
|
||||
|
||||
object STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER : IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
|
||||
object DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER : IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
companion object {
|
||||
val STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER = IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
val DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER = IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
}
|
||||
|
||||
override fun lower(irClass: IrClass) {
|
||||
if (irClass.isInterface) return
|
||||
|
||||
+3
-2
@@ -312,8 +312,9 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
|
||||
}
|
||||
}
|
||||
|
||||
private object OVERRIDING_INITIALIZER_BY_CONSTRUCTOR :
|
||||
IrDeclarationOriginImpl("OVERRIDING_INITIALIZER_BY_CONSTRUCTOR")
|
||||
private companion object {
|
||||
private val OVERRIDING_INITIALIZER_BY_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
}
|
||||
|
||||
private fun IrConstructor.overridesConstructor(other: IrConstructor): Boolean {
|
||||
return this.descriptor.valueParameters.size == other.descriptor.valueParameters.size &&
|
||||
|
||||
+4
-3
@@ -171,7 +171,8 @@ internal class ObjectClassLowering(val generationState: NativeGenerationState) :
|
||||
}
|
||||
|
||||
|
||||
// This is a hack to avoid early freezing. Should be removed when freezing is removed
|
||||
object IrStatementOriginFieldPreInit : IrStatementOriginImpl("FIELD_PRE_INIT")
|
||||
|
||||
companion object {
|
||||
// This is a hack to avoid early freezing. Should be removed when freezing is removed
|
||||
val IrStatementOriginFieldPreInit = IrStatementOriginImpl("FIELD_PRE_INIT")
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -25,9 +25,9 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal object DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
||||
internal object DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
|
||||
internal object DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
|
||||
internal val DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
||||
internal val DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
|
||||
internal val DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
|
||||
|
||||
internal val IrFunction.isStaticInitializer: Boolean
|
||||
get() = origin == DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER
|
||||
|
||||
+3
-4
@@ -45,11 +45,10 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
|
||||
internal class TestProcessor (val context: Context) {
|
||||
|
||||
object TEST_SUITE_CLASS: IrDeclarationOriginImpl("TEST_SUITE_CLASS")
|
||||
object TEST_SUITE_GENERATED_MEMBER: IrDeclarationOriginImpl("TEST_SUITE_GENERATED_MEMBER")
|
||||
|
||||
companion object {
|
||||
val TEST_SUITE_CLASS by IrDeclarationOriginImpl
|
||||
val TEST_SUITE_GENERATED_MEMBER by IrDeclarationOriginImpl
|
||||
|
||||
val COMPANION_GETTER_NAME = Name.identifier("getCompanion")
|
||||
val INSTANCE_GETTER_NAME = Name.identifier("createInstance")
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.*
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
|
||||
object IR_DECLARATION_ORIGIN_VOLATILE : IrDeclarationOriginImpl("VOLATILE")
|
||||
val IR_DECLARATION_ORIGIN_VOLATILE = IrDeclarationOriginImpl("VOLATILE")
|
||||
|
||||
internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass {
|
||||
private val symbols = context.ir.symbols
|
||||
|
||||
+2
-2
@@ -33,8 +33,8 @@ internal class ExternalModulesDFG(val allTypes: List<DataFlowIR.Type.Declared>,
|
||||
val publicFunctions: Map<Long, DataFlowIR.FunctionSymbol.Public>,
|
||||
val functionDFGs: Map<DataFlowIR.FunctionSymbol, DataFlowIR.Function>)
|
||||
|
||||
internal object STATEMENT_ORIGIN_PRODUCER_INVOCATION : IrStatementOriginImpl("PRODUCER_INVOCATION")
|
||||
internal object STATEMENT_ORIGIN_JOB_INVOCATION : IrStatementOriginImpl("JOB_INVOCATION")
|
||||
internal val STATEMENT_ORIGIN_PRODUCER_INVOCATION = IrStatementOriginImpl("PRODUCER_INVOCATION")
|
||||
internal val STATEMENT_ORIGIN_JOB_INVOCATION = IrStatementOriginImpl("JOB_INVOCATION")
|
||||
|
||||
private fun IrTypeOperator.isCast() =
|
||||
this == IrTypeOperator.CAST || this == IrTypeOperator.IMPLICIT_CAST || this == IrTypeOperator.SAFE_CAST
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ internal class KonanForwardDeclarationModuleDeserializer(
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val FORWARD_DECLARATION_ORIGIN = object : IrDeclarationOriginImpl("FORWARD_DECLARATION_ORIGIN") {}
|
||||
private val FORWARD_DECLARATION_ORIGIN by IrDeclarationOriginImpl
|
||||
}
|
||||
|
||||
private val declaredDeclaration = mutableMapOf<IdSignature, IrClass>()
|
||||
|
||||
Reference in New Issue
Block a user