Package org.objectweb.asm

Examples of org.objectweb.asm.CodeVisitor


        mv.visitTypeInsn(CHECKCAST, JCN_HOME);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoGetReferenceStateMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, M_SPEEDO_GET_REF_STATE, "()" + JT_STATE, null, null);
        //return speedoReferenceState
        generateGetRefState(mv, false);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here


        generateGetRefState(mv, false);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoGetStateMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, M_SPEEDO_GET_STATE, "()" + JT_STATE, null, null);
        //if (!speedoIsActive) {
        //    return speedoReferenceState;
        //}
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, classToWrite, ISACTIVE_FIELD_NAME, "Z");
        Label l1 = new Label();
        mv.visitJumpInsn(IFNE, l1);
        generateGetRefState(mv, false);
        mv.visitInsn(ARETURN);
        mv.visitLabel(l1);

        //return speedoGetHome().getSpeedoAccessor(this);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite, M_SPEEDO_GET_HOME, "()" + JT_HOME);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEINTERFACE, JCN_HOME, "getState",
                "(" + JT_PO + ")" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

                "(" + JT_PO + ")" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoReadIntentionMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoReadIntention",
                "([J)" + JT_STATE, null, null);
        //if (!speedoIsActive) {
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, classToWrite, ISACTIVE_FIELD_NAME, "Z");
        Label l1 = new Label();
        mv.visitJumpInsn(IFNE, l1);
        {
            //if (speedoReferenceState == null) {
            generateGetRefState(mv, false);
            Label l3 = new Label();
            mv.visitJumpInsn(IFNONNULL, l3);
            {
                //speedoSetReferenceState(speedoCreateState());
                mv.visitVarInsn(ALOAD, 0);
                mv.visitVarInsn(ALOAD, 0);
                mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite,
                        M_SPEEDO_CREATE_STATE, "()" + JT_STATE);
                mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite,
                        M_SPEEDO_SET_REF_STATE, "(" + JT_STATE + ")V");
            }
            //return speedoReferenceState;
            mv.visitLabel(l3);
            generateGetRefState(mv, false);
            mv.visitInsn(ARETURN);
        }
       
        //return speedoGetHome().readIntention(this, fields);
        mv.visitLabel(l1);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite, M_SPEEDO_GET_HOME, "()" + JT_HOME);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitMethodInsn(INVOKEINTERFACE, JCN_HOME, "readIntention",
                "(" + JT_PO + "[J)" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

                    gc.userCacheNames[ucIdx] + "_USER_CACHE_ID",
                    "I", new Integer(ucIdx), null);
        }
    }
    private void generateStaticClause(HomeContext gc) {
        CodeVisitor cv = gc.cv.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
        final HashSet staticfieldNames = new HashSet();
        generateFieldNamesInit(gc, cv);
        generateFieldTypesInit(gc, staticfieldNames, cv);

        // Field flags
        cv.visitInsn(ICONST_0);
        cv.visitIntInsn(NEWARRAY, T_BYTE);
        cv.visitFieldInsn(PUTSTATIC, gc.classToWriteJCN, "FIELD_FLAGS", "[B");
       
        //Super class
        if (gc.sc.getSuperClassName() == null) {
            cv.visitInsn(ACONST_NULL);
        } else {
            generateDotClass(gc.sc.getSuperClassName(), gc, staticfieldNames, cv);
        }
        cv.visitFieldInsn(PUTSTATIC, gc.classToWriteJCN, "SUPER_CLASS", "Ljava/lang/Class;");
       
        cv.visitInsn(RETURN);
        cv.visitMaxs(0, 0);

        for (Iterator iter = staticfieldNames.iterator(); iter.hasNext();) {
            String fn = (String) iter.next();
            gc.cv.visitField(ACC_STATIC + ACC_SYNTHETIC, fn, gc.classJT, null, null);
        }
View Full Code Here

            cv.visitFieldInsn(GETSTATIC, gc.classToWriteJCN, staticFieldName, gc.classJT);
        }
        cv.visitLabel(labelEnd);
    }
    private void generateClassMethod(HomeContext gc) {
        CodeVisitor cv = gc.cv.visitMethod(ACC_STATIC + ACC_SYNTHETIC, "class$",
                "(Ljava/lang/String;)Ljava/lang/Class;", null, null);
        Label labelTry = new Label();
        cv.visitLabel(labelTry);
        cv.visitVarInsn(ALOAD, 0);
        cv.visitMethodInsn(INVOKESTATIC, "java/lang/Class", "forName",
                "(Ljava/lang/String;)Ljava/lang/Class;");
        Label labelEndTry = new Label();
        cv.visitLabel(labelEndTry);
        cv.visitInsn(ARETURN);
        Label labelCatch = new Label();
        cv.visitLabel(labelCatch);
        cv.visitVarInsn(ASTORE, 1);
        cv.visitTypeInsn(NEW, "java/lang/NoClassDefFoundError");
        cv.visitInsn(DUP);
        cv.visitVarInsn(ALOAD, 1);
        cv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/ClassNotFoundException",
                "getMessage", "()Ljava/lang/String;");
        cv.visitMethodInsn(INVOKESPECIAL, "java/lang/NoClassDefFoundError",
                "<init>", "(Ljava/lang/String;)V");
        cv.visitInsn(ATHROW);
        cv.visitTryCatchBlock(labelTry, labelEndTry, labelCatch, "java/lang/ClassNotFoundException");
        cv.visitMaxs(0, 0);
    }
