JVM IR: Remove varargs from PropertyReferenceLowering
This commit is contained in:
committed by
max-kammerer
parent
4cef1c4901
commit
99f1329c14
+4
-8
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
|||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.ir.createJvmIrBuilder
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.ir.irArrayOf
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
import org.jetbrains.kotlin.ir.builders.*
|
import org.jetbrains.kotlin.ir.builders.*
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.addFunction
|
import org.jetbrains.kotlin.ir.builders.declarations.addFunction
|
||||||
@@ -21,7 +23,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
|||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
import org.jetbrains.kotlin.ir.types.createType
|
import org.jetbrains.kotlin.ir.types.createType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
||||||
@@ -64,9 +65,6 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class
|
|||||||
private val IrMemberAccessExpression.signature: String
|
private val IrMemberAccessExpression.signature: String
|
||||||
get() = getter?.let { getter -> localPropertyIndices[getter]?.let { "<v#$it>" } } ?: getter?.owner?.signature ?: field!!.owner.signature
|
get() = getter?.let { getter -> localPropertyIndices[getter]?.let { "<v#$it>" } } ?: getter?.owner?.signature ?: field!!.owner.signature
|
||||||
|
|
||||||
private val IrMemberAccessExpression.symbol: IrSymbol
|
|
||||||
get() = getter?.owner?.symbol ?: field!!.owner.symbol
|
|
||||||
|
|
||||||
private val arrayItemGetter =
|
private val arrayItemGetter =
|
||||||
context.ir.symbols.array.owner.functions.single { it.name.asString() == "get" }
|
context.ir.symbols.array.owner.functions.single { it.name.asString() == "get" }
|
||||||
|
|
||||||
@@ -321,11 +319,9 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class
|
|||||||
if (kProperties.isNotEmpty()) {
|
if (kProperties.isNotEmpty()) {
|
||||||
irClass.declarations.add(0, kPropertiesField.apply {
|
irClass.declarations.add(0, kPropertiesField.apply {
|
||||||
parent = irClass
|
parent = irClass
|
||||||
initializer = context.createIrBuilder(irClass.symbol).run {
|
initializer = context.createJvmIrBuilder(irClass.symbol).run {
|
||||||
val initializers = kProperties.values.sortedBy { it.index }.map { it.initializer }
|
val initializers = kProperties.values.sortedBy { it.index }.map { it.initializer }
|
||||||
irExprBody(irCall(this@PropertyReferenceLowering.context.ir.symbols.arrayOf).apply {
|
irExprBody(irArrayOf(kPropertiesFieldType, initializers))
|
||||||
putValueArgument(0, IrVarargImpl(startOffset, endOffset, kPropertiesFieldType, kPropertyStarType, initializers))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user