Class AbstractAnalysis.Worklist

java.lang.Object
org.checkerframework.dataflow.analysis.AbstractAnalysis.Worklist
Enclosing class:
AbstractAnalysis<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>

protected static class AbstractAnalysis.Worklist extends Object
A worklist is a priority queue of blocks in which the order is given by depth-first ordering to place non-loop predecessors ahead of successors.
  • Field Details

  • Constructor Details

    • Worklist

      public Worklist(Analysis.Direction direction)
      Create a Worklist.
      Parameters:
      direction - the direction (forward or backward)
  • Method Details

    • process

      public void process(ControlFlowGraph cfg)
      Process the control flow graph, add the blocks to depthFirstOrder.
      Parameters:
      cfg - the control flow graph to process
    • isEmpty

      @Pure @EnsuresNonNullIf(result=false, expression="poll()") public boolean isEmpty()
      Returns:
      true if queue is empty else false
      See Also:
    • contains

      public boolean contains(Block block)
      Check if queue contains the block which is passed as the argument.
      Parameters:
      block - the given block to check
      Returns:
      true if queue contains the given block
    • add

      public void add(Block block)
      Add the given block to queue. Adds unconditionally: does not check containment first.
      Parameters:
      block - the block to add to queue
    • poll

      @Pure public @Nullable Block poll()
      Returns:
      the head of queue
      See Also:
    • toString

      public String toString()
      Overrides:
      toString in class Object