Class GraphParser
java.lang.Object
de.mirkosertic.bytecoder.core.parser.GraphParser
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AnalysisStackprivate final org.objectweb.asm.tree.ClassNodeprivate final CompileUnitprivate final Graphprivate final org.objectweb.asm.tree.MethodNode(package private) int -
Constructor Summary
ConstructorsConstructorDescriptionGraphParser(CompileUnit compileUnit, org.objectweb.asm.Type ownerType, org.objectweb.asm.tree.ClassNode classNode, org.objectweb.asm.tree.MethodNode methodNode, AnalysisStack analysisStack) -
Method Summary
Modifier and TypeMethodDescriptionprivate RegiongetOrCreateRegionNodeFor(org.objectweb.asm.tree.LabelNode label) graph()private booleanisStartOfTryCatch(org.objectweb.asm.tree.LabelNode labelNode) private voidlinkArgumentsAndReturnType(org.objectweb.asm.Type type) private voidlinkType(org.objectweb.asm.Type type) private List<ControlFlow> parse(ControlFlow currentFlow, Map<org.objectweb.asm.tree.AbstractInsnNode, Map<org.objectweb.asm.tree.AbstractInsnNode, EdgeType>> incomingEdgesPerInstruction) private voidparse(org.objectweb.asm.Type ownerType) private List<ControlFlow> parse_ACONST_NULL(ControlFlow currentFlow) private List<ControlFlow> parse_ATHROW(ControlFlow currentFlow) private List<ControlFlow> parse_BIPUSH(ControlFlow currentFlow) private List<ControlFlow> parse_CHECKCAST(ControlFlow currentFlow) private List<ControlFlow> parse_CMP(ControlFlow currentFlow) private List<ControlFlow> parse_DCONSTX(ControlFlow currentFlow, double constant) private List<ControlFlow> parse_DUP(ControlFlow currentFlow) private List<ControlFlow> parse_DUP_X1(ControlFlow currentFlow) private List<ControlFlow> parse_DUP_X2(ControlFlow currentFlow) private List<ControlFlow> parse_DUP2(ControlFlow currentFlow) private List<ControlFlow> parse_DUP2_X1(ControlFlow currentFlow) private List<ControlFlow> parse_FCONSTX(ControlFlow currentFlow, float constant) private List<ControlFlow> parse_GETFIELD(ControlFlow currentFlow) private List<ControlFlow> parse_GETSTATICFIELD(ControlFlow currentFlow) private List<ControlFlow> parse_GOTO(ControlFlow currentFlow) private List<ControlFlow> parse_ICONSTX(ControlFlow currentFlow, int constant) private List<ControlFlow> parse_IF_ONEARG(ControlFlow currentFlow, Supplier<Test> testSupplier) private List<ControlFlow> parse_IF_TWOARGS(ControlFlow currentFlow, Supplier<Test> testSupplier) private List<ControlFlow> parse_INSTANCEOF(ControlFlow currentFlow) private List<ControlFlow> parse_INVOKEINTERFACE(ControlFlow currentFlow) private List<ControlFlow> parse_INVOKESPECIAL(ControlFlow currentFlow) private List<ControlFlow> parse_INVOKESTATIC(ControlFlow currentFlow) private List<ControlFlow> parse_INVOKEVIRTUAL(ControlFlow currentFlow) private List<ControlFlow> parse_LCONSTX(ControlFlow currentFlow, long constant) private List<ControlFlow> parse_LDC(ControlFlow currentFlow) private List<ControlFlow> parse_MONITORENTER(ControlFlow currentFlow) private List<ControlFlow> parse_MONITOREXIT(ControlFlow currentFlow) private List<ControlFlow> parse_NARYINS(ControlFlow currentFlow, Supplier<Value> valueFactory, int numberArgs) private List<ControlFlow> parse_NEW(ControlFlow currentFlow) private List<ControlFlow> parse_NEWARRAY(ControlFlow currentFlow) private List<ControlFlow> parse_NOP(ControlFlow currentFlow) private List<ControlFlow> parse_POP(ControlFlow currentFlow) private List<ControlFlow> parse_POP2(ControlFlow currentFlow) private List<ControlFlow> parse_PUTFIELD(ControlFlow currentFlow) private List<ControlFlow> parse_PUTSTATICFIELD(ControlFlow currentFlow) private List<ControlFlow> parse_RETURN(ControlFlow currentFlow) private List<ControlFlow> parse_RETURNVALUE(ControlFlow currentFlow) private List<ControlFlow> parse_SIPUSH(ControlFlow currentFlow) private List<ControlFlow> parse_SWAP(ControlFlow currentFlow) private List<ControlFlow> parse_TYPECONVERSION(ControlFlow currentFlow, org.objectweb.asm.Type type) private List<ControlFlow> parse_XALOAD(ControlFlow currentFlow) private List<ControlFlow> parse_XASTORE(ControlFlow currentFlow) private List<ControlFlow> parse_XLOAD(ControlFlow currentFlow) private List<ControlFlow> parse_XSTORE(ControlFlow currentFlow) private List<ControlFlow> parse_ZEROIF(ControlFlow currentFlow) private List<ControlFlow> parseFieldInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseFrame(ControlFlow currentFlow) private List<ControlFlow> parseIincInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseIntInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseInvokeDynamicInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseJumpInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseLabelNode(ControlFlow currentFlow) private List<ControlFlow> parseLdcInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseLineNumberNode(ControlFlow currentFlow) private List<ControlFlow> parseLookupSwitchInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseMethodInsNode(ControlFlow currentFlow) private List<ControlFlow> parseMultiANewArrayInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseTableSwitchInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseTypeInsnNode(ControlFlow currentFlow) private List<ControlFlow> parseVarInsnNode(ControlFlow currentFlow) private voidresolveMethodType(org.objectweb.asm.Type type)
-
Field Details
-
graph
-
methodNode
private final org.objectweb.asm.tree.MethodNode methodNode -
compileUnit
-
analysisStack
-
opcodeToName
-
classNode
private final org.objectweb.asm.tree.ClassNode classNode -
swapCounter
int swapCounter
-
-
Constructor Details
-
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 Details
-
getOrCreateRegionNodeFor
-
parse
private void parse(org.objectweb.asm.Type ownerType) -
parseLabelNode
-
parseLineNumberNode
-
parse_XLOAD
-
parse_XSTORE
-
parseVarInsnNode
-
linkType
private void linkType(org.objectweb.asm.Type type) -
linkArgumentsAndReturnType
private void linkArgumentsAndReturnType(org.objectweb.asm.Type type) -
parse_INVOKESPECIAL
-
parse_INVOKEVIRTUAL
-
parse_INVOKEINTERFACE
-
parse_INVOKESTATIC
-
parseMethodInsNode
-
parse_BIPUSH
-
parse_SIPUSH
-
parse_NEWARRAY
-
parseIntInsnNode
-
parse_RETURN
-
parse_NOP
-
parse_RETURNVALUE
-
parse_ICONSTX
-
parse_FCONSTX
-
parse_LCONSTX
-
parse_DCONSTX
-
parse_ACONST_NULL
-
parse_NARYINS
private List<ControlFlow> parse_NARYINS(ControlFlow currentFlow, Supplier<Value> valueFactory, int numberArgs) -
parse_CMP
-
parse_SWAP
-
parse_DUP_X1
-
parse_DUP_X2
-
parse_ATHROW
-
parse_DUP
-
parse_DUP2
-
parse_DUP2_X1
-
parse_POP
-
parse_POP2
-
parse_TYPECONVERSION
private List<ControlFlow> parse_TYPECONVERSION(ControlFlow currentFlow, org.objectweb.asm.Type type) -
parse_XASTORE
-
parse_XALOAD
-
parseInsnNode
-
parseFrame
-
parse_GOTO
-
parse_IF_TWOARGS
-
parse_IF_ONEARG
-
parse_ZEROIF
-
parseJumpInsnNode
-
parseIincInsnNode
-
parse_NEW
-
parse_INSTANCEOF
-
parse_CHECKCAST
-
parse_MONITORENTER
-
parse_MONITOREXIT
-
parseTypeInsnNode
-
parse_GETFIELD
-
parse_GETSTATICFIELD
-
parse_PUTFIELD
-
parse_PUTSTATICFIELD
-
parseFieldInsnNode
-
parse_LDC
-
parseTableSwitchInsnNode
-
parseLookupSwitchInsnNode
-
parseLdcInsnNode
-
resolveMethodType
private void resolveMethodType(org.objectweb.asm.Type type) -
parseInvokeDynamicInsnNode
-
parseMultiANewArrayInsnNode
-
isStartOfTryCatch
private boolean isStartOfTryCatch(org.objectweb.asm.tree.LabelNode labelNode) -
parse
private List<ControlFlow> parse(ControlFlow currentFlow, Map<org.objectweb.asm.tree.AbstractInsnNode, Map<org.objectweb.asm.tree.AbstractInsnNode, EdgeType>> incomingEdgesPerInstruction) -
graph
-