IR: introduce abstract class IrDeclarationBase

The main purpose of this class is to improve performance of IR visitors
and transformers. `IrElementVisitor.visitDeclaration` now takes
IrDeclarationBase as a parameter, and therefore the call to `accept`
there is now a virtual class call, instead of an interface call.

(cherry picked from commit e97d4717fb4c1fe2b6ad8005217150f0e2abe3a7)
This commit is contained in:
Alexander Udalov
2020-07-22 16:16:17 +02:00
committed by Vasily Levchenko
parent 2c1e9a9e2d
commit cbb828d026
2 changed files with 2 additions and 2 deletions
@@ -71,7 +71,7 @@ internal class CallableReferenceLowering(val context: Context): FileLoweringPass
return result
}
override fun visitDeclaration(declaration: IrDeclaration): IrStatement {
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
lateinit var tempGeneratedClasses: MutableList<IrClass>
if (declaration is IrClass) {
tempGeneratedClasses = generatedClasses
@@ -136,7 +136,7 @@ object SetDeclarationsParentVisitor : IrElementVisitor<Unit, IrDeclarationParent
}
}
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent) {
override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent) {
declaration.parent = data
super.visitDeclaration(declaration, data)
}