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 AnalysisStack
analysisStack
private CompileUnit
compileUnit
private Graph
graph
private org.objectweb.asm.tree.MethodNode
methodNode
private java.util.Map<java.lang.Integer,java.lang.String>
opcodeToName
(package private) int
swapCounter
-
Constructor Summary
Constructors Constructor Description GraphParser(CompileUnit compileUnit, org.objectweb.asm.Type ownerType, org.objectweb.asm.tree.MethodNode methodNode, AnalysisStack analysisStack)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Region
getOrCreateRegionNodeFor(org.objectweb.asm.tree.LabelNode label)
Graph
graph()
private boolean
isStartOfTryCatch(org.objectweb.asm.tree.LabelNode labelNode)
private void
linkArgumentsAndReturnType(org.objectweb.asm.Type type)
private void
linkType(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 void
parse(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 void
resolveMethodType(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
-
swapCounter
int swapCounter
-
-
Constructor Detail
-
GraphParser
public GraphParser(CompileUnit compileUnit, org.objectweb.asm.Type ownerType, 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()
-
-