package org.nutz.aop.asm; import static org.nutz.repo.org.objectweb.asm.Opcodes.ALOAD; import static org.nutz.repo.org.objectweb.asm.Opcodes.INVOKESPECIAL; import static org.nutz.repo.org.objectweb.asm.Opcodes.RETURN; import org.nutz.repo.org.objectweb.asm.Label; import org.nutz.repo.org.objectweb.asm.MethodVisitor; /** * @author wendal(wendal1985@gmail.com) */ class ChangeToChildConstructorMethodAdapter extends NormalMethodAdapter { private String superClassName; ChangeToChildConstructorMethodAdapter( MethodVisitor mv, String desc, int access, String superClassName) { super(mv, desc, access); this.superClassName = superClassName; } void visitCode() { mv.visitCode(); // start of fuck linenumber Label tmp = new Label(); mv.visitLabel(tmp); mv.visitLineNumber(1, tmp); // end of Linenumber mv.visitVarInsn(ALOAD, 0); loadArgs(); mv.visitMethodInsn(INVOKESPECIAL, superClassName, "<init>", desc, false); mv.visitInsn(RETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } }