Package jadx.core.dex.nodes
Class InsnNode
- java.lang.Object
-
- jadx.core.dex.attributes.AttrNode
-
- jadx.core.dex.attributes.nodes.LineAttrNode
-
- jadx.core.dex.nodes.InsnNode
-
- All Implemented Interfaces:
IAttributeNode,ILineAttributeNode
- Direct Known Subclasses:
ArithNode,BaseInvokeNode,ConstClassNode,ConstStringNode,FillArrayData,FillArrayInsn,FilledNewArrayNode,IndexInsnNode,NewArrayNode,PhiInsn,SwitchData,TargetInsnNode,TernaryInsn
public class InsnNode extends LineAttrNode
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddArg(InsnArg arg)protected voidaddLit(long literal, ArgType type)protected voidaddLit(jadx.api.plugins.input.insns.InsnData insn, ArgType type)protected voidaddReg(int regNum, ArgType type)protected voidaddReg(jadx.api.plugins.input.insns.InsnData insn, int i, ArgType type)protected booleanappendArgs(java.lang.StringBuilder sb)Append arguments type, wrap line if too longprotected voidappendAttributes(java.lang.StringBuilder sb)protected voidattachArg(InsnArg arg)protected java.lang.StringattributesString()protected java.lang.StringbaseString()booleancanRemoveResult()booleancanReorder()booleancanThrowException()booleancontainsArg(InsnArg arg)booleancontainsVar(RegisterArg arg)booleancontainsWrappedInsn()InsnNodecopy()Make copy of InsnNode object.InsnNodecopy(RegisterArg newReturnArg)Seecopy()voidcopyAttributesFrom(InsnNode attrNode)protected <T extends InsnNode>
TcopyCommonParams(T copy)InsnNodecopyWithNewSsaVar(MethodNode mth)Seecopy()<T extends InsnNode>
TcopyWithoutResult()Seecopy()InsnNodecopyWithoutSsa()booleanequals(java.lang.Object obj)Compare instruction only by identity.InsnArggetArg(int n)intgetArgIndex(InsnArg arg)java.util.List<InsnArg>getArgList()intgetArgsCount()java.lang.Iterable<InsnArg>getArguments()intgetOffset()voidgetRegisterArgs(java.util.Collection<RegisterArg> collection)RegisterArggetResult()InsnTypegetType()inthashCode()Compare instruction only by identity.voidinheritMetadata(InsnNode sourceInsn)booleanisConstInsn()booleanisDeepEquals(InsnNode other)'Hard' equals, compare all argumentsbooleanisSame(InsnNode other)'Soft' equals, don't compare arguments, only instruction specific parameters.voidrebindArgs()Fix SSAVar info in register arguments.InsnArgremoveArg(int index)protected booleanremoveArg(InsnArg arg)booleanreplaceArg(InsnArg from, InsnArg to)Replace instruction arg with another using recursive search.voidsetArg(int n, InsnArg arg)voidsetOffset(int offset)voidsetResult(@Nullable RegisterArg res)java.lang.StringtoString()voidvisitArgs(java.util.function.Consumer<InsnArg> visitor)Visit all args recursively (including inner instructions), but excluding wrapped args<R> RvisitArgs(java.util.function.Function<InsnArg,R> visitor)Visit all args recursively (including inner instructions), but excluding wrapped args.voidvisitInsns(java.util.function.Consumer<InsnNode> visitor)Visit this instruction and all inner (wrapped) instructions<R> RvisitInsns(java.util.function.Function<InsnNode,R> visitor)Visit this instruction and all inner (wrapped) instructions To terminate visiting return non-null valuestatic InsnNodewrapArg(InsnArg arg)-
Methods inherited from class jadx.core.dex.attributes.nodes.LineAttrNode
addSourceLineFrom, copyLines, getDefPosition, getSourceLine, setDefPosition, setSourceLine
-
Methods inherited from class jadx.core.dex.attributes.AttrNode
add, addAttr, addAttr, addAttr, addAttrs, clearAttributes, contains, contains, copyAttributeFrom, copyAttributesFrom, get, getAll, getAnnotation, getAttributesString, getAttributesStringsList, isAttrStorageEmpty, remove, remove, removeAttr, rewriteAttributeFrom, unloadAttributes
-
-
-
-
Field Detail
-
insnType
protected final InsnType insnType
-
offset
protected int offset
-
-
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)
-
getType
public InsnType getType()
-
getResult
public RegisterArg getResult()
-
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()to explicitly state that result not neededcopy(RegisterArg)to provide new result argcopyWithNewSsaVar(MethodNode)to make new SSA variable for result arg
-
copyWithoutSsa
public InsnNode copyWithoutSsa()
-
copy
public InsnNode copy(RegisterArg newReturnArg)
Seecopy()
-
copyWithNewSsaVar
public InsnNode copyWithNewSsaVar(MethodNode mth)
Seecopy()
-
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:
hashCodein classjava.lang.Object
-
equals
public final boolean equals(java.lang.Object obj)
Compare instruction only by identity.- Overrides:
equalsin classjava.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:
toStringin classjava.lang.Object
-
-