JVM run temporary variable elimination before inlining
This commit is contained in:
committed by
TeamCityServer
parent
de3203ee48
commit
f3ca0afd34
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.codegen.optimization.FixStackWithLabelNormalizationM
|
|||||||
import org.jetbrains.kotlin.codegen.optimization.common.*
|
import org.jetbrains.kotlin.codegen.optimization.common.*
|
||||||
import org.jetbrains.kotlin.codegen.optimization.fixStack.*
|
import org.jetbrains.kotlin.codegen.optimization.fixStack.*
|
||||||
import org.jetbrains.kotlin.codegen.optimization.nullCheck.isCheckParameterIsNotNull
|
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.codegen.pseudoInsns.PseudoInsn
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
@@ -739,6 +740,7 @@ class MethodInliner(
|
|||||||
try {
|
try {
|
||||||
InplaceArgumentsMethodTransformer().transform("fake", node)
|
InplaceArgumentsMethodTransformer().transform("fake", node)
|
||||||
FixStackWithLabelNormalizationMethodTransformer().transform("fake", node)
|
FixStackWithLabelNormalizationMethodTransformer().transform("fake", node)
|
||||||
|
TemporaryVariablesEliminationTransformer(inliningContext.state).transform("fake", node)
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
throw wrapException(e, node, "couldn't inline method call")
|
throw wrapException(e, node, "couldn't inline method call")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -139,6 +139,8 @@ class ExpressionCodegen(
|
|||||||
val reifiedTypeParametersUsages: ReifiedTypeParametersUsages,
|
val reifiedTypeParametersUsages: ReifiedTypeParametersUsages,
|
||||||
) : IrElementVisitor<PromisedValue, BlockInfo>, BaseExpressionCodegen {
|
) : IrElementVisitor<PromisedValue, BlockInfo>, BaseExpressionCodegen {
|
||||||
|
|
||||||
|
override fun toString(): String = signature.toString()
|
||||||
|
|
||||||
var finallyDepth = 0
|
var finallyDepth = 0
|
||||||
|
|
||||||
val context = classCodegen.context
|
val context = classCodegen.context
|
||||||
|
|||||||
Reference in New Issue
Block a user