edu.umd.cs.findbugs.ba
Class ValueNumberFrame

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.Frame<ValueNumber>
      extended by edu.umd.cs.findbugs.ba.ValueNumberFrame
All Implemented Interfaces:
Debug, ValueNumberAnalysisFeatures

public class ValueNumberFrame
extends Frame<ValueNumber>
implements ValueNumberAnalysisFeatures

A dataflow value representing a Java stack frame with value number information.

Author:
David Hovemeyer
See Also:
ValueNumber, ValueNumberAnalysis

Field Summary
private  java.util.Map<AvailableLoad,ValueNumber[]> availableLoadMap
           
private  java.util.ArrayList<ValueNumber> mergedValueList
           
 
Fields inherited from interface edu.umd.cs.findbugs.ba.ValueNumberAnalysisFeatures
REDUNDANT_LOAD_ELIMINATION, RLE_DEBUG
 
Fields inherited from interface edu.umd.cs.findbugs.ba.Debug
CHECK_ASSERTIONS, VERIFY_INTEGRITY
 
Constructor Summary
ValueNumberFrame(int numLocals, ValueNumberFactory factory)
           
 
Method Summary
 void addAvailableLoad(AvailableLoad availableLoad, ValueNumber[] value)
          Add an available load.
 void copyFrom(Frame<ValueNumber> other)
          Make this Frame exactly the same as the one given as a parameter.
 ValueNumber[] getAvailableLoad(AvailableLoad availableLoad)
          Look for an available load.
(package private)  ValueNumber getMergedValue(int slot)
           
 void killLoadsOfField(XField field)
          Kill all loads of given field.
(package private)  void mergeAvailableLoadSets(ValueNumberFrame other)
           
(package private)  void setMergedValue(int slot, ValueNumber value)
           
 java.lang.String toString()
          Convert to string.
private static java.lang.String valueToString(ValueNumber[] valueNumberList)
           
 
Methods inherited from class edu.umd.cs.findbugs.ba.Frame
clearStack, getInstance, getNumLocals, getNumSlots, getStackDepth, getStackValue, getTopStackWords, getTopValue, getValue, isBottom, isTop, isValid, popValue, pushValue, sameAs, setBottom, setTop, setValid, setValue, valueToString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

mergedValueList

private java.util.ArrayList<ValueNumber> mergedValueList

availableLoadMap

private java.util.Map<AvailableLoad,ValueNumber[]> availableLoadMap
Constructor Detail

ValueNumberFrame

public ValueNumberFrame(int numLocals,
                        ValueNumberFactory factory)
Method Detail

getAvailableLoad

public ValueNumber[] getAvailableLoad(AvailableLoad availableLoad)
Look for an available load.

Parameters:
availableLoad - the AvailableLoad (reference and field)
Returns:
the value(s) available, or null if no matching entry is found

addAvailableLoad

public void addAvailableLoad(AvailableLoad availableLoad,
                             ValueNumber[] value)
Add an available load.

Parameters:
availableLoad - the AvailableLoad (reference and field)
value - the value(s) loaded

killLoadsOfField

public void killLoadsOfField(XField field)
Kill all loads of given field.

Parameters:
field - the field

mergeAvailableLoadSets

void mergeAvailableLoadSets(ValueNumberFrame other)

getMergedValue

ValueNumber getMergedValue(int slot)

setMergedValue

void setMergedValue(int slot,
                    ValueNumber value)

copyFrom

public void copyFrom(Frame<ValueNumber> other)
Description copied from class: Frame
Make this Frame exactly the same as the one given as a parameter.

Overrides:
copyFrom in class Frame<ValueNumber>
Parameters:
other - the Frame to make this object the same as

toString

public java.lang.String toString()
Description copied from class: Frame
Convert to string.

Overrides:
toString in class Frame<ValueNumber>

valueToString

private static java.lang.String valueToString(ValueNumber[] valueNumberList)