Package com.sleepycat.asm

Examples of com.sleepycat.asm.MethodVisitor


     *      output.writeObject(secKeyField2, null);
     *      // etc
     }
     */
    private void genBdbWriteSecKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbWriteSecKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityOutput;)V", null, null);
        mv.visitCode();
       
        /*
         * In JE 5.0, String is treated as primitive type, so String does
         * not need to be registered. [#19247]
         */
        if (priKeyField != null &&
            isRefType(priKeyField.type) &&
            !priKeyField.isString) {
            genRegisterPrimaryKey(mv, false);
        }
        if (hasPersistentSuperclass) {
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 1);
            mv.visitMethodInsn
                (INVOKESPECIAL, superclassName, "bdbWriteSecKeyFields",
                 "(Lcom/sleepycat/persist/impl/EntityOutput;)V");
        }
        for (FieldInfo field : secKeyFields) {
            genWriteField(mv, field);
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(2, 2);
        mv.visitEnd();
    }
View Full Code Here


     *          }
     *      }
     }
     */
    private void genBdbReadSecKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbReadSecKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityInput;III)V", null, null);
        mv.visitCode();
        if (priKeyField != null &&
            isRefType(priKeyField.type) &&
            !priKeyField.isString) {
            genRegisterPrimaryKey(mv, true);
        } else if (priKeyField != null && priKeyField.isString) {
            genRegisterPrimaryStringKey(mv);
        }
        genReadSuperKeyFields(mv, true);
        genReadFieldSwitch(mv, secKeyFields);
        mv.visitInsn(RETURN);
        mv.visitMaxs(5, 5);
        mv.visitEnd();
    }
View Full Code Here

     public void bdbWriteNonKeyFields(EntityOutput output) {
     *      // like bdbWriteSecKeyFields but does not call registerPriKeyObject
     }
     */
    private void genBdbWriteNonKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbWriteNonKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityOutput;)V", null, null);
        mv.visitCode();
        if (!isCompositeKey) {
            if (hasPersistentSuperclass) {
                mv.visitVarInsn(ALOAD, 0);
                mv.visitVarInsn(ALOAD, 1);
                mv.visitMethodInsn
                    (INVOKESPECIAL, superclassName, "bdbWriteNonKeyFields",
                     "(Lcom/sleepycat/persist/impl/EntityOutput;)V");
            }
            for (FieldInfo field : nonKeyFields) {
                genWriteField(mv, field);
            }
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(2, 2);
        mv.visitEnd();
    }
View Full Code Here

     *                                  int superLevel) {
     *      // like bdbReadSecKeyFields but does not call registerPriKeyObject
     }
     */
    private void genBdbReadNonKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbReadNonKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityInput;III)V", null, null);
        mv.visitCode();
        if (!isCompositeKey) {
            genReadSuperKeyFields(mv, false);
            genReadFieldSwitch(mv, nonKeyFields);
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(5, 5);
        mv.visitEnd();
    }
View Full Code Here

     *      output.writeKeyObject(compositeKeyField2, formats[1]);
     *      // etc
     }
     */
    private void genBdbWriteCompositeKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbWriteCompositeKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityOutput;" +
             "[Lcom/sleepycat/persist/impl/Format;)V",
             null, null);
        mv.visitCode();
        if (isCompositeKey) {
            for (int i = 0; i < nonKeyFields.size(); i += 1) {
                FieldInfo field = nonKeyFields.get(i);
                if (!genWriteSimpleKeyField(mv, field)) {
                    /* For a non-simple type, call writeKeyObject. */
                    mv.visitVarInsn(ALOAD, 1);
                    mv.visitVarInsn(ALOAD, 0);
                    mv.visitFieldInsn
                        (GETFIELD, className, field.name,
                         field.type.getDescriptor());
                    mv.visitVarInsn(ALOAD, 2);
                    if (i <= Byte.MAX_VALUE) {
                        mv.visitIntInsn(BIPUSH, i);
                    } else {
                        mv.visitLdcInsn(new Integer(i));
                    }
                    mv.visitInsn(AALOAD);
                    mv.visitMethodInsn
                        (INVOKEINTERFACE,
                         "com/sleepycat/persist/impl/EntityOutput",
                         "writeKeyObject",
                         "(Ljava/lang/Object;" +
                          "Lcom/sleepycat/persist/impl/Format;)V");
                }
            }
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(3, 3);
        mv.visitEnd();
    }
View Full Code Here

     *      compositeKeyField1 = input.readInt();
     *      compositeKeyField2 = input.readKeyObject(formats[1]);
     *  }
     */
    private void genBdbReadCompositeKeyFields() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbReadCompositeKeyFields",
             "(Lcom/sleepycat/persist/impl/EntityInput;" +
             "[Lcom/sleepycat/persist/impl/Format;)V",
             null, null);
        mv.visitCode();
        if (isCompositeKey) {
            for (int i = 0; i < nonKeyFields.size(); i += 1) {
                FieldInfo field = nonKeyFields.get(i);
                /* Ignore non-simple (illegal) types for composite key. */
                if (!genReadSimpleKeyField(mv, field)) {
                    /* For a non-simple type, call readKeyObject. */
                    mv.visitVarInsn(ALOAD, 0);
                    mv.visitVarInsn(ALOAD, 1);
                    mv.visitVarInsn(ALOAD, 2);
                    if (i <= Byte.MAX_VALUE) {
                        mv.visitIntInsn(BIPUSH, i);
                    } else {
                        mv.visitLdcInsn(new Integer(i));
                    }
                    mv.visitInsn(AALOAD);
                    mv.visitMethodInsn
                        (INVOKEINTERFACE,
                         "com/sleepycat/persist/impl/EntityInput",
                         "readKeyObject",
                         "(Lcom/sleepycat/persist/impl/Format;)" +
                         "Ljava/lang/Object;");
                    mv.visitTypeInsn(CHECKCAST, getTypeInstName(field.type));
                    mv.visitFieldInsn
                        (PUTFIELD, className, field.name,
                         field.type.getDescriptor());
                }
            }
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(5, 5);
        mv.visitEnd();
    }
