JVM run temporary variable elimination before inlining

This commit is contained in:
Dmitry Petrov
2021-11-26 14:37:56 +03:00
committed by TeamCityServer
parent de3203ee48
commit f3ca0afd34
2 changed files with 4 additions and 0 deletions
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.codegen.optimization.FixStackWithLabelNormalizationM
import org.jetbrains.kotlin.codegen.optimization.common.*
import org.jetbrains.kotlin.codegen.optimization.fixStack.*
import org.jetbrains.kotlin.codegen.optimization.nullCheck.isCheckParameterIsNotNull
import org.jetbrains.kotlin.codegen.optimization.temporaryVals.TemporaryVariablesEliminationTransformer
import org.jetbrains.kotlin.codegen.pseudoInsns.PseudoInsn
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.load.java.JvmAbi
@@ -739,6 +740,7 @@ class MethodInliner(
try {
InplaceArgumentsMethodTransformer().transform("fake", node)
FixStackWithLabelNormalizationMethodTransformer().transform("fake", node)
TemporaryVariablesEliminationTransformer(inliningContext.state).transform("fake", node)
} catch (e: Throwable) {
throw wrapException(e, node, "couldn't inline method call")
}
@@ -139,6 +139,8 @@ class ExpressionCodegen(
val reifiedTypeParametersUsages: ReifiedTypeParametersUsages,
) : IrElementVisitor<PromisedValue, BlockInfo>, BaseExpressionCodegen {
override fun toString(): String = signature.toString()
var finallyDepth = 0
val context = classCodegen.context