FindBugs™ 1.3.9

edu.umd.cs.findbugs.ba.vna
Class ValueNumberFrame

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.Frame<ValueNumber>
      extended by edu.umd.cs.findbugs.ba.vna.ValueNumberFrame
All Implemented Interfaces:
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
 boolean phiNodeForLoads
           
 
Fields inherited from interface edu.umd.cs.findbugs.ba.vna.ValueNumberAnalysisFeatures
REDUNDANT_LOAD_ELIMINATION, RLE_DEBUG
 
Constructor Summary
ValueNumberFrame(int numLocals)
           
 
Method Summary
 void addAvailableLoad(AvailableLoad availableLoad, ValueNumber[] value)
          Add an available load.
 java.lang.String availableLoadMapAsString()
           
 void copyFrom(Frame<ValueNumber> other)
          Make this Frame exactly the same as the one given as a parameter.
 boolean fromMatchingFields(ValueNumber v1, ValueNumber v2)
           
 boolean fromMatchingLoads(ValueNumber v1, ValueNumber v2)
           
 boolean fuzzyMatch(ValueNumber v1, ValueNumber v2)
           
 ValueNumber[] getAvailableLoad(AvailableLoad availableLoad)
          Look for an available load.
 AvailableLoad getLoad(ValueNumber v)
           
 boolean haveMatchingFlags(ValueNumber v1, ValueNumber v2)
           
 void killAllLoads()
          Kill all loads.
 void killAllLoadsExceptFor(ValueNumber v)
           
 void killAllLoadsOf(ValueNumber v)
          Kill all loads.
 void killLoadsOf(java.util.Set<XField> fieldsToKill)
           
 void killLoadsOfField(XField field)
          Kill all loads of given field.
 void killLoadsWithSimilarName(java.lang.String className, java.lang.String methodName)
           
 java.lang.String toString()
          Convert to string.
 java.util.Collection<ValueNumber> valueNumbersForLoads()
           
 boolean veryFuzzyMatch(ValueNumber v1, ValueNumber v2)
           
 
Methods inherited from class edu.umd.cs.findbugs.ba.Frame
allSlots, clearStack, contains, getArgument, getArgument, getArgumentSet, getArgumentSlot, getInstance, getInstanceSlot, getInstanceStackLocation, getLastUpdateTimestamp, getNumArguments, getNumArgumentsIncludingObjectInstance, getNumLocals, getNumSlots, getOperand, getStackDepth, getStackLocation, getStackValue, getTopStackWords, getTopValue, getValue, isBottom, isTop, isValid, popValue, pushValue, sameAs, setBottom, setLastUpdateTimestamp, setTop, setValid, setValue, valueToString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

phiNodeForLoads

public boolean phiNodeForLoads
Constructor Detail

ValueNumberFrame

public ValueNumberFrame(int numLocals)
Method Detail

availableLoadMapAsString

public java.lang.String availableLoadMapAsString()

getLoad

@CheckForNull
public AvailableLoad getLoad(ValueNumber v)

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,
                             @NonNull
                             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

killAllLoads

public void killAllLoads()
Kill all loads. This conservatively handles method calls where we don't really know what fields might be assigned.


killAllLoadsExceptFor

public void killAllLoadsExceptFor(@CheckForNull
                                  ValueNumber v)

killAllLoadsOf

public void killAllLoadsOf(@CheckForNull
                           ValueNumber v)
Kill all loads. This conservatively handles method calls where we don't really know what fields might be assigned.


killLoadsOf

public void killLoadsOf(java.util.Set<XField> fieldsToKill)

killLoadsWithSimilarName

public void killLoadsWithSimilarName(java.lang.String className,
                                     java.lang.String methodName)

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>

fuzzyMatch

public boolean fuzzyMatch(ValueNumber v1,
                          ValueNumber v2)

veryFuzzyMatch

public boolean veryFuzzyMatch(ValueNumber v1,
                              ValueNumber v2)

fromMatchingLoads

public boolean fromMatchingLoads(ValueNumber v1,
                                 ValueNumber v2)

fromMatchingFields

public boolean fromMatchingFields(ValueNumber v1,
                                  ValueNumber v2)

haveMatchingFlags

public boolean haveMatchingFlags(ValueNumber v1,
                                 ValueNumber v2)
Parameters:
v1 -
v2 -
Returns:
true if v1 and v2 have a flag in common

valueNumbersForLoads

public java.util.Collection<ValueNumber> valueNumbersForLoads()

FindBugs™ 1.3.9

FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.