JVM don't optimize temporary vals in old back-end

This commit is contained in:
Dmitry Petrov
2021-08-23 15:13:22 +03:00
committed by TeamCityServer
parent 568958492a
commit d8f6d82411
9 changed files with 16 additions and 13 deletions
@@ -53,7 +53,7 @@ class OptimizationMethodVisitor(
RedundantCheckCastEliminationMethodTransformer(),
ConstantConditionEliminationMethodTransformer(),
RedundantBoxingMethodTransformer(generationState),
TemporaryVariablesEliminationTransformer(),
TemporaryVariablesEliminationTransformer(generationState),
StackPeepholeOptimizationsTransformer(),
PopBackwardPropagationTransformer(),
DeadCodeEliminationMethodTransformer(),
@@ -8,16 +8,19 @@ package org.jetbrains.kotlin.codegen.optimization.temporaryVals
import org.jetbrains.kotlin.codegen.optimization.common.InsnSequence
import org.jetbrains.kotlin.codegen.optimization.common.removeUnusedLocalVariables
import org.jetbrains.kotlin.codegen.optimization.transformer.MethodTransformer
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.org.objectweb.asm.Opcodes
import org.jetbrains.org.objectweb.asm.Type
import org.jetbrains.org.objectweb.asm.tree.*
import kotlin.math.max
class TemporaryVariablesEliminationTransformer : MethodTransformer() {
class TemporaryVariablesEliminationTransformer(private val state: GenerationState) : MethodTransformer() {
private val temporaryValsAnalyzer = TemporaryValsAnalyzer()
override fun transform(internalClassName: String, methodNode: MethodNode) {
if (!state.isIrBackend) return
val cfg = ControlFlowGraph(methodNode)
processLabels(cfg)