Package org.objectweb.asm

Examples of org.objectweb.asm.CodeVisitor


                "(Ljava/lang/Object;I" + JT_PO + ")V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoElementRemovedMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoElementRemoved",
                "(Ljava/lang/Object;I)V", null, null);
        //${classNameFields}.speedoElementRemoved(elem, gcid, this);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitVarInsn(ILOAD, 2);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESTATIC, xfieldsJCN, "speedoElementRemoved",
                "(Ljava/lang/Object;I" + JT_PO + ")V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here


        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }

    private void generateSpeedoGetPNameHintsMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoGetPNameHints", "()Ljava/lang/Object;", null, null);
        final Object[] actions;
        try {
            actions = scp.nmf.getNamingManager(speedoClass).getPNameHints2(
                    speedoClass,
                    AbstractSpeedoGenerator.getClassNameDef(speedoClass.jormclass, scp));
        } catch (SpeedoException e) {
            throw personality.newRuntimeException(e.getMessage(), e);
        }
        if (actions == null || actions.length == 0) {
            mv.visitInsn(ACONST_NULL);
        } else if (actions[0].equals(NamingManager.PNH_NULL_VALUE)) {
            mv.visitInsn(ACONST_NULL);

        } else if (actions[0].equals(NamingManager.PNH_REF_STATE)) {
            generateGetRefState(mv, false);
       
        } else if (actions[0].equals(NamingManager.PNH_PFIELD)) {
            final PType pt = (PType) actions[2];
            final String fieldName = (String) actions[1];
            final String jvmFieldType = getJVMType(pt);
            final String wrapper = getJavaWrapper(pt);
            if (wrapper != null) {
                mv.visitTypeInsn(NEW, wrapper);
                mv.visitInsn(DUP);
            }
            generateGetRefState(mv, true);
            mv.visitFieldInsn(GETFIELD, xfieldsJCN, fieldName, jvmFieldType);
            if (wrapper != null) {
                mv.visitMethodInsn(INVOKESPECIAL, wrapper, "<init>",
                        "(" + jvmFieldType + ")V");
            }
        }

        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoGetPOManagerMethod() {
        CodeVisitor mv = cv.visitMethod(ACC_PUBLIC, "speedoGetPOManager",
                "()Lorg/objectweb/speedo/pm/api/POManagerItf;", null, null);
        //return (speedoIsActive
                //? speedoGetHome().getPOManagerFactory().lookup()
                //: null);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, classToWrite, ISACTIVE_FIELD_NAME, "Z");
        Label l1 = new Label();
        mv.visitJumpInsn(IFEQ, l1);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite, "speedoGetHome",
                "()" + JT_HOME);
        mv.visitMethodInsn(INVOKEINTERFACE, JCN_HOME, "getPOManagerFactory",
                "()" + JT_POMF);
        mv.visitMethodInsn(INVOKEINTERFACE, JCN_POMF, "lookup", "()" + JT_POM);
        Label l2 = new Label();
        mv.visitJumpInsn(GOTO, l2);
        mv.visitLabel(l1);
        mv.visitInsn(ACONST_NULL);
        mv.visitLabel(l2);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

            cv.visitTryCatchBlock(l0, l1, l2, "java/lang/Exception");
        }
        cv.visitMaxs(0, 0);
    }
    private void generateGetVersioningStrategy(HomeContext gc) {
        CodeVisitor cv = gc.cv.visitMethod(ACC_PUBLIC + ACC_FINAL,
                "getVersioningStrategy", "()B", null, null);
        cv.visitFieldInsn(GETSTATIC, gc.classToWriteJCN, "VERSIONING_STRATEGY", "B");
        cv.visitInsn(IRETURN);
        cv.visitMaxs(1, 1);
    }
View Full Code Here

        cv.visitFieldInsn(GETSTATIC, gc.classToWriteJCN, "VERSIONING_STRATEGY", "B");
        cv.visitInsn(IRETURN);
        cv.visitMaxs(1, 1);
    }
    private void generateIsDetachable(HomeContext gc) {
        CodeVisitor cv = gc.cv.visitMethod(ACC_PUBLIC + ACC_FINAL,
                "isDetachable", "()Z", null, null);
        cv.visitFieldInsn(GETSTATIC, gc.classToWriteJCN, "DETACHABLE", "Z");
        cv.visitInsn(IRETURN);
        cv.visitMaxs(1, 1);
    }
