Class CFGUtil.BlockGroup

java.lang.Object
com.pnfsoftware.jeb.core.units.code.CFGUtil.BlockGroup
Enclosing class:
CFGUtil

public static class CFGUtil.BlockGroup extends Object
Given a start block A and an end block B, find the group of blocks G flowing from A to B, such that: 1) all blocks in G are reachable from A; 2) no blocks in G are reachable from B. Note that if A is reachable by B, G is the empty collection.

The list of exit blocks in G are those having B as an immediate successor. There may be none.

The list of entry blocks in G are those having an immediate predecessor not reachable by A. There may be none.

Important note: Irregular flows are disregarded.

  • Constructor Details

    • BlockGroup

      public BlockGroup(CFG<? extends IInstruction> cfg, long blkoffStart, long blkoffStopper)
  • Method Details

    • getBlocksInGroup

      public Set<Long> getBlocksInGroup()
      Retrieve the list of blocks in the group.
      Returns:
      may be empty
    • getExitPoints

      public Set<Long> getExitPoints()
      Retrieve the list of exit blocks in the group.
      Returns:
      may be empty
    • getEntryPoints

      public Set<Long> getEntryPoints()
      Retrieve the list of entry blocks in the group.
      Returns:
      may be empty
    • determine

      public Set<Long> determine()
      Determine the group.
      Returns:
      the list of blocks in the group