edu.umd.cs.findbugs.ba.deref

Class UnconditionalValueDerefSet

public class UnconditionalValueDerefSet extends Object

A set of values unconditionally dereferenced in the future.

Author: David Hovemeyer

Constructor Summary
UnconditionalValueDerefSet(int numValueNumbersInMethod)
Constructor.
Method Summary
voidaddDeref(ValueNumber vn, Location location)
Mark a value as being dereferenced at given Location.
voidcleanDerefSet(Location location, ValueNumberFrame vnaFrame)
voidclearDerefSet(ValueNumber value)
Clear the set of dereferences for given ValueNumber
intgetLastUpdateTimestamp()
Set<Location>getUnconditionalDerefLocationSet(ValueNumber vn)
Get the set of Locations where given value is guaranteed to be dereferenced.
Set<ValueNumber>getValueNumbersThatAreUnconditionallyDereferenced()
booleanisBottom()
Is this the bottom value?
booleanisEmpty()
booleanisSameAs(UnconditionalValueDerefSet otherFact)
Return whether or not this dataflow fact is identical to the one given.
booleanisTop()
Is this the top value?
booleanisUnconditionallyDereferenced(ValueNumber vn)
Return whether or not the given value number is unconditionally dereferenced.
voidmakeSameAs(UnconditionalValueDerefSet source)
Make this dataflow fact the same as the given one.
voidmergeWith(UnconditionalValueDerefSet fact, ValueNumber skipMe, ValueNumberFactory valueNumberFactory)
Merge given dataflow fact into this one.
voidretainOnlyTheseValueNumbers(Collection<ValueNumber> valueNumbers)
voidsetDerefSet(ValueNumber vn, Set<Location> derefSet)
Set a value as being unconditionally dereferenced at the given set of locations.
voidsetIsBottom()
Make this dataflow fact the bottom value.
voidsetIsTop()
Make this dataflow fact the top value.
voidsetLastUpdateTimestamp(int lastUpdateTimestamp)
voidunionWith(UnconditionalValueDerefSet fact, ValueNumberFactory valueNumberFactory)

Constructor Detail

UnconditionalValueDerefSet

public UnconditionalValueDerefSet(int numValueNumbersInMethod)
Constructor.

Parameters: numValueNumbersInMethod number of distinct value numbers in method

Method Detail

addDeref

public void addDeref(ValueNumber vn, Location location)
Mark a value as being dereferenced at given Location.

Parameters: vn the value location the Location

cleanDerefSet

public void cleanDerefSet(Location location, ValueNumberFrame vnaFrame)

Parameters: location vnaFrame

clearDerefSet

public void clearDerefSet(ValueNumber value)
Clear the set of dereferences for given ValueNumber

Parameters: value the ValueNumber

getLastUpdateTimestamp

public int getLastUpdateTimestamp()

Returns: Returns the lastUpdateTimestamp.

getUnconditionalDerefLocationSet

public Set<Location> getUnconditionalDerefLocationSet(ValueNumber vn)
Get the set of Locations where given value is guaranteed to be dereferenced. (I.e., if non-implicit-exception control paths are followed, one of these locations will be reached).

Parameters: vn the value

Returns: set of Locations, one of which will definitely be reached if non-implicit-exception control paths are followed

getValueNumbersThatAreUnconditionallyDereferenced

public Set<ValueNumber> getValueNumbersThatAreUnconditionallyDereferenced()

isBottom

public boolean isBottom()
Is this the bottom value?

Returns: true if this is the bottom value, false otherwise

isEmpty

public boolean isEmpty()

Returns:

isSameAs

public boolean isSameAs(UnconditionalValueDerefSet otherFact)
Return whether or not this dataflow fact is identical to the one given.

Parameters: otherFact another dataflow fact

Returns: true if the other dataflow fact is identical to this one, false otherwise

isTop

public boolean isTop()
Is this the top value?

Returns: true if this is the top value, false otherwise

isUnconditionallyDereferenced

public boolean isUnconditionallyDereferenced(ValueNumber vn)
Return whether or not the given value number is unconditionally dereferenced.

Parameters: vn the value number

Returns: true if the value is unconditionally dereferenced, false otherwise

makeSameAs

public void makeSameAs(UnconditionalValueDerefSet source)
Make this dataflow fact the same as the given one.

Parameters: source another dataflow fact

mergeWith

public void mergeWith(UnconditionalValueDerefSet fact, ValueNumber skipMe, ValueNumberFactory valueNumberFactory)
Merge given dataflow fact into this one. We take the intersection of the unconditional deref value number set, and union the deref locations.

Parameters: fact another dataflow fact skipMe TODO

retainOnlyTheseValueNumbers

public void retainOnlyTheseValueNumbers(Collection<ValueNumber> valueNumbers)

setDerefSet

public void setDerefSet(ValueNumber vn, Set<Location> derefSet)
Set a value as being unconditionally dereferenced at the given set of locations.

Parameters: vn the value derefSet the Set of dereference Locations

setIsBottom

public void setIsBottom()
Make this dataflow fact the bottom value.

setIsTop

public void setIsTop()
Make this dataflow fact the top value.

setLastUpdateTimestamp

public void setLastUpdateTimestamp(int lastUpdateTimestamp)

Parameters: lastUpdateTimestamp The lastUpdateTimestamp to set.

unionWith

public void unionWith(UnconditionalValueDerefSet fact, ValueNumberFactory valueNumberFactory)
FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.