Class BCIRenumberedAttribute

Direct Known Subclasses:
CodeAttribute, LineNumberTableAttribute, LocalVariableTableAttribute, LocalVariableTypeTableAttribute, NewAttribute

public abstract class BCIRenumberedAttribute extends Attribute
Abstract superclass for attributes that have some part encoded with a BCI renumbering
  • Field Details

    • renumbered

      protected boolean renumbered
  • Constructor Details

    • BCIRenumberedAttribute

      public BCIRenumberedAttribute(CPUTF8 attributeName)
  • Method Details

    • 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(List<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.
    • toString

      public abstract String toString()
      Specified by:
      toString in class ClassFileEntry
    • writeBody

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