Class GraphParser
- java.lang.Object
-
- de.mirkosertic.bytecoder.core.parser.GraphParser
-
public class GraphParser extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private AnalysisStackanalysisStackprivate org.objectweb.asm.tree.ClassNodeclassNodeprivate CompileUnitcompileUnitprivate Graphgraphprivate org.objectweb.asm.tree.MethodNodemethodNodeprivate java.util.Map<java.lang.Integer,java.lang.String>opcodeToName(package private) intswapCounter
-
Constructor Summary
Constructors Constructor Description GraphParser(CompileUnit compileUnit, org.objectweb.asm.Type ownerType, org.objectweb.asm.tree.ClassNode classNode, org.objectweb.asm.tree.MethodNode methodNode, AnalysisStack analysisStack)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private RegiongetOrCreateRegionNodeFor(org.objectweb.asm.tree.LabelNode label)Graphgraph()private booleanisStartOfTryCatch(org.objectweb.asm.tree.LabelNode labelNode)private voidlinkArgumentsAndReturnType(org.objectweb.asm.Type type)private voidlinkType(org.objectweb.asm.Type type)private java.util.List<ControlFlow>parse(ControlFlow currentFlow, java.util.Map<org.objectweb.asm.tree.AbstractInsnNode,java.util.Map<org.objectweb.asm.tree.AbstractInsnNode,EdgeType>> incomingEdgesPerInstruction)private voidparse(org.objectweb.asm.Type ownerType)private java.util.List<ControlFlow>parse_ACONST_NULL(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_ATHROW(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_BIPUSH(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_CHECKCAST(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_CMP(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_DCONSTX(ControlFlow currentFlow, double constant)private java.util.List<ControlFlow>parse_DUP(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_DUP_X1(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_DUP_X2(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_DUP2(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_DUP2_X1(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_FCONSTX(ControlFlow currentFlow, float constant)private java.util.List<ControlFlow>parse_GETFIELD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_GETSTATICFIELD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_GOTO(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_ICONSTX(ControlFlow currentFlow, int constant)private java.util.List<ControlFlow>parse_IF_ONEARG(ControlFlow currentFlow, java.util.function.Supplier<Test> testSupplier)private java.util.List<ControlFlow>parse_IF_TWOARGS(ControlFlow currentFlow, java.util.function.Supplier<Test> testSupplier)private java.util.List<ControlFlow>parse_INSTANCEOF(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_INVOKEINTERFACE(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_INVOKESPECIAL(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_INVOKESTATIC(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_INVOKEVIRTUAL(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_LCONSTX(ControlFlow currentFlow, long constant)private java.util.List<ControlFlow>parse_LDC(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_MONITORENTER(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_MONITOREXIT(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_NARYINS(ControlFlow currentFlow, java.util.function.Supplier<Value> valueFactory, int numberArgs)private java.util.List<ControlFlow>parse_NEW(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_NEWARRAY(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_NOP(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_POP(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_POP2(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_PUTFIELD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_PUTSTATICFIELD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_RETURN(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_RETURNVALUE(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_SIPUSH(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_SWAP(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_TYPECONVERSION(ControlFlow currentFlow, org.objectweb.asm.Type type)private java.util.List<ControlFlow>parse_XALOAD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_XASTORE(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_XLOAD(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_XSTORE(ControlFlow currentFlow)private java.util.List<ControlFlow>parse_ZEROIF(ControlFlow currentFlow)private java.util.List<ControlFlow>parseFieldInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseFrame(ControlFlow currentFlow)private java.util.List<ControlFlow>parseIincInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseIntInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseInvokeDynamicInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseJumpInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseLabelNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseLdcInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseLineNumberNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseLookupSwitchInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseMethodInsNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseMultiANewArrayInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseTableSwitchInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseTypeInsnNode(ControlFlow currentFlow)private java.util.List<ControlFlow>parseVarInsnNode(ControlFlow currentFlow)private voidresolveMethodType(org.objectweb.asm.Type type)
-
-
-
Field Detail
-
graph
private final Graph graph
-
methodNode
private final org.objectweb.asm.tree.MethodNode methodNode
-
compileUnit
private final CompileUnit compileUnit
-
analysisStack
private final AnalysisStack analysisStack
-
opcodeToName
private final java.util.Map<java.lang.Integer,java.lang.String> opcodeToName
-
classNode
private final org.objectweb.asm.tree.ClassNode classNode
-
swapCounter
int swapCounter
-
-
Constructor Detail
-
GraphParser
public GraphParser(CompileUnit compileUnit, org.objectweb.asm.Type ownerType, org.objectweb.asm.tree.ClassNode classNode, org.objectweb.asm.tree.MethodNode methodNode, AnalysisStack analysisStack)
-
-
Method Detail
-
getOrCreateRegionNodeFor
private Region getOrCreateRegionNodeFor(org.objectweb.asm.tree.LabelNode label)
-
parse
private void parse(org.objectweb.asm.Type ownerType)
-
parseLabelNode
private java.util.List<ControlFlow> parseLabelNode(ControlFlow currentFlow)
-
parseLineNumberNode
private java.util.List<ControlFlow> parseLineNumberNode(ControlFlow currentFlow)
-
parse_XLOAD
private java.util.List<ControlFlow> parse_XLOAD(ControlFlow currentFlow)
-
parse_XSTORE
private java.util.List<ControlFlow> parse_XSTORE(ControlFlow currentFlow)
-
parseVarInsnNode
private java.util.List<ControlFlow> parseVarInsnNode(ControlFlow currentFlow)
-
linkType
private void linkType(org.objectweb.asm.Type type)
-
linkArgumentsAndReturnType
private void linkArgumentsAndReturnType(org.objectweb.asm.Type type)
-
parse_INVOKESPECIAL
private java.util.List<ControlFlow> parse_INVOKESPECIAL(ControlFlow currentFlow)
-
parse_INVOKEVIRTUAL
private java.util.List<ControlFlow> parse_INVOKEVIRTUAL(ControlFlow currentFlow)
-
parse_INVOKEINTERFACE
private java.util.List<ControlFlow> parse_INVOKEINTERFACE(ControlFlow currentFlow)
-
parse_INVOKESTATIC
private java.util.List<ControlFlow> parse_INVOKESTATIC(ControlFlow currentFlow)
-
parseMethodInsNode
private java.util.List<ControlFlow> parseMethodInsNode(ControlFlow currentFlow)
-
parse_BIPUSH
private java.util.List<ControlFlow> parse_BIPUSH(ControlFlow currentFlow)
-
parse_SIPUSH
private java.util.List<ControlFlow> parse_SIPUSH(ControlFlow currentFlow)
-
parse_NEWARRAY
private java.util.List<ControlFlow> parse_NEWARRAY(ControlFlow currentFlow)
-
parseIntInsnNode
private java.util.List<ControlFlow> parseIntInsnNode(ControlFlow currentFlow)
-
parse_RETURN
private java.util.List<ControlFlow> parse_RETURN(ControlFlow currentFlow)
-
parse_NOP
private java.util.List<ControlFlow> parse_NOP(ControlFlow currentFlow)
-
parse_RETURNVALUE
private java.util.List<ControlFlow> parse_RETURNVALUE(ControlFlow currentFlow)
-
parse_ICONSTX
private java.util.List<ControlFlow> parse_ICONSTX(ControlFlow currentFlow, int constant)
-
parse_FCONSTX
private java.util.List<ControlFlow> parse_FCONSTX(ControlFlow currentFlow, float constant)
-
parse_LCONSTX
private java.util.List<ControlFlow> parse_LCONSTX(ControlFlow currentFlow, long constant)
-
parse_DCONSTX
private java.util.List<ControlFlow> parse_DCONSTX(ControlFlow currentFlow, double constant)
-
parse_ACONST_NULL
private java.util.List<ControlFlow> parse_ACONST_NULL(ControlFlow currentFlow)
-
parse_NARYINS
private java.util.List<ControlFlow> parse_NARYINS(ControlFlow currentFlow, java.util.function.Supplier<Value> valueFactory, int numberArgs)
-
parse_CMP
private java.util.List<ControlFlow> parse_CMP(ControlFlow currentFlow)
-
parse_SWAP
private java.util.List<ControlFlow> parse_SWAP(ControlFlow currentFlow)
-
parse_DUP_X1
private java.util.List<ControlFlow> parse_DUP_X1(ControlFlow currentFlow)
-
parse_DUP_X2
private java.util.List<ControlFlow> parse_DUP_X2(ControlFlow currentFlow)
-
parse_ATHROW
private java.util.List<ControlFlow> parse_ATHROW(ControlFlow currentFlow)
-
parse_DUP
private java.util.List<ControlFlow> parse_DUP(ControlFlow currentFlow)
-
parse_DUP2
private java.util.List<ControlFlow> parse_DUP2(ControlFlow currentFlow)
-
parse_DUP2_X1
private java.util.List<ControlFlow> parse_DUP2_X1(ControlFlow currentFlow)
-
parse_POP
private java.util.List<ControlFlow> parse_POP(ControlFlow currentFlow)
-
parse_POP2
private java.util.List<ControlFlow> parse_POP2(ControlFlow currentFlow)
-
parse_TYPECONVERSION
private java.util.List<ControlFlow> parse_TYPECONVERSION(ControlFlow currentFlow, org.objectweb.asm.Type type)
-
parse_XASTORE
private java.util.List<ControlFlow> parse_XASTORE(ControlFlow currentFlow)
-
parse_XALOAD
private java.util.List<ControlFlow> parse_XALOAD(ControlFlow currentFlow)
-
parseInsnNode
private java.util.List<ControlFlow> parseInsnNode(ControlFlow currentFlow)
-
parseFrame
private java.util.List<ControlFlow> parseFrame(ControlFlow currentFlow)
-
parse_GOTO
private java.util.List<ControlFlow> parse_GOTO(ControlFlow currentFlow)
-
parse_IF_TWOARGS
private java.util.List<ControlFlow> parse_IF_TWOARGS(ControlFlow currentFlow, java.util.function.Supplier<Test> testSupplier)
-
parse_IF_ONEARG
private java.util.List<ControlFlow> parse_IF_ONEARG(ControlFlow currentFlow, java.util.function.Supplier<Test> testSupplier)
-
parse_ZEROIF
private java.util.List<ControlFlow> parse_ZEROIF(ControlFlow currentFlow)
-
parseJumpInsnNode
private java.util.List<ControlFlow> parseJumpInsnNode(ControlFlow currentFlow)
-
parseIincInsnNode
private java.util.List<ControlFlow> parseIincInsnNode(ControlFlow currentFlow)
-
parse_NEW
private java.util.List<ControlFlow> parse_NEW(ControlFlow currentFlow)
-
parse_INSTANCEOF
private java.util.List<ControlFlow> parse_INSTANCEOF(ControlFlow currentFlow)
-
parse_CHECKCAST
private java.util.List<ControlFlow> parse_CHECKCAST(ControlFlow currentFlow)
-
parse_MONITORENTER
private java.util.List<ControlFlow> parse_MONITORENTER(ControlFlow currentFlow)
-
parse_MONITOREXIT
private java.util.List<ControlFlow> parse_MONITOREXIT(ControlFlow currentFlow)
-
parseTypeInsnNode
private java.util.List<ControlFlow> parseTypeInsnNode(ControlFlow currentFlow)
-
parse_GETFIELD
private java.util.List<ControlFlow> parse_GETFIELD(ControlFlow currentFlow)
-
parse_GETSTATICFIELD
private java.util.List<ControlFlow> parse_GETSTATICFIELD(ControlFlow currentFlow)
-
parse_PUTFIELD
private java.util.List<ControlFlow> parse_PUTFIELD(ControlFlow currentFlow)
-
parse_PUTSTATICFIELD
private java.util.List<ControlFlow> parse_PUTSTATICFIELD(ControlFlow currentFlow)
-
parseFieldInsnNode
private java.util.List<ControlFlow> parseFieldInsnNode(ControlFlow currentFlow)
-
parse_LDC
private java.util.List<ControlFlow> parse_LDC(ControlFlow currentFlow)
-
parseTableSwitchInsnNode
private java.util.List<ControlFlow> parseTableSwitchInsnNode(ControlFlow currentFlow)
-
parseLookupSwitchInsnNode
private java.util.List<ControlFlow> parseLookupSwitchInsnNode(ControlFlow currentFlow)
-
parseLdcInsnNode
private java.util.List<ControlFlow> parseLdcInsnNode(ControlFlow currentFlow)
-
resolveMethodType
private void resolveMethodType(org.objectweb.asm.Type type)
-
parseInvokeDynamicInsnNode
private java.util.List<ControlFlow> parseInvokeDynamicInsnNode(ControlFlow currentFlow)
-
parseMultiANewArrayInsnNode
private java.util.List<ControlFlow> parseMultiANewArrayInsnNode(ControlFlow currentFlow)
-
isStartOfTryCatch
private boolean isStartOfTryCatch(org.objectweb.asm.tree.LabelNode labelNode)
-
parse
private java.util.List<ControlFlow> parse(ControlFlow currentFlow, java.util.Map<org.objectweb.asm.tree.AbstractInsnNode,java.util.Map<org.objectweb.asm.tree.AbstractInsnNode,EdgeType>> incomingEdgesPerInstruction)
-
graph
public Graph graph()
-
-