Class ClassBands


  • public class ClassBands
    extends BandSet
    Class bands (corresponds to the class_bands set of bands in the pack200 specification)
    • Field Detail

      • EMPTY_LONG_ARRAY

        private static final long[] EMPTY_LONG_ARRAY
      • cpBands

        private final CpBands cpBands
      • class_this

        private final CPClass[] class_this
      • class_super

        private final CPClass[] class_super
      • class_interface

        private final CPClass[][] class_interface
      • class_interface_count

        private final int[] class_interface_count
      • major_versions

        private final int[] major_versions
      • class_flags

        private final long[] class_flags
      • class_attr_calls

        private int[] class_attr_calls
      • classSourceFile

        private final java.util.List<CPUTF8> classSourceFile
      • classEnclosingMethodClass

        private final java.util.List<ConstantPoolEntry> classEnclosingMethodClass
      • classEnclosingMethodDesc

        private final java.util.List<ConstantPoolEntry> classEnclosingMethodDesc
      • classSignature

        private final java.util.List<CPSignature> classSignature
      • classFileVersionMinor

        private final IntList classFileVersionMinor
      • classFileVersionMajor

        private final IntList classFileVersionMajor
      • class_field_count

        private final int[] class_field_count
      • field_flags

        private final long[][] field_flags
      • field_attr_calls

        private int[] field_attr_calls
      • fieldConstantValueKQ

        private final java.util.List<CPConstant<?>> fieldConstantValueKQ
      • fieldSignature

        private final java.util.List<CPSignature> fieldSignature
      • class_method_count

        private final int[] class_method_count
      • method_flags

        private final long[][] method_flags
      • method_attr_calls

        private int[] method_attr_calls
      • methodSignature

        private final java.util.List<CPSignature> methodSignature
      • methodExceptionNumber

        private final IntList methodExceptionNumber
      • methodExceptionClasses

        private final java.util.List<CPClass> methodExceptionClasses
      • codeHeaders

        private int[] codeHeaders
      • codeMaxStack

        private final IntList codeMaxStack
      • codeMaxLocals

        private final IntList codeMaxLocals
      • codeHandlerCount

        private final IntList codeHandlerCount
      • codeHandlerStartP

        private final java.util.List codeHandlerStartP
      • codeHandlerEndPO

        private final java.util.List codeHandlerEndPO
      • codeHandlerCatchPO

        private final java.util.List codeHandlerCatchPO
      • codeHandlerClass

        private final java.util.List<CPClass> codeHandlerClass
      • codeFlags

        private final java.util.List<java.lang.Long> codeFlags
      • code_attr_calls

        private int[] code_attr_calls
      • codeLineNumberTableN

        private final IntList codeLineNumberTableN
      • codeLineNumberTableBciP

        private final java.util.List codeLineNumberTableBciP
      • codeLineNumberTableLine

        private final IntList codeLineNumberTableLine
      • codeLocalVariableTableN

        private final IntList codeLocalVariableTableN
      • codeLocalVariableTableBciP

        private final java.util.List codeLocalVariableTableBciP
      • codeLocalVariableTableSpanO

        private final java.util.List codeLocalVariableTableSpanO
      • codeLocalVariableTableNameRU

        private final java.util.List<ConstantPoolEntry> codeLocalVariableTableNameRU
      • codeLocalVariableTableTypeRS

        private final java.util.List<ConstantPoolEntry> codeLocalVariableTableTypeRS
      • codeLocalVariableTableSlot

        private final IntList codeLocalVariableTableSlot
      • codeLocalVariableTypeTableN

        private final IntList codeLocalVariableTypeTableN
      • codeLocalVariableTypeTableBciP

        private final java.util.List codeLocalVariableTypeTableBciP
      • codeLocalVariableTypeTableSpanO

        private final java.util.List codeLocalVariableTypeTableSpanO
      • codeLocalVariableTypeTableNameRU

        private final java.util.List<ConstantPoolEntry> codeLocalVariableTypeTableNameRU
      • codeLocalVariableTypeTableTypeRS

        private final java.util.List<ConstantPoolEntry> codeLocalVariableTypeTableTypeRS
      • codeLocalVariableTypeTableSlot

        private final IntList codeLocalVariableTypeTableSlot
      • classAttributeBands

        private final java.util.List<NewAttributeBands> classAttributeBands
      • methodAttributeBands

        private final java.util.List<NewAttributeBands> methodAttributeBands
      • fieldAttributeBands

        private final java.util.List<NewAttributeBands> fieldAttributeBands
      • codeAttributeBands

        private final java.util.List<NewAttributeBands> codeAttributeBands
      • tempFieldFlags

        private final java.util.List<java.lang.Long> tempFieldFlags
      • tempFieldDesc

        private final java.util.List<CPNameAndType> tempFieldDesc
      • tempMethodFlags

        private final java.util.List<java.lang.Long> tempMethodFlags
      • tempMethodDesc

        private final java.util.List<CPNameAndType> tempMethodDesc
      • anySyntheticClasses

        private boolean anySyntheticClasses
      • anySyntheticFields

        private boolean anySyntheticFields
      • anySyntheticMethods

        private boolean anySyntheticMethods
      • segment

        private final Segment segment
      • classReferencesInnerClass

        private final java.util.Map<CPClass,​java.util.Set<CPClass>> classReferencesInnerClass
      • stripDebug

        private final boolean stripDebug
      • index

        private int index
      • numMethodArgs

        private int numMethodArgs
      • class_InnerClasses_N

        private int[] class_InnerClasses_N
      • class_InnerClasses_RC

        private CPClass[] class_InnerClasses_RC
      • class_InnerClasses_F

        private int[] class_InnerClasses_F
      • classInnerClassesOuterRCN

        private java.util.List<CPClass> classInnerClassesOuterRCN
      • classInnerClassesNameRUN

        private java.util.List<CPUTF8> classInnerClassesNameRUN
    • Constructor Detail

      • ClassBands

        public ClassBands​(Segment segment,
                          int numClasses,
                          int effort,
                          boolean stripDebug)
                   throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • countArgs

        protected static int countArgs​(java.lang.String descriptor)
      • addAnnotation

        public void addAnnotation​(int context,
                                  java.lang.String desc,
                                  boolean visible,
                                  java.util.List<java.lang.String> nameRU,
                                  java.util.List<java.lang.String> tags,
                                  java.util.List<java.lang.Object> values,
                                  java.util.List<java.lang.Integer> caseArrayN,
                                  java.util.List<java.lang.String> nestTypeRS,
                                  java.util.List<java.lang.String> nestNameRU,
                                  java.util.List<java.lang.Integer> nestPairN)
      • addAnnotationDefault

        public void addAnnotationDefault​(java.util.List<java.lang.String> nameRU,
                                         java.util.List<java.lang.String> tags,
                                         java.util.List<java.lang.Object> values,
                                         java.util.List<java.lang.Integer> caseArrayN,
                                         java.util.List<java.lang.String> nestTypeRS,
                                         java.util.List<java.lang.String> nestNameRU,
                                         java.util.List<java.lang.Integer> nestPairN)
      • addClass

        public void addClass​(int major,
                             int flags,
                             java.lang.String className,
                             java.lang.String signature,
                             java.lang.String superName,
                             java.lang.String[] interfaces)
      • addClassAttribute

        public void addClassAttribute​(NewAttribute attribute)
      • addCode

        public void addCode()
      • addCodeAttribute

        public void addCodeAttribute​(NewAttribute attribute)
      • addEnclosingMethod

        public void addEnclosingMethod​(java.lang.String owner,
                                       java.lang.String name,
                                       java.lang.String desc)
      • addField

        public void addField​(int flags,
                             java.lang.String name,
                             java.lang.String desc,
                             java.lang.String signature,
                             java.lang.Object value)
      • addFieldAttribute

        public void addFieldAttribute​(NewAttribute attribute)
      • addHandler

        public void addHandler​(org.objectweb.asm.Label start,
                               org.objectweb.asm.Label end,
                               org.objectweb.asm.Label handler,
                               java.lang.String type)
      • addLineNumber

        public void addLineNumber​(int line,
                                  org.objectweb.asm.Label start)
      • addLocalVariable

        public void addLocalVariable​(java.lang.String name,
                                     java.lang.String desc,
                                     java.lang.String signature,
                                     org.objectweb.asm.Label start,
                                     org.objectweb.asm.Label end,
                                     int indx)
      • addMaxStack

        public void addMaxStack​(int maxStack,
                                int maxLocals)
      • addMethod

        public void addMethod​(int flags,
                              java.lang.String name,
                              java.lang.String desc,
                              java.lang.String signature,
                              java.lang.String[] exceptions)
      • addMethodAttribute

        public void addMethodAttribute​(NewAttribute attribute)
      • addParameterAnnotation

        public void addParameterAnnotation​(int parameter,
                                           java.lang.String desc,
                                           boolean visible,
                                           java.util.List<java.lang.String> nameRU,
                                           java.util.List<java.lang.String> tags,
                                           java.util.List<java.lang.Object> values,
                                           java.util.List<java.lang.Integer> caseArrayN,
                                           java.util.List<java.lang.String> nestTypeRS,
                                           java.util.List<java.lang.String> nestNameRU,
                                           java.util.List<java.lang.Integer> nestPairN)
      • addSourceFile

        public void addSourceFile​(java.lang.String source)
      • createNewAttributeBands

        private void createNewAttributeBands()
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • currentClassReferencesInnerClass

        public void currentClassReferencesInnerClass​(CPClass inner)
      • doBciRenumbering

        public void doBciRenumbering​(IntList bciRenumbering,
                                     java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)
      • endOfClass

        public void endOfClass()
      • endOfMethod

        public void endOfMethod()
      • finaliseBands

        public void finaliseBands()
        All input classes for the segment have now been read in, so this method is called so that this class can calculate/complete anything it could not do while classes were being read.
      • getInts

        private int[] getInts​(CPClass[] cpClasses)
      • isAnySyntheticClasses

        public boolean isAnySyntheticClasses()
      • isAnySyntheticFields

        public boolean isAnySyntheticFields()
      • isAnySyntheticMethods

        public boolean isAnySyntheticMethods()
      • isInnerClass

        private boolean isInnerClass​(java.lang.String possibleInner)
      • isInnerClassOf

        private boolean isInnerClassOf​(java.lang.String possibleInner,
                                       CPClass possibleOuter)
      • numClassesProcessed

        public int numClassesProcessed()
      • pack

        public void pack​(java.io.OutputStream out)
                  throws java.io.IOException,
                         Pack200Exception
        Description copied from class: BandSet
        Write the packed set of bands to the given output stream
        Specified by:
        pack in class BandSet
        Parameters:
        out - TODO
        Throws:
        java.io.IOException - If an I/O error occurs.
        Pack200Exception - TODO
      • removeCurrentClass

        public void removeCurrentClass()
        Remove all entries for the current class
      • renumberBci

        private void renumberBci​(java.util.List<java.lang.Integer> list,
                                 IntList bciRenumbering,
                                 java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)
      • renumberDoubleOffsetBci

        private void renumberDoubleOffsetBci​(java.util.List<java.lang.Integer> relative,
                                             java.util.List<java.lang.Integer> firstOffset,
                                             java.util.List<java.lang.Object> list,
                                             IntList bciRenumbering,
                                             java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)
      • renumberOffsetBci

        private void renumberOffsetBci​(java.util.List<java.lang.Integer> relative,
                                       java.util.List<java.lang.Integer> list,
                                       IntList bciRenumbering,
                                       java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)
      • sum

        private int sum​(int[] ints)
      • writeClassAttributeBands

        private void writeClassAttributeBands​(java.io.OutputStream out)
                                       throws java.io.IOException,
                                              Pack200Exception
        Throws:
        java.io.IOException
        Pack200Exception
      • writeCodeAttributeBands

        private void writeCodeAttributeBands​(java.io.OutputStream out)
                                      throws java.io.IOException,
                                             Pack200Exception
        Throws:
        java.io.IOException
        Pack200Exception
      • writeCodeBands

        private void writeCodeBands​(java.io.OutputStream out)
                             throws java.io.IOException,
                                    Pack200Exception
        Throws:
        java.io.IOException
        Pack200Exception
      • writeFieldAttributeBands

        private void writeFieldAttributeBands​(java.io.OutputStream out)
                                       throws java.io.IOException,
                                              Pack200Exception
        Throws:
        java.io.IOException
        Pack200Exception
      • writeMethodAttributeBands

        private void writeMethodAttributeBands​(java.io.OutputStream out)
                                        throws java.io.IOException,
                                               Pack200Exception
        Throws:
        java.io.IOException
        Pack200Exception