1 package jp.sourceforge.stigmata.birthmarks;
3 import java.util.Iterator;
4 import java.util.LinkedHashMap;
7 import org.objectweb.asm.ClassAdapter;
8 import org.objectweb.asm.ClassVisitor;
9 import org.objectweb.asm.MethodVisitor;
10 import org.objectweb.asm.tree.MethodNode;
17 public class ControlFlowGraphExtractVisitor extends ClassAdapter{
18 private Map<String, MethodNode> opcodesMap = new LinkedHashMap<String, MethodNode>();
20 public ControlFlowGraphExtractVisitor(ClassVisitor visitor){
24 public Iterator<String> getMethodNames(){
25 return opcodesMap.keySet().iterator();
28 public ControlFlowGraph getGraph(String name){
29 return buildControlFlow(name, opcodesMap.get(name));
33 public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions){
34 MethodNode node = new MethodNode(access, name, descriptor, signature, exceptions);
36 opcodesMap.put(name + descriptor, node);
41 private ControlFlowGraph buildControlFlow(String methodName, MethodNode node){
42 return new ControlFlowGraph(methodName, node);