Class StackManipulation.Size

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int maximalSize
      The maximal size of stack slots this stack manipulation ever requires.
      private int sizeImpact
      The impact of any size operation onto the operand stack.
    • Constructor Summary

      Constructors 
      Constructor Description
      Size​(int sizeImpact, int maximalSize)
      Creates an immutable descriptor of the size change that is implied by some stack manipulation.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private StackManipulation.Size aggregate​(int sizeChange, int interimMaximalSize)
      Aggregates a size change with this stack manipulation size.
      StackManipulation.Size aggregate​(StackManipulation.Size other)
      Concatenates this size representation with another size representation in order to represent the size change that is represented by both alterations of the operand stack size.
      int getMaximalSize()
      Returns the maximal interim size of the operand stack that is represented by this instance.
      int getSizeImpact()
      Returns the size change on the operand stack that is represented by this instance.
      • Methods inherited from class java.lang.Object

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

      • sizeImpact

        private final int sizeImpact
        The impact of any size operation onto the operand stack. This value can be negative if more values were consumed from the stack than added to it.
      • maximalSize

        private final int maximalSize
        The maximal size of stack slots this stack manipulation ever requires. If an operation for example pushes five values onto the stack and subsequently consumes three operations, this value should still be five to express that a stack operation requires at least five slots in order to be applicable.
    • Constructor Detail

      • Size

        public Size​(int sizeImpact,
                    int maximalSize)
        Creates an immutable descriptor of the size change that is implied by some stack manipulation.
        Parameters:
        sizeImpact - The change of the size of the operand stack that is implied by some stack manipulation.
        maximalSize - The maximal stack size that is required for executing this stack manipulation. Should never be negative number.
    • Method Detail

      • getSizeImpact

        public int getSizeImpact()
        Returns the size change on the operand stack that is represented by this instance.
        Returns:
        The size change on the operand stack that is represented by this instance.
      • getMaximalSize

        public int getMaximalSize()
        Returns the maximal interim size of the operand stack that is represented by this instance.
        Returns:
        The maximal interim size of the operand stack that is represented by this instance.
      • aggregate

        public StackManipulation.Size aggregate​(StackManipulation.Size other)
        Concatenates this size representation with another size representation in order to represent the size change that is represented by both alterations of the operand stack size.
        Parameters:
        other - The other size representation.
        Returns:
        A new size representation representing both stack size requirements.
      • aggregate

        private StackManipulation.Size aggregate​(int sizeChange,
                                                 int interimMaximalSize)
        Aggregates a size change with this stack manipulation size.
        Parameters:
        sizeChange - The change in size the other operation implies.
        interimMaximalSize - The interim maximal size of the operand stack that the other operation requires at least to function.
        Returns:
        The aggregated size.