View Full Code Here

        cv.visitInsn(IRETURN);
        cv.visitMaxs(1, 1);
    }
    private void generateIsAbstract(HomeContext gc) {
        if (gc.sc.isAbstract) {
            CodeVisitor cv = gc.cv.visitMethod(ACC_PUBLIC + ACC_FINAL,
                    "isAbstract", "()Z", null, null);
            cv.visitInsn(ICONST_1);
            cv.visitInsn(IRETURN);
            cv.visitMaxs(1, 1);
        }
    }
View Full Code Here

            return null;
        }
    }
   
    private void generateSpeedoCreateStateMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, M_SPEEDO_CREATE_STATE, "()" + JT_STATE, null, null);
        //return new $classNameFields(this);
        mv.visitTypeInsn(NEW, xfieldsJCN);
        mv.visitInsn(DUP);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, xfieldsJCN, "<init>", "(" + JT_PO + ")V");
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

            cv.visitInsn(IRETURN);
            cv.visitMaxs(1, 1);
        }
    }
    private void generateGetClassProperties(HomeContext gc) throws SpeedoException {
        CodeVisitor cv = gc.cv.visitMethod(ACC_PUBLIC + ACC_FINAL, "getClassProperties",
                "()Ljava/util/Properties;", null, null);
        cv.visitTypeInsn(NEW, "java/util/Properties");
        cv.visitInsn(DUP);
        cv.visitMethodInsn(INVOKESPECIAL, "java/util/Properties", "<init>", "()V");
        cv.visitVarInsn(ASTORE, 1);
       
        Properties classProperties = new Properties();
        getJormConfig(gc.sc, classProperties);
        String xmlFileName = gc.sc.moPackage.xmlDescriptor.xmlFile;
        xmlFileName = StringReplace.replaceChar('/', '.', xmlFileName);
        xmlFileName = StringReplace.replaceChar(fs, '.', xmlFileName);
        classProperties.setProperty(
                Object2StringSerializer.DESC_FILE_NAME_PROP,
                xmlFileName);
        for (Iterator it = classProperties.entrySet().iterator(); it.hasNext();) {
            Map.Entry me = (Map.Entry) it.next();
            cv.visitVarInsn(ALOAD, 1);
            cv.visitLdcInsn(me.getKey());
            cv.visitLdcInsn(me.getValue());
            cv.visitMethodInsn(INVOKEVIRTUAL, "java/util/Properties", "setProperty",
                    "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;");
            cv.visitInsn(POP); //remove the result of the setProperty method
        }
       
        cv.visitVarInsn(ALOAD, 1);
        cv.visitInsn(ARETURN);
        cv.visitMaxs(3, 2);
    }
View Full Code Here

        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }

    private void generateSpeedoSetReferenceStateMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, M_SPEEDO_SET_REF_STATE, "("+ JT_STATE + ")V", null, null);
        //speedoReferenceState = ($classNameFields) refAcc;
        mv.visitVarInsn(ALOAD, 0);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitTypeInsn(CHECKCAST, xfieldsAncestorJCN);
        mv.visitFieldInsn(PUTFIELD, ancestorJCN, REFSTATE_FIELD_NAME, xfieldsAncestorJT);
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

        mv.visitFieldInsn(PUTFIELD, ancestorJCN, REFSTATE_FIELD_NAME, xfieldsAncestorJT);
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoCopyStateMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, M_SPEEDO_COPY_STATE,
                "(" + JT_STATE + JT_STATE + ")V", null, null);
        //(($classNameFields) src).speedoCopyState(src, dest);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitTypeInsn(CHECKCAST, xfieldsJCN);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitVarInsn(ALOAD, 2);
        mv.visitMethodInsn(INVOKEVIRTUAL, xfieldsJCN, M_SPEEDO_COPY_STATE,
                "(" + JT_STATE + JT_STATE + ")V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

TOP

Related Classes of org.objectweb.asm.CodeVisitor

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.