Package org.apache.tapestry5.internal.plastic.asm

Examples of org.apache.tapestry5.internal.plastic.asm.MethodVisitor


    @Override
    public MethodVisitor visitMethod(int access, String name, String desc,
            String signature, String[] exceptions) {
        String newDesc = remapper.mapMethodDesc(desc);
        MethodVisitor mv = super.visitMethod(access, remapper.mapMethodName(
                className, name, desc), newDesc, remapper.mapSignature(
                signature, false),
                exceptions == null ? null : remapper.mapTypes(exceptions));
        return mv == null ? null : createRemappingMethodAdapter(access,
                newDesc, mv);
View Full Code Here


     *            a class visitor.
     */
    public void accept(final ClassVisitor cv) {
        String[] exceptions = new String[this.exceptions.size()];
        this.exceptions.toArray(exceptions);
        MethodVisitor mv = cv.visitMethod(access, name, desc, signature,
                exceptions);
        if (mv != null) {
            accept(mv);
        }
    }
View Full Code Here

    @Override
    public MethodVisitor visitMethod(final int access, final String name,
            final String desc, final String signature, final String[] exceptions) {
        Printer p = this.p.visitMethod(access, name, desc, signature,
                exceptions);
        MethodVisitor mv = cv == null ? null : cv.visitMethod(access, name,
                desc, signature, exceptions);
        return new TraceMethodVisitor(mv, p);
    }
View Full Code Here

        @Override
        public MethodVisitor visitMethod(final int access, final String name,
                final String desc, final String signature,
                final String[] exceptions) {
            method = name + desc;
            return new MethodVisitor(Opcodes.ASM5) {
                @Override
                public void visitFieldInsn(final int opcode,
                        final String owner, final String name, final String desc) {
                    check(owner, name);
                }
View Full Code Here

        if ("-".equals(s)) {
            return null;
        }
        if (name.equals("<clinit>") && !isInterface) {
            hasClinitMethod = true;
            MethodVisitor mv = super.visitMethod(access, name, desc, null,
                    exceptions);
            return new MethodVisitor(Opcodes.ASM5, mv) {
                @Override
                public void visitCode() {
                    super.visitCode();
                    mv.visitMethodInsn(Opcodes.INVOKESTATIC, clsName,
                            "_clinit_", "()V", false);
                }
            };
        }
View Full Code Here

    @Override
    public void visitEnd() {
        if (syntheticClassFields.isEmpty()) {
            if (hasClinitMethod) {
                MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC
                        | Opcodes.ACC_SYNTHETIC, "_clinit_", "()V", null, null);
                mv.visitCode();
                mv.visitInsn(Opcodes.RETURN);
                mv.visitMaxs(0, 0);
                mv.visitEnd();
            }
        } else {
            MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC
                    | Opcodes.ACC_SYNTHETIC, "class$",
                    "(Ljava/lang/String;)Ljava/lang/Class;", null, null);
            mv.visitCode();
            Label l0 = new Label();
            Label l1 = new Label();
            Label l2 = new Label();
            mv.visitTryCatchBlock(l0, l1, l2,
                    "java/lang/ClassNotFoundException");
            mv.visitLabel(l0);
            mv.visitVarInsn(Opcodes.ALOAD, 0);
            mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Class",
                    "forName", "(Ljava/lang/String;)Ljava/lang/Class;", false);
            mv.visitLabel(l1);
            mv.visitInsn(Opcodes.ARETURN);
            mv.visitLabel(l2);
            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL,
                    "java/lang/ClassNotFoundException", "getMessage",
                    "()Ljava/lang/String;", false);
            mv.visitVarInsn(Opcodes.ASTORE, 1);
            mv.visitTypeInsn(Opcodes.NEW, "java/lang/NoClassDefFoundError");
            mv.visitInsn(Opcodes.DUP);
            mv.visitVarInsn(Opcodes.ALOAD, 1);
            mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
                    "java/lang/NoClassDefFoundError", "<init>",
                    "(Ljava/lang/String;)V", false);
            mv.visitInsn(Opcodes.ATHROW);
            mv.visitMaxs(3, 2);
            mv.visitEnd();

            if (hasClinitMethod) {
                mv = cv.visitMethod(Opcodes.ACC_STATIC | Opcodes.ACC_PRIVATE,
                        "_clinit_", "()V", null, null);
            } else {
                mv = cv.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V",
                        null, null);
            }
            for (String ldcName : syntheticClassFields) {
                String fieldName = "class$" + ldcName.replace('/', '$');
                mv.visitLdcInsn(ldcName.replace('/', '.'));
                mv.visitMethodInsn(Opcodes.INVOKESTATIC, clsName, "class$",
                        "(Ljava/lang/String;)Ljava/lang/Class;", false);
                mv.visitFieldInsn(Opcodes.PUTSTATIC, clsName, fieldName,
                        "Ljava/lang/Class;");
            }
            mv.visitInsn(Opcodes.RETURN);
            mv.visitMaxs(1, 0);
            mv.visitEnd();
        }
        super.visitEnd();
    }
View Full Code Here

    }

    @Override
    public MethodVisitor visitMethod(final int access, final String name,
            final String desc, final String signature, final String[] exceptions) {
        MethodVisitor mv;
        if ("<clinit>".equals(name)) {
            int a = Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC;
            String n = prefix + counter++;
            mv = cv.visitMethod(a, n, desc, signature, exceptions);
View Full Code Here

    }

    public void implementPublicConstructor(ClassWriter cw, String superClassName)
    {

        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, PlasticInternalUtils.toInternalName(superClassName), "<init>", "()V");
        mv.visitInsn(RETURN);
        mv.visitEnd();
    }
View Full Code Here

    {
        ClassWriter cw = helper.createWriter(SYNTH_COMPONENT_CLASSNAME, BASIC_COMPONENT_CLASSNAME, Named.class.getName());

        helper.implementPublicConstructor(cw, BASIC_COMPONENT_CLASSNAME);

        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "getName", "()Ljava/lang/String;", null, null);
        mv.visitCode();
        mv.visitLdcInsn(name);
        mv.visitInsn(ARETURN);
        mv.visitEnd();

        cw.visitEnd();

        helper.writeFile(cw, SYNTH_COMPONENT_CLASSNAME);
    }
View Full Code Here

    {
        String className = PACKAGE + ".Index";

        ClassWriter cw = helper.createWriter(className, "java.lang.Object");

        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "getNumber", "()I", null, null);
        mv.visitCode();
        mv.visitLdcInsn(number);
        mv.visitInsn(IRETURN);
        cw.visitEnd();

        cw.visitEnd();

        helper.writeFile(cw, className);
View Full Code Here

TOP

Related Classes of org.apache.tapestry5.internal.plastic.asm.MethodVisitor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.