[IR] Drop inlinePureArguments parameter from FunctionInlining
Replaced its usages with `alwaysCreateTemporaryVariablesForArguments`
This commit is contained in:
@@ -127,6 +127,7 @@ fun IrInlinable.inline(target: IrDeclarationParent, arguments: List<IrValueDecla
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// `getAdditionalStatementsFromInlinedBlock` == `getNonDefaultAdditionalStatementsFromInlinedBlock` + `getDefaultAdditionalStatementsFromInlinedBlock`
|
||||||
fun IrInlinedFunctionBlock.getAdditionalStatementsFromInlinedBlock(): List<IrStatement> {
|
fun IrInlinedFunctionBlock.getAdditionalStatementsFromInlinedBlock(): List<IrStatement> {
|
||||||
return this.statements
|
return this.statements
|
||||||
.filterIsInstance<IrComposite>()
|
.filterIsInstance<IrComposite>()
|
||||||
@@ -146,6 +147,7 @@ fun IrInlinedFunctionBlock.getDefaultAdditionalStatementsFromInlinedBlock(): Lis
|
|||||||
.singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList()
|
.singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// `IrInlinedFunctionBlock`.statements == `getAdditionalStatementsFromInlinedBlock` + `getOriginalStatementsFromInlinedBlock`
|
||||||
fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List<IrStatement> {
|
fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List<IrStatement> {
|
||||||
return this.statements
|
return this.statements
|
||||||
.filter { it !is IrComposite || !(it.origin == INLINED_FUNCTION_ARGUMENTS || it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS) }
|
.filter { it !is IrComposite || !(it.origin == INLINED_FUNCTION_ARGUMENTS || it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS) }
|
||||||
|
|||||||
+2
-4
@@ -84,7 +84,6 @@ class FunctionInlining(
|
|||||||
private val innerClassesSupport: InnerClassesSupport? = null,
|
private val innerClassesSupport: InnerClassesSupport? = null,
|
||||||
private val insertAdditionalImplicitCasts: Boolean = false,
|
private val insertAdditionalImplicitCasts: Boolean = false,
|
||||||
private val alwaysCreateTemporaryVariablesForArguments: Boolean = false,
|
private val alwaysCreateTemporaryVariablesForArguments: Boolean = false,
|
||||||
private val inlinePureArguments: Boolean = true,
|
|
||||||
private val regenerateInlinedAnonymousObjects: Boolean = false,
|
private val regenerateInlinedAnonymousObjects: Boolean = false,
|
||||||
private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false,
|
private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false,
|
||||||
private val allowExternalInlining: Boolean = false,
|
private val allowExternalInlining: Boolean = false,
|
||||||
@@ -845,8 +844,7 @@ class FunctionInlining(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean =
|
private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean =
|
||||||
!(isImmutableVariableLoad && parameter.index >= 0) &&
|
!(isImmutableVariableLoad && parameter.index >= 0) && !argumentExpression.isPure(false, context = context)
|
||||||
!(argumentExpression.isPure(false, context = context) && inlinePureArguments)
|
|
||||||
|
|
||||||
private fun createTemporaryVariable(
|
private fun createTemporaryVariable(
|
||||||
parameter: IrValueParameter,
|
parameter: IrValueParameter,
|
||||||
@@ -873,7 +871,7 @@ class FunctionInlining(
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (alwaysCreateTemporaryVariablesForArguments) {
|
if (alwaysCreateTemporaryVariablesForArguments) {
|
||||||
variable.name = parameter.name
|
variable.name = Name.identifier(parameter.name.asStringStripSpecialMarkers())
|
||||||
}
|
}
|
||||||
|
|
||||||
return variable
|
return variable
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ internal val functionInliningPhase = makeIrModulePhase(
|
|||||||
|
|
||||||
FunctionInlining(
|
FunctionInlining(
|
||||||
context, JvmInlineFunctionResolver(), context.innerClassesSupport,
|
context, JvmInlineFunctionResolver(), context.innerClassesSupport,
|
||||||
inlinePureArguments = false,
|
alwaysCreateTemporaryVariablesForArguments = true,
|
||||||
regenerateInlinedAnonymousObjects = true,
|
regenerateInlinedAnonymousObjects = true,
|
||||||
inlineArgumentsWithTheirOriginalTypeAndOffset = true
|
inlineArgumentsWithTheirOriginalTypeAndOffset = true
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user