View Full Code Here

                "(" + JT_PO + "[J)" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoWriteIntentionMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoWriteIntention",
                "([J)" + JT_STATE, null, null);
        //if (!speedoIsActive) {
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, classToWrite, ISACTIVE_FIELD_NAME, "Z");
        Label l1 = new Label();
        mv.visitJumpInsn(IFNE, l1);
        {
            //if (speedoReferenceState == null) {
            generateGetRefState(mv, false);
            Label l3 = new Label();
            mv.visitJumpInsn(IFNONNULL, l3);
            {
                //speedoSetReferenceState(speedoCreateState());
                mv.visitVarInsn(ALOAD, 0);
                mv.visitVarInsn(ALOAD, 0);
                mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite,
                        M_SPEEDO_CREATE_STATE, "()" + JT_STATE);
                mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite,
                        M_SPEEDO_SET_REF_STATE, "(" + JT_STATE + ")V");
            }
            //if(speedoReferenceState.getDetachedStatus() == DetachedLifeCycle.DETACHED_CLEAN){  
            mv.visitLabel(l3);
            generateGetRefState(mv, false);
            mv.visitMethodInsn(INVOKEVIRTUAL, xfieldsAncestorJCN, "getDetachedStatus", "()B");
            mv.visitInsn(ICONST_1);
            Label l5 = new Label();
            mv.visitJumpInsn(IF_ICMPNE, l5);
            {
                //speedoReferenceState.setDetachedStatus(DetachedLifeCycle.DETACHED_DIRTY);
                generateGetRefState(mv, false);
                mv.visitInsn(ICONST_2);
                mv.visitMethodInsn(INVOKEVIRTUAL, xfieldsAncestorJCN, "setDetachedStatus", "(B)V");
            }
            //return speedoReferenceState;
            mv.visitLabel(l5);
            generateGetRefState(mv, false);
            mv.visitInsn(ARETURN);
        }
        //return speedoGetHome().writeIntention(this, fields);
        mv.visitLabel(l1);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEVIRTUAL, classToWrite, M_SPEEDO_GET_HOME, "()" + JT_HOME);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitMethodInsn(INVOKEINTERFACE, JCN_HOME, "writeIntention",
                "(" + JT_PO + "[J)" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

        cv.visitInsn(ATHROW);
        cv.visitTryCatchBlock(labelTry, labelEndTry, labelCatch, "java/lang/ClassNotFoundException");
        cv.visitMaxs(0, 0);
    }
    protected void generateNoArgConstructor(HomeContext gc) {
        CodeVisitor mv = gc.cv.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, gc.superClassJCN, "<init>", "()V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateNewSpeedoPOInstance(HomeContext gc) {
        //protected PersistentObjectItf newSpeedoPOInstance(Class clazz) {
        CodeVisitor cv = gc.cv.visitMethod(ACC_PROTECTED, "newSpeedoPOInstance",
                "(Ljava/lang/Class;)Lorg/objectweb/speedo/mim/api/PersistentObjectItf;", null, null);
        if (gc.sc.isAbstract) {
            cv.visitInsn(ACONST_NULL);
            cv.visitInsn(ARETURN);
        } else {
            Label l0 = new Label();
            cv.visitLabel(l0);
            cv.visitTypeInsn(NEW, gc.xJCN);
            cv.visitInsn(DUP);
            cv.visitMethodInsn(INVOKESPECIAL, gc.xJCN, "<init>", "()V");
//            cv.visitVarInsn(ASTORE, 2);
//            cv.visitVarInsn(ALOAD, 2);
            cv.visitTypeInsn(CHECKCAST, "org/objectweb/speedo/mim/api/PersistentObjectItf");
            Label l1 = new Label();
            cv.visitLabel(l1);
            cv.visitInsn(ARETURN);
            Label l2 = new Label();
            cv.visitLabel(l2);
            cv.visitVarInsn(ASTORE, 2);
            cv.visitTypeInsn(NEW, personality.getUserRuntimeExceptionClassNameSlash());
            cv.visitInsn(DUP);
            cv.visitLdcInsn("Impossible to instanciate the class " + gc.classToWriteJCN + ": ");
            cv.visitVarInsn(ALOAD, 2);
            cv.visitMethodInsn(INVOKESPECIAL,
                personality.getUserRuntimeExceptionClassNameSlash(),
                    "<init>", "(Ljava/lang/String;Ljava/lang/Throwable;)V");
            cv.visitInsn(ATHROW);
            cv.visitTryCatchBlock(l0, l1, l2, "java/lang/Exception");
        }
        cv.visitMaxs(0, 0);
    }
View Full Code Here

                "(" + JT_PO + "[J)" + JT_STATE);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoGetEncodedPNameMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoGetEncodedPName", "()Ljava/lang/Object;", null, null);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, classToWrite, ENCODEDPNAME_FIELD_NAME, "Ljava/lang/Object;");
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
View Full Code Here

        mv.visitFieldInsn(GETFIELD, classToWrite, ENCODEDPNAME_FIELD_NAME, "Ljava/lang/Object;");
        mv.visitInsn(ARETURN);
        mv.visitMaxs(0, 0);
    }
    private void generateSpeedoSetEncodedPNameMethod() {
        CodeVisitor mv;
        mv = cv.visitMethod(ACC_PUBLIC, "speedoSetEncodedPName", "(Ljava/lang/Object;)V", null, null);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitFieldInsn(PUTFIELD, classToWrite, ENCODEDPNAME_FIELD_NAME, "Ljava/lang/Object;");
        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.