static final class IndexPropagation.ArrayCell extends DF_AbstractCell
An ArrayCell represents a set of value number pairs, indicating that the elements indexed by these value numbers are available for a certain array type.
 For example, suppose p is an int[], with value number
 v(p).
 Then the value number pair <p,5> for heap variable I[ means
 that p[5] is available.
 
Note: this implementation does not scale, and is not terribly efficient.
| Modifier and Type | Field and Description | 
|---|---|
private static int | 
CAPACITY
a bound on the size of a lattice cell. 
 | 
private HeapVariable<?> | 
key
The heap variable this lattice cell tracks information for. 
 | 
private ValueNumberPair[] | 
numbers
a set of value number pairs comparising this lattice cell. 
 | 
private int | 
size
The number of value number pairs in this cell. 
 | 
private boolean | 
TOP
Does this lattice cell represent TOP? 
 | 
| Constructor and Description | 
|---|
ArrayCell(HeapVariable<?> key)
Create a lattice cell corresponding to a heap variable. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
(package private) void | 
add(int v1,
   int v2)
Add a value number pair to this cell. 
 | 
(package private) void | 
clear()
Clear all value numbers from this cell. 
 | 
(package private) boolean | 
contains(int v1,
        int v2)
Does this cell contain the value number pair v1, v2? 
 | 
(package private) ValueNumberPair[] | 
copyValueNumbers()
Return a deep copy of the value numbers in this cell 
 | 
(package private) HeapVariable<?> | 
getKey()  | 
(package private) boolean | 
isBOTTOM()
Does this cell represent the BOTTOM element in the dataflow lattice? 
 | 
(package private) boolean | 
isTOP()
Does this cell represent the TOP element in the dataflow lattice? 
 | 
(package private) void | 
remove(int v1,
      int v2)
Remove a value number pair from this cell. 
 | 
(package private) void | 
setBOTTOM()
Set the value of this cell to BOTTOM. 
 | 
static boolean | 
setsDiffer(ValueNumberPair[] set1,
          ValueNumberPair[] set2)
Do two sets of value number pairs differ? 
 | 
(package private) void | 
setTOP(boolean b)
Mark this cell as representing (or not) the TOP element in the
 dataflow lattice. 
 | 
String | 
toString()
Return a string representation of this cell 
 | 
private static final int CAPACITY
private ValueNumberPair[] numbers
private int size
private final HeapVariable<?> key
private boolean TOP
ArrayCell(HeapVariable<?> key)
key - the heap variable associated with this cell.HeapVariable<?> getKey()
boolean isTOP()
boolean isBOTTOM()
void setTOP(boolean b)
b - should this cell contain TOP?void setBOTTOM()
boolean contains(int v1, int v2)
v1 - first value numberv2 - second value numbervoid add(int v1, int v2)
v1 - first value numberv2 - second value numbervoid remove(int v1, int v2)
v1 - first value numberv2 - second value numbervoid clear()
ValueNumberPair[] copyValueNumbers()
public String toString()
toString in interface DF_LatticeCelltoString in class Objectpublic static boolean setsDiffer(ValueNumberPair[] set1, ValueNumberPair[] set2)
SIDE EFFECT: sorts the sets
set1 - first set to compareset2 - second set to compare