Example usage for org.objectweb.asm MethodVisitor visitMaxs

List of usage examples for org.objectweb.asm MethodVisitor visitMaxs

Introduction

In this page you can find the example usage for org.objectweb.asm MethodVisitor visitMaxs.

Prototype

public void visitMaxs(final int maxStack, final int maxLocals) 

Source Link

Document

Visits the maximum stack size and the maximum number of local variables of the method.

Usage

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * //from   w ww.  ja  v  a 2  s .  c o m
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodGetDn(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, p_Method.getName(), p_MethodDescriptor, null,
            null);
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObject", "getDn", "()Ljava/lang/String;");
    mv.visitInsn(ARETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * /*from  ww w . j  av  a  2 s .c om*/
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodStore(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "store", "()V", null,
            new String[] { "javax/naming/NamingException" });
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObjectManager",
            "Lldapbeans/bean/LdapObjectManager;");
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObjectManager", "storeLdapObject",
            "(Lldapbeans/bean/LdapObject;)V");
    mv.visitInsn(RETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * // w  w  w. j  av a2s .  co  m
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodRestore(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "restore", "()V", null,
            new String[] { "javax/naming/NamingException" });
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObjectManager",
            "Lldapbeans/bean/LdapObjectManager;");
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObjectManager", "restoreLdapObject",
            "(Lldapbeans/bean/LdapObject;)V");
    mv.visitInsn(RETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * /*from w  w  w  .j  av  a  2s.com*/
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodMove(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "move", "(Ljava/lang/String;)V", null,
            new String[] { "javax/naming/NamingException" });
    mv.visitCode();
    // this.m_LdapObjectManager.moveLdapObject(this.m_LdapObject, p_Dn);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObjectManager",
            "Lldapbeans/bean/LdapObjectManager;");
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitVarInsn(ALOAD, 1);
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObjectManager", "moveLdapObject",
            "(Lldapbeans/bean/LdapObject;Ljava/lang/String;)V");
    mv.visitInsn(RETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * /*from www .  j ava  2s .  c  o m*/
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodRemove(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "remove", "()V", null,
            new String[] { "javax/naming/NamingException" });
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObjectManager",
            "Lldapbeans/bean/LdapObjectManager;");
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObjectManager", "removeLdapObject",
            "(Lldapbeans/bean/LdapObject;)V");
    mv.visitInsn(RETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * /*from  w  w w  .  ja v  a2  s. com*/
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodToString(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null);
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETFIELD, INTERNAL_PACKAGE_NAME + '/' + p_ClassName, "m_LdapObject",
            "Lldapbeans/bean/LdapObject;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "ldapbeans/bean/LdapObject", "toString", "()Ljava/lang/String;");
    mv.visitInsn(ARETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * //from  w  ww .  j  av  a2  s .co  m
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 */
private void generateMethodEquals(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor) {
    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, "equals", "(Ljava/lang/Object;)Z", null, null);
    mv.visitCode();
    mv.visitVarInsn(ALOAD, 1);
    mv.visitTypeInsn(INSTANCEOF, "ldapbeans/bean/LdapBean");
    Label l0 = new Label();
    mv.visitJumpInsn(IFEQ, l0);
    mv.visitVarInsn(ALOAD, 1);
    Label l1 = new Label();
    mv.visitJumpInsn(IFNULL, l1);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKEINTERFACE, "ldapbeans/bean/LdapBean", "getDN", "()Ljava/lang/String;");
    mv.visitVarInsn(ALOAD, 1);
    mv.visitTypeInsn(CHECKCAST, "ldapbeans/bean/LdapBean");
    mv.visitMethodInsn(INVOKEINTERFACE, "ldapbeans/bean/LdapBean", "getDN", "()Ljava/lang/String;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z");
    mv.visitJumpInsn(IFEQ, l1);
    mv.visitInsn(ICONST_1);
    mv.visitInsn(IRETURN);
    mv.visitLabel(l1);
    mv.visitInsn(ICONST_0);
    mv.visitInsn(IRETURN);
    mv.visitLabel(l0);
    mv.visitInsn(ICONST_0);
    mv.visitInsn(IRETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:ldapbeans.bean.LdapBeanClassManager.java

License:LGPL

/**
 * Generate a method of the generated class
 * /*from   w w w. ja  v  a  2  s  . c  o m*/
 * @param p_ClassWriter
 *            The {@link ClassWriter} of the generated class
 * @param p_ClassName
 *            The name of the class
 * @param p_Method
 *            the method to generate
 * @param p_MethodDescriptor
 *            The method descriptor
 * @param p_LineNumber
 *            Line number of the method (used for debug)
 */
private void generateMethod(ClassWriter p_ClassWriter, String p_ClassName, Method p_Method,
        String p_MethodDescriptor, final int p_LineNumber) {
    Class<?> returnType = p_Method.getReturnType();
    Class<?>[] parameterTypes = p_Method.getParameterTypes();
    LdapAttribute ldapAttribute = LdapBeanHelper.getInstance().getLdapAttribute(p_Method);

    MethodVisitor mv = p_ClassWriter.visitMethod(ACC_PUBLIC, p_Method.getName(), p_MethodDescriptor, null,
            null);
    if (CONFIG.isDebugLineNumberEnabled()) {
        // Add line number debug information
        mv = new MethodAdapter(mv) {
            private int m_LineNumber = p_LineNumber;

            public void visitLineNumber(int p_Line, Label p_Start) {
            }

            public void visitLabel(Label p_Label) {
                Label l0 = new Label();
                super.visitLabel(l0);
                super.visitLineNumber(m_LineNumber++, l0);
                super.visitLabel(p_Label);
            };

            public void visitVarInsn(int p_Opcode, int p_Var) {
                Label l0 = new Label();
                super.visitLabel(l0);
                super.visitLineNumber(m_LineNumber++, l0);
                super.visitVarInsn(p_Opcode, p_Var);
            }
        };
    }
    mv.visitCode();
    if (void.class.equals(returnType) && (parameterTypes.length > 0)) {
        // It must be a setter
        generateMethodSetter(mv, p_ClassName, p_Method, ldapAttribute, parameterTypes);
    } else if ((!void.class.equals(returnType)) && (parameterTypes.length == 0)) {
        // It must be a getter
        generateMethodGetter(mv, p_ClassName, ldapAttribute, returnType);
    } else {
        throw new UnsupportedOperationException();
    }
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}

From source file:lombok.patcher.scripts.SetSymbolDuringMethodCallScript.java

License:Open Source License

private void makeWrapperMethod(ClassVisitor cv, WrapperMethodDescriptor wmd) {
    MethodVisitor mv = cv.visitMethod(Opcodes.ACC_SYNTHETIC | Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC,
            wmd.getWrapperName(), wmd.getWrapperDescriptor(), null, null);

    MethodLogistics logistics = new MethodLogistics(Opcodes.ACC_STATIC, wmd.getWrapperDescriptor());

    mv.visitCode();//from  w  w w.j a  v  a 2 s  .c om
    Label start = new Label();
    Label end = new Label();
    Label handler = new Label();
    mv.visitTryCatchBlock(start, end, handler, null);
    mv.visitLabel(start);
    mv.visitLdcInsn(symbol);
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, "lombok/patcher/Symbols", "push", "(Ljava/lang/String;)V", false);
    for (int i = 0; i < logistics.getParamCount(); i++) {
        logistics.generateLoadOpcodeForParam(i, mv);
    }
    mv.visitMethodInsn(wmd.getOpcode(), wmd.getOwner(), wmd.getName(), wmd.getTargetDescriptor(), wmd.isItf());
    mv.visitLabel(end);
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, "lombok/patcher/Symbols", "pop", "()V", false);
    logistics.generateReturnOpcode(mv);
    mv.visitLabel(handler);
    mv.visitFrame(Opcodes.F_FULL, 0, null, 1, new Object[] { "java/lang/Throwable" });
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, "lombok/patcher/Symbols", "pop", "()V", false);
    mv.visitInsn(Opcodes.ATHROW);
    mv.visitMaxs(Math.max(1, logistics.getParamCount()), logistics.getParamCount());
    mv.visitEnd();
}

From source file:lucee.transformer.bytecode.util.MethodCleaner.java

License:Open Source License

private void exception(MethodVisitor mv) {
    mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
    mv.visitInsn(DUP);//from  w w w  .java  2s. c o m
    mv.visitLdcInsn(msg);
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V");
    mv.visitInsn(ATHROW);
    mv.visitMaxs(3, 1);
}