public class TracedStack extends Stack
Stack
saves additional information with stack elements, to keep track of their
origins.
The stack stores a given producer Value along with each Value it stores. It then generalizes a given collected Value with the producer Value of each Value it loads. The producer Value and the initial collected Value can be set. The generalized collected Value can be retrieved, either taking into account dup/swap instructions as proper instructions or ignoring them.
actualMaxSize, currentSize, values
Constructor and Description |
---|
TracedStack(int maxSize)
Creates a new TracedStack with a given maximum size.
|
TracedStack(TracedStack tracedStack)
Creates a new TracedStack that is a copy of the given TracedStack.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Clears the stack.
|
void |
copy(TracedStack other) |
void |
dup_x1()
Duplicates the top Category 1 value, one Category 1 element down the stack.
|
void |
dup_x2()
Duplicates the top Category 1 value, two Category 1 elements (or one Category 2 element) down
the stack.
|
void |
dup()
Duplicates the top Category 1 value.
|
void |
dup2_x1()
Duplicates the top Category 2 value, one Category 1 element down the stack (or alternatively,
the equivalent Category 1 stack values).
|
void |
dup2_x2()
Duplicates the top Category 2 value, one Category 2 stack element down the stack (or
alternatively, the equivalent Category 1 stack values).
|
void |
dup2()
Duplicates the top Category 2 value (or alternatively, the equivalent Category 1 stack
elements).
|
boolean |
equals(java.lang.Object object) |
boolean |
generalize(TracedStack other) |
Value |
getBottomActualProducerValue(int index)
Gets the specified actual producer Value from the stack, ignoring dup/swap instructions,
without disturbing it.
|
Value |
getBottomProducerValue(int index)
Gets the specified producer Value from the stack, without disturbing it.
|
Value |
getTopActualProducerValue(int index)
Gets the specified actual producer Value from the stack, ignoring dup/swap instructions,
without disturbing it.
|
Value |
getTopProducerValue(int index)
Gets the specified producer Value from the stack, without disturbing it.
|
int |
hashCode() |
Value |
pop()
Pops the top Value from the stack.
|
void |
pop1()
Pops the top category 1 value from the stack.
|
void |
pop2()
Pops the top category 2 value from the stack (or alternatively, two Category 1 stack elements).
|
void |
push(Value value)
Pushes the given Value onto the stack.
|
void |
removeTop(int index)
Removes the specified Value from the stack.
|
void |
reset(int size)
Resets this Stack, so that it can be reused.
|
void |
setProducerValue(Value producerValue)
Sets the Value that will be stored along with all push and pop instructions.
|
void |
swap()
Swaps the top two Category 1 values.
|
java.lang.String |
toString() |
public TracedStack(int maxSize)
public TracedStack(TracedStack tracedStack)
public void setProducerValue(Value producerValue)
public Value getBottomProducerValue(int index)
index
- the index of the stack element, counting from the bottom of the stack.public Value getBottomActualProducerValue(int index)
index
- the index of the stack element, counting from the bottom of the stack.public Value getTopProducerValue(int index)
index
- the index of the stack element, counting from the top of the stack.public Value getTopActualProducerValue(int index)
index
- the index of the stack element, counting from the top of the stack.public void reset(int size)
Stack
public void copy(TracedStack other)
public boolean generalize(TracedStack other)
public void clear()
Stack
public void removeTop(int index)
Stack
public void push(Value value)
Stack
public void pop1()
Stack
public void pop2()
Stack
public void dup()
Stack
public void dup_x1()
Stack
public void dup_x2()
Stack
public void dup2()
Stack
public void dup2_x1()
Stack
public void dup2_x2()
Stack
public void swap()
Stack