JVM replace redundant GOTOs with NOPs to preserve debugging behavior

This commit is contained in:
Dmitry Petrov
2021-09-28 10:16:35 +03:00
committed by teamcityserver
parent 0a67ab54fe
commit ca7ee75f88
6 changed files with 37 additions and 7 deletions
@@ -19,11 +19,7 @@ package org.jetbrains.kotlin.codegen.optimization
import org.jetbrains.kotlin.codegen.optimization.common.isMeaningful
import org.jetbrains.kotlin.codegen.optimization.transformer.MethodTransformer
import org.jetbrains.org.objectweb.asm.Opcodes
import org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode
import org.jetbrains.org.objectweb.asm.tree.JumpInsnNode
import org.jetbrains.org.objectweb.asm.tree.LabelNode
import org.jetbrains.org.objectweb.asm.tree.LineNumberNode
import org.jetbrains.org.objectweb.asm.tree.MethodNode
import org.jetbrains.org.objectweb.asm.tree.*
class RedundantGotoMethodTransformer : MethodTransformer() {
/**
@@ -80,6 +76,7 @@ class RedundantGotoMethodTransformer : MethodTransformer() {
}
for (insnToRemove in insnsToRemove) {
methodNode.instructions.insertBefore(insnToRemove, InsnNode(Opcodes.NOP))
methodNode.instructions.remove(insnToRemove)
}
}