FGArrow¶
-
public final class
FGArrow
¶ An arrow in the Flow Graph.
Fields¶
cases¶
-
public TapIntList
cases
¶
inACycle¶
-
public boolean
inACycle
¶ Boolean which is true for arrows that go to the header of a SYNTACTIC loop, i.e. a Do loop, back from syntactically INSIDE the loop, without going through the outside of the loop.
isAJumpIntoNextCase¶
-
public boolean
isAJumpIntoNextCase
¶ Boolean which is true when this arrow is a jump from a switch case to the next switch case.
iter¶
-
public TapList<TapPair<Integer, LoopBlock>>
iter
¶ The “iter” field represents the effect of this FGArrow with respect to loops, i.e. the list of loops that this arrow POPs from, followed by the loop it CYCLE’s in or by the list of loops it PUSH’es into. It contains a list of TapPair’s, whose first element is the action in {POP, PUSH, CYCLE}, and the second the loop.
Constructors¶
FGArrow¶
FGArrow¶
-
public
FGArrow
(Block origin, int test, TapIntList cases, Block destination)¶
FGArrow¶
-
public
FGArrow
(Block origin, int test, TapIntList cases, Block destination, boolean inCycle)¶
Methods¶
coherence¶
-
public void
coherence
()¶ Fills the field iter that summarizes the movement across nested loops structure. Also sets all the references to this FGArrow into the entryBlocks, exitBlocks, entryArrows, exitArrows, and cycleArrows of LoopBlocks.
commonSymbolTable¶
-
public SymbolTable
commonSymbolTable
()¶
delete¶
-
public void
delete
()¶ Deletes this FGArrow. Removes it from the flow from its origin and from the backFlow to its destination.
dump¶
-
public void
dump
()¶ Prints in detail the contents of this FGArrow, onto TapEnv.curOutputStream().
exitsFromLoopAndLoopSymbolTable¶
-
public boolean
exitsFromLoopAndLoopSymbolTable
()¶ - Returns
True when this FGArrow exits from a loop and this loop has a loop local SymbolTable
finalCycle¶
insertBlockAtDest¶
insertBlockAtOrig¶
isCyclingArrow¶
-
public boolean
isCyclingArrow
()¶ - Returns
true if this arrow goes back to the header of a loop, comes from inside this loop, and is not considered going “out-then-back-in” this loop.
mergeCases¶
redirectDestination¶
redirectDestination¶
redirectOrigin¶
testAndCasesToString¶
-
public static String
testAndCasesToString
(int test, TapIntList cases)¶