Class OperandStack
- java.lang.Object
-
- org.apache.bcel.verifier.structurals.OperandStack
-
- All Implemented Interfaces:
java.lang.Cloneable
public class OperandStack extends java.lang.Object implements java.lang.Cloneable
This class implements a stack used for symbolic JVM stack simulation. [It's used an an operand stack substitute.] Elements of this stack areType
objects.
-
-
Constructor Summary
Constructors Constructor Description OperandStack(int maxStack)
Creates an empty stack with a maximum of maxStack slots.OperandStack(int maxStack, ObjectType obj)
Creates an otherwise empty stack with a maximum of maxStack slots and the ObjectType 'obj' at the top.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clears the stack.java.lang.Object
clone()
Returns a deep copy of this object; that means, the clone operates on a new stack.boolean
equals(java.lang.Object o)
Returns true if and only if this OperandStack equals another, meaning equal lengths and equal objects on the stacks.OperandStack
getClone()
Returns a (typed!) clone of this.int
hashCode()
void
initializeObject(UninitializedObjectType u)
Replaces all occurences of u in this OperandStack instance with an "initialized" ObjectType.boolean
isEmpty()
Returns true IFF this OperandStack is empty.int
maxStack()
Returns the number of stack slots this stack can hold.void
merge(OperandStack s)
Merges another stack state into this instance's stack state.Type
peek()
Returns the element on top of the stack.Type
peek(int i)
Returns the element that's i elements below the top element; that means, iff i==0 the top element is returned.Type
pop()
Returns the element on top of the stack.Type
pop(int i)
Pops i elements off the stack.void
push(Type type)
Pushes a Type object onto the stack.int
size()
Returns the size of this OperandStack; that means, how many Type objects there are.int
slotsUsed()
Returns the number of stack slots used.java.lang.String
toString()
Returns a String representation of this OperandStack instance.
-
-
-
Constructor Detail
-
OperandStack
public OperandStack(int maxStack)
Creates an empty stack with a maximum of maxStack slots.
-
OperandStack
public OperandStack(int maxStack, ObjectType obj)
Creates an otherwise empty stack with a maximum of maxStack slots and the ObjectType 'obj' at the top.
-
-
Method Detail
-
clone
public java.lang.Object clone()
Returns a deep copy of this object; that means, the clone operates on a new stack. However, the Type objects on the stack are shared.- Overrides:
clone
in classjava.lang.Object
-
clear
public void clear()
Clears the stack.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- a hash code value for the object.
-
equals
public boolean equals(java.lang.Object o)
Returns true if and only if this OperandStack equals another, meaning equal lengths and equal objects on the stacks.- Overrides:
equals
in classjava.lang.Object
-
getClone
public OperandStack getClone()
Returns a (typed!) clone of this.- See Also:
clone()
-
isEmpty
public boolean isEmpty()
Returns true IFF this OperandStack is empty.
-
maxStack
public int maxStack()
Returns the number of stack slots this stack can hold.
-
peek
public Type peek()
Returns the element on top of the stack. The element is not popped off the stack!
-
peek
public Type peek(int i)
Returns the element that's i elements below the top element; that means, iff i==0 the top element is returned. The element is not popped off the stack!
-
pop
public Type pop()
Returns the element on top of the stack. The element is popped off the stack.
-
pop
public Type pop(int i)
Pops i elements off the stack. ALWAYS RETURNS "null"!!!
-
push
public void push(Type type)
Pushes a Type object onto the stack.
-
size
public int size()
Returns the size of this OperandStack; that means, how many Type objects there are.
-
slotsUsed
public int slotsUsed()
Returns the number of stack slots used.- See Also:
maxStack()
-
toString
public java.lang.String toString()
Returns a String representation of this OperandStack instance.- Overrides:
toString
in classjava.lang.Object
-
merge
public void merge(OperandStack s)
Merges another stack state into this instance's stack state. See the Java Virtual Machine Specification, Second Edition, page 146: 4.9.2 for details.
-
initializeObject
public void initializeObject(UninitializedObjectType u)
Replaces all occurences of u in this OperandStack instance with an "initialized" ObjectType.
-
-