bcv-vf/src/main/java/the/bytecode/club/bytecodeviewer/plugin/preinstalled/StackFramesRemover.java

38 lines
1.2 KiB
Java
Raw Normal View History

package the.bytecode.club.bytecodeviewer.plugin.preinstalled;
import java.util.List;
2021-04-12 20:19:12 +00:00
import java.util.concurrent.atomic.AtomicInteger;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.FrameNode;
import org.objectweb.asm.tree.MethodNode;
import the.bytecode.club.bytecodeviewer.api.Plugin;
import the.bytecode.club.bytecodeviewer.api.PluginConsole;
2021-07-06 20:47:34 +00:00
public class StackFramesRemover extends Plugin
{
@Override
public void execute(List<ClassNode> classNodeList)
2021-07-06 20:47:34 +00:00
{
AtomicInteger counter = new AtomicInteger();
PluginConsole frame = new PluginConsole("StackFrames Remover");
2021-07-06 20:47:34 +00:00
for (ClassNode cn : classNodeList)
{
for (MethodNode mn : cn.methods)
{
for (AbstractInsnNode insn : mn.instructions.toArray())
{
if (insn instanceof FrameNode)
{
mn.instructions.remove(insn);
counter.incrementAndGet();
}
}
}
}
frame.appendText(String.format("Removed %s stackframes.", counter));
frame.setVisible(true);
}
}