Class InsnArg

All Implemented Interfaces:
IAttributeNode
Direct Known Subclasses:
InsnWrapArg, LiteralArg, NamedArg, RegisterArg

public abstract class InsnArg extends Typed
Instruction argument. Can be: register, literal, instruction or name
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • parentInsn

      @Nullable("Null for method arguments") protected @Nullable("Null for method arguments") InsnNode parentInsn
  • Constructor Details

    • InsnArg

      public InsnArg()
  • Method Details

    • reg

      public static RegisterArg reg(int regNum, ArgType type)
    • reg

      public static RegisterArg reg(InsnData insn, int argNum, ArgType type)
    • typeImmutableIfKnownReg

      public static RegisterArg typeImmutableIfKnownReg(InsnData insn, int argNum, ArgType type)
    • typeImmutableReg

      public static RegisterArg typeImmutableReg(InsnData insn, int argNum, ArgType type)
    • typeImmutableReg

      public static RegisterArg typeImmutableReg(int regNum, ArgType type)
    • reg

      public static RegisterArg reg(int regNum, ArgType type, boolean typeImmutable)
    • lit

      public static LiteralArg lit(long literal, ArgType type)
    • lit

      public static LiteralArg lit(InsnData insn, ArgType type)
    • wrap

      private static InsnWrapArg wrap(InsnNode insn)
    • isRegister

      public boolean isRegister()
    • isLiteral

      public boolean isLiteral()
    • isInsnWrap

      public boolean isInsnWrap()
    • isNamed

      public boolean isNamed()
    • getParentInsn

      @Nullable public @Nullable InsnNode getParentInsn()
    • setParentInsn

      public void setParentInsn(@Nullable @Nullable InsnNode parentInsn)
    • wrapInstruction

      @Nullable("if wrap failed") public @Nullable("if wrap failed") InsnArg wrapInstruction(MethodNode mth, InsnNode insn)
    • wrapInstruction

      @Nullable("if wrap failed") public @Nullable("if wrap failed") InsnArg wrapInstruction(MethodNode mth, InsnNode insn, boolean unbind)
    • getArgIndex

      private static int getArgIndex(InsnNode parent, InsnArg arg)
    • wrapInsnIntoArg

      @NotNull public static @NotNull InsnArg wrapInsnIntoArg(InsnNode insn)
    • wrapArg

      public static InsnArg wrapArg(InsnNode insn)
      Prefer wrapInsnIntoArg(InsnNode).

      This method don't support MOVE and CONST insns!

    • isZeroLiteral

      public boolean isZeroLiteral()
    • isZeroConst

      public boolean isZeroConst()
    • isFalse

      public boolean isFalse()
    • isTrue

      public boolean isTrue()
    • isThis

      public boolean isThis()
    • isAnyThis

      public boolean isAnyThis()
      Return true for 'this' from other classes (often occur in anonymous classes)
    • unwrap

      public InsnNode unwrap()
    • isConst

      public boolean isConst()
    • isSameConst

      public boolean isSameConst(InsnArg other)
    • isSameVar

      public boolean isSameVar(RegisterArg arg)
    • isSameVar

      public boolean isSameVar(SSAVar ssaVar)
    • isSameCodeVar

      public boolean isSameCodeVar(RegisterArg arg)
    • isUseVar

      public boolean isUseVar(RegisterArg arg)
    • copyCommonParams

      protected final <T extends InsnArg> T copyCommonParams(T copy)
    • duplicate

      public abstract InsnArg duplicate()
    • toShortString

      public String toShortString()