/** * Outputs code in a static block to register the prototype instance: * * <p>static { EnhancedAccessor.registerClass(TheClassName, new TheClass()); // 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(); }