edu.umd.cs.findbugs.ba

Class LockSet

public final class LockSet extends Object

Lock counts for values (as produced by ValueNumberAnalysis). A LockSet tells us the lock counts for all values in a method, insofar as we can accurately determine them.

Author: David Hovemeyer

See Also: ValueNumberAnalysis

Field Summary
static intBOTTOM
An invalid lock count resulting from the meet of two different (inconsistent) lock counts.
static intTOP
An uninitialized lock value.
Constructor Summary
LockSet()
Constructor.
Method Summary
voidclear()
Clear all entries out of this LockSet.
booleancontainsReturnValue(ValueNumberFactory factory)
Determine whether or not this lock set contains any locked values which are method return values.
voidcopyFrom(LockSet other)
Make this LockSet the same as the given one.
intgetLockCount(int valueNumber)
Get the lock count for given lock object.
Collection<ValueNumber>getLockedValueNumbers(ValueNumberFrame frame)
intgetNumLockedObjects()
Get the number of distinct lock values with positive lock counts.
voidintersectWith(LockSet other)
Destructively intersect this lock set with another.
booleanisEmpty()
Return whether or not this lock set is empty, meaning that no locks have a positive lock count.
booleanisTop()
voidmeetWith(LockSet other)
Meet this LockSet with another LockSet, storing the result in this object.
booleansameAs(LockSet other)
Return whether or not this LockSet is the same as the one given.
voidsetDefaultLockCount(int defaultLockCount)
Set the default lock count to return for nonexistent lock entries.
voidsetLockCount(int valueNumber, int lockCount)
Set the lock count for a lock object.

Field Detail

BOTTOM

public static final int BOTTOM
An invalid lock count resulting from the meet of two different (inconsistent) lock counts.

TOP

public static final int TOP
An uninitialized lock value.

Constructor Detail

LockSet

public LockSet()
Constructor. Creates an empty lock set which returns TOP for nonexistent lock entries.

Method Detail

clear

public void clear()
Clear all entries out of this LockSet.

containsReturnValue

public boolean containsReturnValue(ValueNumberFactory factory)
Determine whether or not this lock set contains any locked values which are method return values.

Parameters: factory the ValueNumberFactory that produced the lock values

copyFrom

public void copyFrom(LockSet other)
Make this LockSet the same as the given one.

Parameters: other the LockSet to copy

getLockCount

public int getLockCount(int valueNumber)
Get the lock count for given lock object.

Parameters: valueNumber value number of the lock object

Returns: the lock count for the lock object

getLockedValueNumbers

public Collection<ValueNumber> getLockedValueNumbers(ValueNumberFrame frame)

Parameters: frame

Returns: a set of the locked value numbers

getNumLockedObjects

public int getNumLockedObjects()
Get the number of distinct lock values with positive lock counts.

intersectWith

public void intersectWith(LockSet other)
Destructively intersect this lock set with another. Note that this is not a dataflow merge: we are interested in finding out which locks are held in both sets, not in the exact lock counts.

Parameters: other the other LockSet

isEmpty

public boolean isEmpty()
Return whether or not this lock set is empty, meaning that no locks have a positive lock count.

Returns: true if no locks are held, false if at least one lock is held

isTop

public boolean isTop()

meetWith

public void meetWith(LockSet other)
Meet this LockSet with another LockSet, storing the result in this object.

Parameters: other the other LockSet

sameAs

public boolean sameAs(LockSet other)
Return whether or not this LockSet is the same as the one given.

Parameters: other the other LockSet

setDefaultLockCount

public void setDefaultLockCount(int defaultLockCount)
Set the default lock count to return for nonexistent lock entries.

Parameters: defaultLockCount the default lock count value

setLockCount

public void setLockCount(int valueNumber, int lockCount)
Set the lock count for a lock object.

Parameters: valueNumber value number of the lock object lockCount the lock count for the lock

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