Class StackManipulation.Size
- java.lang.Object
-
- net.bytebuddy.implementation.bytecode.StackManipulation.Size
-
- Enclosing interface:
- StackManipulation
@Enhance public static class StackManipulation.Size extends java.lang.Object
A description of the size change that is imposed by someStackManipulation
.
-
-
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.
-
-
-
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.
-
-