accrue.analysis.defuse

## Class DefUseAbsVal

- java.lang.Object
- - accrue.analysis.defuse.DefUseAbsVal

- All Implemented Interfaces:
    Ordered<DefUseAbsVal>, AbstractValue<DefUseAbsVal>, java.lang.Cloneable
  Direct Known Subclasses:
    NewAllocAbsVal

      public class DefUseAbsVal
      extends java.lang.Object
      implements AbstractValue<DefUseAbsVal>

  Track the uses and definitions of locations.
  Author:
    owen

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static DefUseAbsVal` | `EMPTY`
    `protected int` | `hashCode`
    `protected java.util.Set<EdgeIdentifier>` | `rd`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefUseAbsVal()`
    `DefUseAbsVal(java.util.Set<EdgeIdentifier> rd)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `DefUseAbsVal` | `addReachingDef(EdgeIdentifier d)`
    `boolean` | `equals(java.lang.Object obj)`
    `int` | `hashCode()`
    `boolean` | `isBottom()` An AbstractValue may indicate that it is the bottom element.
    `boolean` | `leq(DefUseAbsVal that)` Is the given object less than or equal to this one
    `java.util.Set<EdgeIdentifier>` | `reachingDefinitions()`
    `java.lang.String` | `toString()`
    `DefUseAbsVal` | `upperBound(DefUseAbsVal that)` Compute the upper bound of `this` and `o`
    `DefUseAbsVal` | `widen(DefUseAbsVal that)` Compute the widening operator on `this` and `o`.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### rd

          protected final java.util.Set<EdgeIdentifier> rd

    - #### hashCode

          protected final int hashCode

    - #### EMPTY

          public static final DefUseAbsVal EMPTY

  - ### Constructor Detail

    - #### DefUseAbsVal

          public DefUseAbsVal()

    - #### DefUseAbsVal

          public DefUseAbsVal(java.util.Set<EdgeIdentifier> rd)

  - ### Method Detail

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### addReachingDef

          public DefUseAbsVal addReachingDef(EdgeIdentifier d)

    - #### reachingDefinitions

          public java.util.Set<EdgeIdentifier> reachingDefinitions()

    - #### widen

          public DefUseAbsVal widen(DefUseAbsVal that)

      Description copied from interface: `Ordered`
      Compute the widening operator on `this` and `o`. A widening operator is an upper bound where all ascending chains eventually stabilize.
      Specified by:
        `widen` in interface `Ordered<DefUseAbsVal>`
      Parameters:
        `that` - object to widen with `this`
      Returns:
        Widened upper bound of `this` and `o`

    - #### leq

          public boolean leq(DefUseAbsVal that)

      Description copied from interface: `Ordered`
      Is the given object less than or equal to this one
      Specified by:
        `leq` in interface `Ordered<DefUseAbsVal>`
      Parameters:
        `that` - object to compare to `this`
      Returns:
        true if this is less than or equal to `o`

    - #### upperBound

          public DefUseAbsVal upperBound(DefUseAbsVal that)

      Description copied from interface: `Ordered`
      Compute the upper bound of `this` and `o`
      Specified by:
        `upperBound` in interface `Ordered<DefUseAbsVal>`
      Parameters:
        `that` - object to upper bound with this
      Returns:
        the upper bound of `this` with `o`

    - #### isBottom

          public boolean isBottom()

      Description copied from interface: `AbstractValue`
      An AbstractValue may indicate that it is the bottom element. Note that the analysis monotonically increases abstract values, i.e., the bottom value is typically the initial, and most precise value.
      Specified by:
        `isBottom` in interface `AbstractValue<DefUseAbsVal>`
      Returns:

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`