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>>
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassComparators to allow priority queue to order blocks by their depth-first order, using by backward analysis.classComparators to allow priority queue to order blocks by their depth-first order, using by forward analysis. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final IdentityHashMap<Block, Integer> Map all blocks in the CFG to their depth-first order.protected final PriorityQueue<Block> The backing priority queue.Contains the same elements asqueue, for faster lookup. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd the given block toqueue.booleanCheck ifqueuecontains the block which is passed as the argument.booleanisEmpty()poll()SeePriorityQueue.poll().voidprocess(ControlFlowGraph cfg) Process the control flow graph.toString()
-
Field Details
-
depthFirstOrder
Map all blocks in the CFG to their depth-first order. -
queue
The backing priority queue. -
queueSet
Contains the same elements asqueue, for faster lookup.
-
-
Constructor Details
-
Worklist
Create a Worklist.- Parameters:
direction- the direction (forward or backward)
-
-
Method Details
-
process
Process the control flow graph.This implementation sets the depth-first order for each block, by adding the blocks to
depthFirstOrder.- Parameters:
cfg- the control flow graph to process
-
isEmpty
- Returns:
- true if
queueis empty else false - See Also:
-
contains
Check ifqueuecontains the block which is passed as the argument.- Parameters:
block- the given block to check- Returns:
- true if
queuecontains the given block
-
add
Add the given block toqueue. Adds unconditionally: does not check containment first.- Parameters:
block- the block to add toqueue
-
poll
SeePriorityQueue.poll().- Returns:
- the head of
queue - See Also:
-
toString
-