1 package jp.sourceforge.stigmata.birthmarks.kgram;
5 import org.objectweb.asm.Label;
6 import org.objectweb.asm.MethodVisitor;
7 import org.objectweb.asm.Opcodes;
11 * @author Haruaki TAMADA
13 public class OpcodeExtractionMethodVisitor extends MethodVisitor{
14 private List<Integer> opcodes;
16 public OpcodeExtractionMethodVisitor(MethodVisitor visitor,
17 List<Integer> opcodes){
18 super(Opcodes.ASM4, visitor);
19 this.opcodes = opcodes;
23 public void visitFieldInsn(int opcode, String owner,
24 String name, String desc){
26 super.visitFieldInsn(opcode, owner, name, desc);
30 public void visitIincInsn(int var, int increment){
31 opcodes.add(Opcodes.IINC);
32 super.visitIincInsn(var, increment);
36 public void visitInsn(int opcode){
38 super.visitInsn(opcode);
42 public void visitIntInsn(int opcode, int operand){
44 super.visitIntInsn(opcode, operand);
48 public void visitJumpInsn(int opcode, Label label){
50 super.visitJumpInsn(opcode, label);
54 public void visitLdcInsn(Object value){
55 opcodes.add(Opcodes.LDC);
56 super.visitLdcInsn(value);
60 public void visitLookupSwitchInsn(Label defaultHandle, int[] keys,
62 opcodes.add(Opcodes.LOOKUPSWITCH);
63 super.visitLookupSwitchInsn(defaultHandle, keys, labels);
67 public void visitMethodInsn(int opcode, String owner,
68 String name, String desc){
70 super.visitMethodInsn(opcode, owner, name, desc);
74 public void visitMultiANewArrayInsn(String desc, int dims){
75 opcodes.add(Opcodes.MULTIANEWARRAY);
76 super.visitMultiANewArrayInsn(desc, dims);
80 public void visitTableSwitchInsn(int min, int max,
81 Label defaultLabel, Label... labels){
82 opcodes.add(Opcodes.TABLESWITCH);
83 super.visitTableSwitchInsn(min, max, defaultLabel, labels);
87 public void visitTypeInsn(int opcode, String desc){
89 super.visitTypeInsn(opcode, desc);
93 public void visitVarInsn(int opcode, int var){
95 super.visitVarInsn(opcode, var);