List of usage examples for org.objectweb.asm MethodVisitor visitMaxs
public void visitMaxs(final int maxStack, final int maxLocals)
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); }