Class BCIRenumberedAttribute

    • Field Detail

      • renumbered

        protected boolean renumbered
    • Constructor Detail

      • BCIRenumberedAttribute

        public BCIRenumberedAttribute​(CPUTF8 attributeName)
    • Method Detail

      • getLength

        protected abstract int getLength()
        Specified by:
        getLength in class Attribute
      • getStartPCs

        protected abstract int[] getStartPCs()
      • hasBCIRenumbering

        public boolean hasBCIRenumbering()
        Description copied from class: Attribute
        Answer true if the receiver needs to have BCI renumbering applied to it; otherwise answer false.
        Overrides:
        hasBCIRenumbering in class Attribute
        Returns:
        boolean BCI renumbering required
      • renumber

        public void renumber​(java.util.List<java.lang.Integer> byteCodeOffsets)
                      throws Pack200Exception
        In Pack200, line number tables are BCI renumbered. This method takes the byteCodeOffsets (which is a List of Integers specifying the offset in the byte code array of each instruction) and updates the start_pcs so that it points to the instruction index itself, not the BCI renumbering of the instruction.
        Parameters:
        byteCodeOffsets - List of Integer offsets of the byte code array
        Throws:
        Pack200Exception - Thrown from a subclass.
      • writeBody

        protected abstract void writeBody​(java.io.DataOutputStream dos)
                                   throws java.io.IOException
        Specified by:
        writeBody in class Attribute
        Throws:
        java.io.IOException