1 19 20 package asm1; 21 22 import org.objectweb.asm.CodeAdapter; 23 import org.objectweb.asm.CodeVisitor; 24 import org.objectweb.asm.Constants; 25 26 27 public class NotifierCodeAdapter extends CodeAdapter implements Constants { 28 29 private String className; 30 31 public NotifierCodeAdapter( CodeVisitor cv, String className) { 32 super( cv); 33 this.className = className; 34 } 35 36 public void visitInsn( int opcode) { 37 if( opcode==RETURN) { 38 String type = "java/util/ArrayList"; 39 cv.visitVarInsn(ALOAD,0); 40 cv.visitTypeInsn(NEW,type); 41 cv.visitInsn(DUP); 42 cv.visitMethodInsn(INVOKESPECIAL, 43 type,"<init>","()V"); 44 cv.visitFieldInsn(PUTFIELD, className, 45 "__lst", "L"+type+";"); 46 } 47 cv.visitInsn(opcode); 48 } 49 50 } 51 52 | Popular Tags |