JVM IR: Optimize field initializers in secondary constructors
This commit is contained in:
committed by
max-kammerer
parent
fed6272de4
commit
cb3a4727cf
+1
-2
@@ -558,10 +558,9 @@ class ExpressionCodegen(
|
||||
override fun visitSetField(expression: IrSetField, data: BlockInfo): PromisedValue {
|
||||
val expressionValue = expression.value
|
||||
// Do not add redundant field initializers that initialize to default values.
|
||||
val inPrimaryConstructor = irFunction is IrConstructor && irFunction.isPrimary
|
||||
val inClassInit = irFunction.origin == JvmLoweredDeclarationOrigin.CLASS_STATIC_INITIALIZER
|
||||
val isFieldInitializer = expression.origin == IrStatementOrigin.INITIALIZE_FIELD
|
||||
val skip = (inPrimaryConstructor || inClassInit) && isFieldInitializer && expressionValue is IrConst<*> &&
|
||||
val skip = (irFunction is IrConstructor || inClassInit) && isFieldInitializer && expressionValue is IrConst<*> &&
|
||||
isDefaultValueForType(expression.symbol.owner.type.asmType, expressionValue.value)
|
||||
return if (skip) unitValue else super.visitSetField(expression, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user