Class DuplicateFrameEliminator


  • class DuplicateFrameEliminator
    extends org.objectweb.asm.MethodVisitor
    Eliminates consecutive stackmap frame definitions which causes ASM to create invalid class files. This situation occurs when the original class files contains additional stackmap frames at unexpected offsets, which is case for some class files compiled with ECJ.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean instruction  
      • Fields inherited from class org.objectweb.asm.MethodVisitor

        api, mv
    • Constructor Summary

      Constructors 
      Constructor Description
      DuplicateFrameEliminator​(org.objectweb.asm.MethodVisitor mv)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void visitFieldInsn​(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)  
      void visitFrame​(int type, int nLocal, java.lang.Object[] local, int nStack, java.lang.Object[] stack)  
      void visitIincInsn​(int var, int increment)  
      void visitInsn​(int opcode)  
      void visitIntInsn​(int opcode, int operand)  
      void visitInvokeDynamicInsn​(java.lang.String name, java.lang.String desc, org.objectweb.asm.Handle bsm, java.lang.Object... bsmArgs)  
      void visitJumpInsn​(int opcode, org.objectweb.asm.Label label)  
      void visitLdcInsn​(java.lang.Object cst)  
      void visitLookupSwitchInsn​(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)  
      void visitMethodInsn​(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)  
      void visitMultiANewArrayInsn​(java.lang.String desc, int dims)  
      void visitTableSwitchInsn​(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)  
      void visitTypeInsn​(int opcode, java.lang.String type)  
      void visitVarInsn​(int opcode, int var)  
      • Methods inherited from class org.objectweb.asm.MethodVisitor

        getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitInsnAnnotation, visitLabel, visitLineNumber, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • instruction

        private boolean instruction
    • Constructor Detail

      • DuplicateFrameEliminator

        public DuplicateFrameEliminator​(org.objectweb.asm.MethodVisitor mv)
    • Method Detail

      • visitFrame

        public void visitFrame​(int type,
                               int nLocal,
                               java.lang.Object[] local,
                               int nStack,
                               java.lang.Object[] stack)
        Overrides:
        visitFrame in class org.objectweb.asm.MethodVisitor
      • visitInsn

        public void visitInsn​(int opcode)
        Overrides:
        visitInsn in class org.objectweb.asm.MethodVisitor
      • visitIntInsn

        public void visitIntInsn​(int opcode,
                                 int operand)
        Overrides:
        visitIntInsn in class org.objectweb.asm.MethodVisitor
      • visitVarInsn

        public void visitVarInsn​(int opcode,
                                 int var)
        Overrides:
        visitVarInsn in class org.objectweb.asm.MethodVisitor
      • visitTypeInsn

        public void visitTypeInsn​(int opcode,
                                  java.lang.String type)
        Overrides:
        visitTypeInsn in class org.objectweb.asm.MethodVisitor
      • visitFieldInsn

        public void visitFieldInsn​(int opcode,
                                   java.lang.String owner,
                                   java.lang.String name,
                                   java.lang.String desc)
        Overrides:
        visitFieldInsn in class org.objectweb.asm.MethodVisitor
      • visitMethodInsn

        public void visitMethodInsn​(int opcode,
                                    java.lang.String owner,
                                    java.lang.String name,
                                    java.lang.String desc,
                                    boolean itf)
        Overrides:
        visitMethodInsn in class org.objectweb.asm.MethodVisitor
      • visitInvokeDynamicInsn

        public void visitInvokeDynamicInsn​(java.lang.String name,
                                           java.lang.String desc,
                                           org.objectweb.asm.Handle bsm,
                                           java.lang.Object... bsmArgs)
        Overrides:
        visitInvokeDynamicInsn in class org.objectweb.asm.MethodVisitor
      • visitJumpInsn

        public void visitJumpInsn​(int opcode,
                                  org.objectweb.asm.Label label)
        Overrides:
        visitJumpInsn in class org.objectweb.asm.MethodVisitor
      • visitLdcInsn

        public void visitLdcInsn​(java.lang.Object cst)
        Overrides:
        visitLdcInsn in class org.objectweb.asm.MethodVisitor
      • visitIincInsn

        public void visitIincInsn​(int var,
                                  int increment)
        Overrides:
        visitIincInsn in class org.objectweb.asm.MethodVisitor
      • visitTableSwitchInsn

        public void visitTableSwitchInsn​(int min,
                                         int max,
                                         org.objectweb.asm.Label dflt,
                                         org.objectweb.asm.Label... labels)
        Overrides:
        visitTableSwitchInsn in class org.objectweb.asm.MethodVisitor
      • visitLookupSwitchInsn

        public void visitLookupSwitchInsn​(org.objectweb.asm.Label dflt,
                                          int[] keys,
                                          org.objectweb.asm.Label[] labels)
        Overrides:
        visitLookupSwitchInsn in class org.objectweb.asm.MethodVisitor
      • visitMultiANewArrayInsn

        public void visitMultiANewArrayInsn​(java.lang.String desc,
                                            int dims)
        Overrides:
        visitMultiANewArrayInsn in class org.objectweb.asm.MethodVisitor