Class InducedCFG

All Implemented Interfaces:
ControlFlowGraph<SSAInstruction,InducedCFG.BasicBlock>, MinimalCFG<InducedCFG.BasicBlock>, Constants, EdgeManager<InducedCFG.BasicBlock>, Graph<InducedCFG.BasicBlock>, NodeManager<InducedCFG.BasicBlock>, NumberedEdgeManager<InducedCFG.BasicBlock>, NumberedGraph<InducedCFG.BasicBlock>, NumberedNodeManager<InducedCFG.BasicBlock>, Iterable<InducedCFG.BasicBlock>
Direct Known Subclasses:
AstInducedCFG

public class InducedCFG extends AbstractCFG<SSAInstruction,InducedCFG.BasicBlock>
A ControlFlowGraph computed from a set of SSAInstruction instructions.

This is a funny CFG ... we assume that there are always fallthru edges, even from throws and returns. It is extremely fragile and unsuited for flow-sensitive analysis. Someday this should be nuked.

  • Constructor Details

    • InducedCFG

      public InducedCFG(SSAInstruction[] instructions, IMethod method, Context context)
      TODO: we do not yet support induced CFGS with exception handlers.

      NOTE: SIDE EFFECT!!! ... nulls out phi instructions and pi instructions in the instruction array!

      Throws:
      IllegalArgumentException - if instructions is null
  • Method Details