[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
+4
-3
@@ -22,9 +22,10 @@ import org.jetbrains.kotlin.ir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val context: C) : FileLoweringPass {
|
||||
|
||||
protected object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||
protected companion object {
|
||||
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||
}
|
||||
|
||||
protected abstract val stateMachineMethodName: Name
|
||||
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.filterIsInstanceAnd
|
||||
|
||||
val ANNOTATION_IMPLEMENTATION = object : IrDeclarationOriginImpl("ANNOTATION_IMPLEMENTATION", isSynthetic = true) {}
|
||||
val ANNOTATION_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
|
||||
|
||||
class AnnotationImplementationLowering(
|
||||
val transformer: (IrFile) -> AnnotationImplementationTransformer
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ private class ArrayConstructorTransformer(
|
||||
}
|
||||
|
||||
|
||||
private object ArrayConstructorWrapper : IrDeclarationOriginImpl("arrayConstructorWrapper")
|
||||
private val ArrayConstructorWrapper = IrDeclarationOriginImpl("arrayConstructorWrapper")
|
||||
|
||||
class ArrayConstructorReferenceLowering(val context: CommonBackendContext) : BodyLoweringPass {
|
||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.util.setDeclarationsParent
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object FINALLY_EXPRESSION : IrStatementOriginImpl("FINALLY_EXPRESSION")
|
||||
val FINALLY_EXPRESSION by IrStatementOriginImpl
|
||||
|
||||
class FinallyBlocksLowering(val context: CommonBackendContext, private val throwableType: IrType): FileLoweringPass, IrElementTransformerVoidWithContext() {
|
||||
|
||||
|
||||
+8
-6
@@ -59,9 +59,9 @@ val IrDeclaration.parentsWithSelf: Sequence<IrDeclarationParent>
|
||||
val IrDeclaration.parents: Sequence<IrDeclarationParent>
|
||||
get() = generateSequence(parent) { (it as? IrDeclaration)?.parent }
|
||||
|
||||
object BOUND_VALUE_PARAMETER : IrDeclarationOriginImpl("BOUND_VALUE_PARAMETER")
|
||||
val BOUND_VALUE_PARAMETER by IrDeclarationOriginImpl
|
||||
|
||||
object BOUND_RECEIVER_PARAMETER : IrDeclarationOriginImpl("BOUND_RECEIVER_PARAMETER")
|
||||
val BOUND_RECEIVER_PARAMETER by IrDeclarationOriginImpl
|
||||
|
||||
/*
|
||||
Local functions raised in LocalDeclarationLowering continue to refer to
|
||||
@@ -86,11 +86,13 @@ class LocalDeclarationsLowering(
|
||||
runOnFilePostfix(irFile)
|
||||
}
|
||||
|
||||
object DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE :
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
||||
companion object {
|
||||
val DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE =
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
||||
|
||||
object DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE :
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
||||
val DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE =
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
||||
}
|
||||
|
||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||
LocalDeclarationsTransformer(irBody, container).lowerLocalDeclarations()
|
||||
|
||||
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.lower
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||
|
||||
interface LoweredStatementOrigins {
|
||||
object STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE : IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
||||
object SYNTHESIZED_INIT_BLOCK : IrStatementOriginImpl("SYNTHESIZED_INIT_BLOCK")
|
||||
object DEFAULT_DISPATCH_CALL : IrStatementOriginImpl("DEFAULT_DISPATCH_CALL")
|
||||
}
|
||||
object LoweredStatementOrigins {
|
||||
val STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE = IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
||||
val SYNTHESIZED_INIT_BLOCK by IrStatementOriginImpl
|
||||
val DEFAULT_DISPATCH_CALL by IrStatementOriginImpl
|
||||
}
|
||||
|
||||
+3
-3
@@ -917,6 +917,6 @@ class FunctionInlining(
|
||||
}
|
||||
}
|
||||
|
||||
object INLINED_FUNCTION_REFERENCE : IrStatementOriginImpl("INLINED_FUNCTION_REFERENCE")
|
||||
object INLINED_FUNCTION_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_ARGUMENTS")
|
||||
object INLINED_FUNCTION_DEFAULT_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_DEFAULT_ARGUMENTS")
|
||||
val INLINED_FUNCTION_REFERENCE by IrStatementOriginImpl
|
||||
val INLINED_FUNCTION_ARGUMENTS by IrStatementOriginImpl
|
||||
val INLINED_FUNCTION_DEFAULT_ARGUMENTS by IrStatementOriginImpl
|
||||
|
||||
Reference in New Issue
Block a user