[IR BE] Refactor DefaultArgumentStubGenerator a bit

This commit is contained in:
Roman Artemev
2020-10-05 22:09:38 +03:00
parent d7e0649d93
commit f597585ffb
@@ -109,13 +109,13 @@ open class DefaultArgumentStubGenerator(
++sourceParameterIndex ++sourceParameterIndex
} }
val parameter = newIrFunction.valueParameters[valueParameter.index] val parameter = newIrFunction.valueParameters[valueParameter.index]
val remapped = if (valueParameter.defaultValue != null) { val remapped = valueParameter.defaultValue?.let { defaultValue ->
val mask = irGet(newIrFunction.valueParameters[irFunction.valueParameters.size + valueParameter.index / 32]) val mask = irGet(newIrFunction.valueParameters[irFunction.valueParameters.size + valueParameter.index / 32])
val bit = irInt(1 shl (sourceParameterIndex % 32)) val bit = irInt(1 shl (sourceParameterIndex % 32))
val defaultFlag = val defaultFlag =
irCallOp(intAnd, context.irBuiltIns.intType, mask, bit) irCallOp(intAnd, context.irBuiltIns.intType, mask, bit)
val expression = valueParameter.defaultValue!!.expression val expression = defaultValue.expression
.prepareToBeUsedIn(newIrFunction) .prepareToBeUsedIn(newIrFunction)
.transform(object : IrElementTransformerVoid() { .transform(object : IrElementTransformerVoid() {
override fun visitGetValue(expression: IrGetValue): IrExpression { override fun visitGetValue(expression: IrGetValue): IrExpression {
@@ -126,9 +126,8 @@ open class DefaultArgumentStubGenerator(
}, null) }, null)
selectArgumentOrDefault(defaultFlag, parameter, expression) selectArgumentOrDefault(defaultFlag, parameter, expression)
} else { } ?: parameter
parameter
}
params.add(remapped) params.add(remapped)
variables[valueParameter] = remapped variables[valueParameter] = remapped
} }