Class ValueNumber

java.lang.Object
edu.umd.cs.findbugs.ba.vna.ValueNumber
All Implemented Interfaces:
Comparable<ValueNumber>

public class ValueNumber extends Object implements Comparable<ValueNumber>

A "value number" is a value produced somewhere in a methods. We use value numbers as dataflow values in Frames. When two frame slots have the same value number, then the same value is in both of those slots.

Instances of ValueNumbers produced by the same ValueNumberFactory are unique, so reference equality may be used to determine whether or not two value numbers are the same. In general, ValueNumbers from different factories cannot be compared.

See Also:
  • Field Details

    • cache

    • valueNumbersCreated

      static int valueNumbersCreated
    • valueNumbersReused

      static int valueNumbersReused
    • number

      final int number
      The value number.
    • flags

      final int flags
      Flags representing meta information about the value. When value numbers are merged, their flags should be the flags common to both.
    • RETURN_VALUE

      public static final int RETURN_VALUE
      Flag specifying that this value was the return value of a called method.
      See Also:
    • ARRAY_VALUE

      public static final int ARRAY_VALUE
      See Also:
    • CONSTANT_CLASS_OBJECT

      public static final int CONSTANT_CLASS_OBJECT
      See Also:
    • PHI_NODE

      public static final int PHI_NODE
      See Also:
    • CONSTANT_VALUE

      public static final int CONSTANT_VALUE
      See Also:
  • Constructor Details

    • ValueNumber

      private ValueNumber(int number, int flags)
  • Method Details

    • mergeFlags

      public static int mergeFlags(int flags1, int flags2)
    • createValueNumber

      public static ValueNumber createValueNumber(int number, int flags)
    • createValueNumber

      public static ValueNumber createValueNumber(int number)
    • getNumber

      public int getNumber()
    • getFlags

      public int getFlags()
    • hasFlag

      public boolean hasFlag(int flag)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • compareTo

      public int compareTo(ValueNumber other)
      Specified by:
      compareTo in interface Comparable<ValueNumber>