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
- Alphabetic
- By Inheritance
- InterproceduralProgramCfg
- ProgramCfg
- FragmentCfg
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
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
- implicit class AfterCallNodeContainsAssigment extends AnyRef
- implicit class CallNodeContainsAssigment extends AnyRef
-
implicit
class
IpNodeInfoAfterCall extends AnyRef
An implicit class with convenience methods for CFG after call node operations that involve the whole-program CFG.
-
implicit
class
IpNodeInfoCall extends AnyRef
An implicit class with convenience methods for CFG call node operations that involve the whole-program CFG.
-
implicit
class
IpNodeInfoEntry extends AnyRef
An implicit class with convenience methods for CFG entry node operations that involve the whole-program CFG.
-
implicit
class
IpNodeInfoExit extends AnyRef
An implicit class with convenience methods for CFG exit node operations that involve the whole-program CFG.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- val callInfo: (AAssignStmt) ⇒ Set[AFunDeclaration]
-
var
calleeExits: Map[CfgAfterCallNode, Set[CfgFunExitNode]]
Map from tip.cfg.CfgAfterCallNode to the set of tip.cfg.CfgFunExitNode of the called functions.
-
var
callees: Map[CfgCallNode, Set[CfgFunEntryNode]]
Map from tip.cfg.CfgCallNode to the set of tip.cfg.CfgFunEntryNode of the called functions.
-
var
callerAfterCalls: Map[CfgFunExitNode, Set[CfgAfterCallNode]]
Map from tip.cfg.CfgFunExitNode to the set of tip.cfg.CfgAfterCallNodes of the calling functions.
-
var
callers: Map[CfgFunEntryNode, Set[CfgCallNode]]
Map from tip.cfg.CfgFunEntryNode to the set of tip.cfg.CfgCallNodes calling the function.
-
var
callsInFunction: Map[CfgFunEntryNode, Set[CfgCallNode]]
Map from tip.cfg.CfgFunEntryNode to the set of tip.cfg.CfgCallNodes in the function.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @IntrinsicCandidate()
-
var
enclosingFunctionEntry: Map[CfgNode, CfgFunEntryNode]
Map from tip.cfg.CfgNode to the enclosing function entry node.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
val
funEntries: Map[AFunDeclaration, CfgFunEntryNode]
- Definition Classes
- ProgramCfg
-
val
funExits: Map[AFunDeclaration, CfgFunExitNode]
- Definition Classes
- ProgramCfg
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
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
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
nodes: Set[CfgNode]
Returns the set of nodes in the CFG.
Returns the set of nodes in the CFG.
- Definition Classes
- FragmentCfg
-
def
nodesRec(n: CfgNode, visited: Set[CfgNode] = mutable.Set()): Set[CfgNode]
- Attributes
- protected
- Definition Classes
- FragmentCfg
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
val
prog: AProgram
- Definition Classes
- ProgramCfg
- val program: AProgram
-
def
programEntry: CfgFunEntryNode
The node corresponding to entry of the main function.
-
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
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
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
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
|(other: FragmentCfg): FragmentCfg
Returns the union of this CFG with
other
.Returns the union of this CFG with
other
.- Definition Classes
- FragmentCfg
-
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
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated