diff --git a/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.java b/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.java new file mode 100644 index 00000000..7c517a4d --- /dev/null +++ b/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.java @@ -0,0 +1,29 @@ +package dev.openrs2.asm; + +import org.objectweb.asm.tree.AbstractInsnNode; + +public final class InsnNodeUtils { + public static AbstractInsnNode nextReal(AbstractInsnNode insn) { + while ((insn = insn.getNext()) != null && insn.getOpcode() == -1); + return insn; + } + + public static AbstractInsnNode previousReal(AbstractInsnNode insn) { + while ((insn = insn.getPrevious()) != null && insn.getOpcode() == -1); + return insn; + } + + public static AbstractInsnNode nextVirtual(AbstractInsnNode insn) { + while ((insn = insn.getNext()) != null && insn.getOpcode() != -1); + return insn; + } + + public static AbstractInsnNode previousVirtual(AbstractInsnNode insn) { + while ((insn = insn.getPrevious()) != null && insn.getOpcode() != -1); + return insn; + } + + private InsnNodeUtils() { + /* empty */ + } +}