class InterproceduralProgramCfg extends ProgramCfg

Interprocedural control-flow graph for a program, where function calls are represented using call/after-call nodes. Requires the program to be normalized using tip.ast.NormalizedCalls, i.e. all calls are of the form x = f(..).

Self Type
InterproceduralProgramCfg
Linear Supertypes
ProgramCfg, FragmentCfg, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. InterproceduralProgramCfg
  2. ProgramCfg
  3. FragmentCfg
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new InterproceduralProgramCfg(funEntries: Map[AFunDeclaration, CfgFunEntryNode], funExits: Map[AFunDeclaration, CfgFunExitNode], program: AProgram, callInfo: (AAssignStmt) ⇒ Set[AFunDeclaration])(implicit declData: DeclarationData)

    funEntries

    map from AST function declarations to corresponding CFG function entry nodes

    funExits

    map from AST function declarations to corresponding CFG function exit nodes

    program

    the AST of the program

    callInfo

    call graph

    declData

    the declaration data

Type Members

  1. implicit class AfterCallNodeContainsAssigment extends AnyRef
  2. implicit class CallNodeContainsAssigment extends AnyRef
  3. implicit class IpNodeInfoAfterCall extends AnyRef

    An implicit class with convenience methods for CFG after call node operations that involve the whole-program CFG.

  4. implicit class IpNodeInfoCall extends AnyRef

    An implicit class with convenience methods for CFG call node operations that involve the whole-program CFG.

  5. implicit class IpNodeInfoEntry extends AnyRef

    An implicit class with convenience methods for CFG entry node operations that involve the whole-program CFG.

  6. implicit class IpNodeInfoExit extends AnyRef

    An implicit class with convenience methods for CFG exit node operations that involve the whole-program CFG.

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. val callInfo: (AAssignStmt) ⇒ Set[AFunDeclaration]
  6. var calleeExits: Map[CfgAfterCallNode, Set[CfgFunExitNode]]

    Map from tip.cfg.CfgAfterCallNode to the set of tip.cfg.CfgFunExitNode of the called functions.

  7. var callees: Map[CfgCallNode, Set[CfgFunEntryNode]]

    Map from tip.cfg.CfgCallNode to the set of tip.cfg.CfgFunEntryNode of the called functions.

  8. var callerAfterCalls: Map[CfgFunExitNode, Set[CfgAfterCallNode]]

    Map from tip.cfg.CfgFunExitNode to the set of tip.cfg.CfgAfterCallNodes of the calling functions.

  9. var callers: Map[CfgFunEntryNode, Set[CfgCallNode]]

    Map from tip.cfg.CfgFunEntryNode to the set of tip.cfg.CfgCallNodes calling the function.

  10. var callsInFunction: Map[CfgFunEntryNode, Set[CfgCallNode]]

    Map from tip.cfg.CfgFunEntryNode to the set of tip.cfg.CfgCallNodes in the function.

  11. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  12. var enclosingFunctionEntry: Map[CfgNode, CfgFunEntryNode]

    Map from tip.cfg.CfgNode to the enclosing function entry node.

  13. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  15. val funEntries: Map[AFunDeclaration, CfgFunEntryNode]
    Definition Classes
    ProgramCfg
  16. val funExits: Map[AFunDeclaration, CfgFunExitNode]
    Definition Classes
    ProgramCfg
  17. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  18. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  19. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  20. def isUnit: Boolean

    Returns true if this is the unit CFG w.r.t.

    Returns true if this is the unit CFG w.r.t. to concatenation.

    Definition Classes
    FragmentCfg
  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. def nodes: Set[CfgNode]

    Returns the set of nodes in the CFG.

    Returns the set of nodes in the CFG.

    Definition Classes
    FragmentCfg
  23. def nodesRec(n: CfgNode, visited: Set[CfgNode] = mutable.Set()): Set[CfgNode]
    Attributes
    protected
    Definition Classes
    FragmentCfg
  24. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  25. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  26. val prog: AProgram
    Definition Classes
    ProgramCfg
  27. val program: AProgram
  28. def programEntry: CfgFunEntryNode

    The node corresponding to entry of the main function.

  29. lazy val rank: Map[CfgNode, Int]

    Returns a map associating each node with its rank.

    Returns a map associating each node with its rank. The rank is defined such that rank(x) < rank(y) iff y is visited after x in a depth-first visit of the control-flow graph

    Definition Classes
    FragmentCfg
  30. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  31. def toDot(labeler: (CfgNode) ⇒ String, idGen: (CfgNode) ⇒ String): String

    Returns a Graphviz dot representation of the CFG.

    Returns a Graphviz dot representation of the CFG. Each node is labeled using the given function labeler.

    Definition Classes
    FragmentCfg
  32. def toString(): String
    Definition Classes
    AnyRef → Any
  33. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  34. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  35. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. def |(other: FragmentCfg): FragmentCfg

    Returns the union of this CFG with other.

    Returns the union of this CFG with other.

    Definition Classes
    FragmentCfg
  37. def ~(after: FragmentCfg): FragmentCfg

    Returns the concatenation of this CFG with after.

    Returns the concatenation of this CFG with after.

    Definition Classes
    FragmentCfg

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from ProgramCfg

Inherited from FragmentCfg

Inherited from AnyRef

Inherited from Any

Ungrouped