Adding a print statement to the beginning of a method:
public class PrintVisitor extends ClassAdapter implements Opcodes {
private String className;
public PrintVisitor(ClassVisitor cv, String className) {
super(cv);
this.className = className;
}
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] excpetions) {
MethodVisitor mv = cv.visitMethod(access, name, desc, signature,
exceptions);
mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out",
"Ljava/io/PrintStream;");
mv.visitLdcInsn("Now inside method " + className + "." + name);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println",
"(Ljava/lang/String;)V");
return mv;
}
}