View Full Code Here

     *      }
     *      return null;
     *  }
     */
    private void genBdbGetField() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbGetField",
             "(Ljava/lang/Object;IIZ)Ljava/lang/Object;", null, null);
        mv.visitCode();
        mv.visitVarInsn(ILOAD, 3);
        Label l0 = new Label();
        mv.visitJumpInsn(IFLE, l0);
        Label l1 = new Label();
        if (hasPersistentSuperclass) {
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 1);
            mv.visitVarInsn(ILOAD, 2);
            mv.visitVarInsn(ILOAD, 3);
            mv.visitInsn(ICONST_1);
            mv.visitInsn(ISUB);
            mv.visitVarInsn(ILOAD, 4);
            mv.visitMethodInsn
                (INVOKESPECIAL, className, "bdbGetField",
                 "(Ljava/lang/Object;IIZ)Ljava/lang/Object;");
            mv.visitInsn(ARETURN);
        } else {
            mv.visitJumpInsn(GOTO, l1);
        }
        mv.visitLabel(l0);
        mv.visitVarInsn(ILOAD, 4);
        Label l2 = new Label();
        mv.visitJumpInsn(IFEQ, l2);
        genGetFieldSwitch(mv, secKeyFields, l1);
        mv.visitLabel(l2);
        genGetFieldSwitch(mv, nonKeyFields, l1);
        mv.visitLabel(l1);
        mv.visitInsn(ACONST_NULL);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(1, 5);
        mv.visitEnd();
    }
View Full Code Here

     *          }
     *      }
     }
     */
    private void genBdbSetField() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbSetField",
             "(Ljava/lang/Object;IIZLjava/lang/Object;)V", null, null);
        mv.visitCode();
        mv.visitVarInsn(ILOAD, 3);
        Label l0 = new Label();
        mv.visitJumpInsn(IFLE, l0);
        if (hasPersistentSuperclass) {
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 1);
            mv.visitVarInsn(ILOAD, 2);
            mv.visitVarInsn(ILOAD, 3);
            mv.visitInsn(ICONST_1);
            mv.visitInsn(ISUB);
            mv.visitVarInsn(ILOAD, 4);
            mv.visitVarInsn(ALOAD, 5);
            mv.visitMethodInsn
                (INVOKESPECIAL, className, "bdbSetField",
                 "(Ljava/lang/Object;IIZLjava/lang/Object;)V");
        }
        mv.visitInsn(RETURN);
        mv.visitLabel(l0);
        mv.visitVarInsn(ILOAD, 4);
        Label l2 = new Label();
        mv.visitJumpInsn(IFEQ, l2);
        Label l1 = new Label();
        genSetFieldSwitch(mv, secKeyFields, l1);
        mv.visitLabel(l2);
        genSetFieldSwitch(mv, nonKeyFields, l1);
        mv.visitLabel(l1);
        mv.visitInsn(RETURN);
        mv.visitMaxs(2, 6);
        mv.visitEnd();
    }
View Full Code Here

     *          super.bdbSetPriField(o, value)
     *      }
     }
     */
    private void genBdbSetPriField() {
        MethodVisitor mv = cv.visitMethod
            (ACC_PUBLIC, "bdbSetPriField",
             "(Ljava/lang/Object;Ljava/lang/Object;)V", null, null);
        mv.visitCode();
        if (priKeyField != null) {
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 2);
            if (isRefType(priKeyField.type)) {
                mv.visitTypeInsn(CHECKCAST, getTypeInstName(priKeyField.type));
            } else {
                int sort = priKeyField.type.getSort();
                mv.visitTypeInsn
                    (CHECKCAST,
                     getPrimitiveWrapperClass(sort).replace('.', '/'));
                genUnwrapPrimitive(mv, sort);
            }
            mv.visitFieldInsn
                (PUTFIELD, className, priKeyField.name,
                 priKeyField.type.getDescriptor());
        } else if (hasPersistentSuperclass) {
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 1);
            mv.visitVarInsn(ALOAD, 2);
            mv.visitMethodInsn
                (INVOKESPECIAL, superclassName, "bdbSetPriField",
                 "(Ljava/lang/Object;Ljava/lang/Object;)V");
        }
        mv.visitInsn(RETURN);
        mv.visitMaxs(3, 3);
        mv.visitEnd();
    }
View Full Code Here

     *      // or for an abstract class:
     *      EnhancedAccessor.registerClass(TheClassName, null);
     *  }
     */
    private void genStaticBlock() {
        MethodVisitor mv =
            cv.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
        mv.visitCode();
        if (staticBlockMethod != null) {
            mv.visitMethodInsn
                (INVOKESTATIC, className, staticBlockMethod, "()V");
        }
        mv.visitLdcInsn(className.replace('/', '.'));
        if (isAbstract) {
            mv.visitInsn(ACONST_NULL);
        } else {
            mv.visitTypeInsn(NEW, className);
            mv.visitInsn(DUP);
            mv.visitMethodInsn(INVOKESPECIAL, className, "<init>", "()V");
        }
        mv.visitMethodInsn
            (INVOKESTATIC, "com/sleepycat/persist/impl/EnhancedAccessor",
             "registerClass",
             "(Ljava/lang/String;Lcom/sleepycat/persist/impl/Enhanced;)V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(3, 0);
        mv.visitEnd();
    }
View Full Code Here

TOP

Related Classes of com.sleepycat.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.