From 286090a1db5523e6dfdf965c78db05303ca3ce1b Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Wed, 29 Mar 2023 09:39:52 +0200 Subject: [PATCH] [IR] Drop `inlinePureArguments` parameter from `FunctionInlining` Replaced its usages with `alwaysCreateTemporaryVariablesForArguments` --- .../org/jetbrains/kotlin/backend/common/ir/IrInlineUtils.kt | 2 ++ .../kotlin/backend/common/lower/inline/FunctionInlining.kt | 6 ++---- .../lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrInlineUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrInlineUtils.kt index 2d42769145f..ed12e716e85 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrInlineUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrInlineUtils.kt @@ -127,6 +127,7 @@ fun IrInlinable.inline(target: IrDeclarationParent, arguments: List { return this.statements .filterIsInstance() @@ -146,6 +147,7 @@ fun IrInlinedFunctionBlock.getDefaultAdditionalStatementsFromInlinedBlock(): Lis .singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList() } +// `IrInlinedFunctionBlock`.statements == `getAdditionalStatementsFromInlinedBlock` + `getOriginalStatementsFromInlinedBlock` fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List { return this.statements .filter { it !is IrComposite || !(it.origin == INLINED_FUNCTION_ARGUMENTS || it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS) } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index c812084cf7c..fa3ada70226 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -84,7 +84,6 @@ class FunctionInlining( private val innerClassesSupport: InnerClassesSupport? = null, private val insertAdditionalImplicitCasts: Boolean = false, private val alwaysCreateTemporaryVariablesForArguments: Boolean = false, - private val inlinePureArguments: Boolean = true, private val regenerateInlinedAnonymousObjects: Boolean = false, private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false, private val allowExternalInlining: Boolean = false, @@ -845,8 +844,7 @@ class FunctionInlining( } private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean = - !(isImmutableVariableLoad && parameter.index >= 0) && - !(argumentExpression.isPure(false, context = context) && inlinePureArguments) + !(isImmutableVariableLoad && parameter.index >= 0) && !argumentExpression.isPure(false, context = context) private fun createTemporaryVariable( parameter: IrValueParameter, @@ -873,7 +871,7 @@ class FunctionInlining( ) if (alwaysCreateTemporaryVariablesForArguments) { - variable.name = parameter.name + variable.name = Name.identifier(parameter.name.asStringStripSpecialMarkers()) } return variable diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 94b3bdf9539..ecfc16104b7 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -305,7 +305,7 @@ internal val functionInliningPhase = makeIrModulePhase( FunctionInlining( context, JvmInlineFunctionResolver(), context.innerClassesSupport, - inlinePureArguments = false, + alwaysCreateTemporaryVariablesForArguments = true, regenerateInlinedAnonymousObjects = true, inlineArgumentsWithTheirOriginalTypeAndOffset = true )