Class UnconditionalValueDerefSet


  • public class UnconditionalValueDerefSet
    extends java.lang.Object
    A set of values unconditionally dereferenced in the future.
    Author:
    David Hovemeyer
    • Constructor Detail

      • UnconditionalValueDerefSet

        public UnconditionalValueDerefSet​(int numValueNumbersInMethod)
        Constructor.
        Parameters:
        numValueNumbersInMethod - number of distinct value numbers in method
    • Method Detail

      • isBottom

        public boolean isBottom()
        Is this the bottom value?
        Returns:
        true if this is the bottom value, false otherwise
      • setIsBottom

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

        public boolean isTop()
        Is this the top value?
        Returns:
        true if this is the top value, false otherwise
      • setIsTop

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

        public void makeSameAs​(UnconditionalValueDerefSet source)
        Make this dataflow fact the same as the given one.
        Parameters:
        source - another dataflow fact
      • 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
      • mergeWith

        public void mergeWith​(UnconditionalValueDerefSet fact,
                              @CheckForNull
                              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
      • addDeref

        public void addDeref​(ValueNumber vn,
                             Location location)
        Mark a value as being dereferenced at given Location.
        Parameters:
        vn - the value
        location - the Location
      • setDerefSet

        public void setDerefSet​(ValueNumber vn,
                                java.util.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
      • clearDerefSet

        public void clearDerefSet​(ValueNumber value)
        Clear the set of dereferences for given ValueNumber
        Parameters:
        value - the ValueNumber
      • getDerefLocationSet

        public java.util.Set<Location> getDerefLocationSet​(ValueNumber vn)
        Get the set of dereference Locations for given value number.
        Parameters:
        vn - the value number
        Returns:
        the set of dereference Locations
      • 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
      • getValueNumbersThatAreUnconditionallyDereferenced

        public java.util.Set<ValueNumber> getValueNumbersThatAreUnconditionallyDereferenced()
      • retainOnlyTheseValueNumbers

        public void retainOnlyTheseValueNumbers​(java.util.Collection<ValueNumber> valueNumbers)
      • getUnconditionalDerefLocationSet

        public java.util.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
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • cleanDerefSet

        public void cleanDerefSet​(@CheckForNull
                                  Location location,
                                  ValueNumberFrame vnaFrame)
        Parameters:
        location -
        vnaFrame -
      • setLastUpdateTimestamp

        public void setLastUpdateTimestamp​(int lastUpdateTimestamp)
        Parameters:
        lastUpdateTimestamp - The lastUpdateTimestamp to set.
      • getLastUpdateTimestamp

        public int getLastUpdateTimestamp()
        Returns:
        Returns the lastUpdateTimestamp.
      • isEmpty

        public boolean isEmpty()
        Returns:
        true if the set is empty