Class InsnNode

    • Field Detail

      • insnType

        protected final InsnType insnType
      • offset

        protected int offset
    • Constructor Detail

      • InsnNode

        public InsnNode​(InsnType type,
                        int argsCount)
      • InsnNode

        public InsnNode​(InsnType type,
                        java.util.List<InsnArg> args)
    • Method Detail

      • setResult

        public void setResult​(@Nullable
                              @Nullable RegisterArg res)
      • addArg

        public void addArg​(InsnArg arg)
      • setArg

        public void setArg​(int n,
                           InsnArg arg)
      • attachArg

        protected void attachArg​(InsnArg arg)
      • getArguments

        public java.lang.Iterable<InsnArg> getArguments()
      • getArgList

        public java.util.List<InsnArg> getArgList()
      • getArgsCount

        public int getArgsCount()
      • getArg

        public InsnArg getArg​(int n)
      • containsArg

        public boolean containsArg​(InsnArg arg)
      • containsVar

        public boolean containsVar​(RegisterArg arg)
      • replaceArg

        public boolean replaceArg​(InsnArg from,
                                  InsnArg to)
        Replace instruction arg with another using recursive search.
      • removeArg

        protected boolean removeArg​(InsnArg arg)
      • removeArg

        public InsnArg removeArg​(int index)
      • getArgIndex

        public int getArgIndex​(InsnArg arg)
      • addReg

        protected void addReg​(jadx.api.plugins.input.insns.InsnData insn,
                              int i,
                              ArgType type)
      • addReg

        protected void addReg​(int regNum,
                              ArgType type)
      • addLit

        protected void addLit​(long literal,
                              ArgType type)
      • addLit

        protected void addLit​(jadx.api.plugins.input.insns.InsnData insn,
                              ArgType type)
      • getOffset

        public int getOffset()
      • setOffset

        public void setOffset​(int offset)
      • getRegisterArgs

        public void getRegisterArgs​(java.util.Collection<RegisterArg> collection)
      • isConstInsn

        public boolean isConstInsn()
      • canRemoveResult

        public boolean canRemoveResult()
      • canReorder

        public boolean canReorder()
      • containsWrappedInsn

        public boolean containsWrappedInsn()
      • visitInsns

        public void visitInsns​(java.util.function.Consumer<InsnNode> visitor)
        Visit this instruction and all inner (wrapped) instructions
      • visitInsns

        @Nullable
        public <R> R visitInsns​(java.util.function.Function<InsnNode,​R> visitor)
        Visit this instruction and all inner (wrapped) instructions To terminate visiting return non-null value
      • visitArgs

        public void visitArgs​(java.util.function.Consumer<InsnArg> visitor)
        Visit all args recursively (including inner instructions), but excluding wrapped args
      • visitArgs

        @Nullable
        public <R> R visitArgs​(java.util.function.Function<InsnArg,​R> visitor)
        Visit all args recursively (including inner instructions), but excluding wrapped args. To terminate visiting return non-null value
      • isSame

        public boolean isSame​(InsnNode other)
        'Soft' equals, don't compare arguments, only instruction specific parameters.
      • isDeepEquals

        public boolean isDeepEquals​(InsnNode other)
        'Hard' equals, compare all arguments
      • copyCommonParams

        protected final <T extends InsnNode> T copyCommonParams​(T copy)
      • copyAttributesFrom

        public void copyAttributesFrom​(InsnNode attrNode)
      • copy

        public InsnNode copy()
        Make copy of InsnNode object.
        NOTE: can't copy instruction with result argument (SSA variable can't be used in two different assigns).
        Prefer use next methods:
      • copyWithoutResult

        public <T extends InsnNode> T copyWithoutResult()
        See copy()
      • copyWithoutSsa

        public InsnNode copyWithoutSsa()
      • rebindArgs

        public void rebindArgs()
        Fix SSAVar info in register arguments. Must be used after altering instructions.
      • canThrowException

        public boolean canThrowException()
      • inheritMetadata

        public void inheritMetadata​(InsnNode sourceInsn)
      • hashCode

        public final int hashCode()
        Compare instruction only by identity.
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public final boolean equals​(java.lang.Object obj)
        Compare instruction only by identity.
        Overrides:
        equals in class java.lang.Object
      • appendArgs

        protected boolean appendArgs​(java.lang.StringBuilder sb)
        Append arguments type, wrap line if too long
        Returns:
        true if args wrapped
      • attributesString

        protected java.lang.String attributesString()
      • appendAttributes

        protected void appendAttributes​(java.lang.StringBuilder sb)
      • baseString

        protected java.lang.String baseString()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object