final class PostDominatorTree extends AbstractDominatorTree
A representation of a post-dominator tree (see PostDominatorTree$#apply* for details regarding the properties).
For information regarding issues related to using post-dominator trees for computing control dependence information see "A New Foundation for Control Dependence and Slicing for Modern Program Structures" (2007, Journal Version appeared in TOPLAS)
- Source
- PostDominatorTree.scala
- Alphabetic
- By Inheritance
- PostDominatorTree
- AbstractDominatorTree
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
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
- val additionalExitNodes: IntTrieSet
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def dom(n: Int): Int
Returns the immediate dominator of the node with the given id.
Returns the immediate dominator of the node with the given id.
- n
The id of a valid node which is not the
startNode
.- returns
The id of the node which immediately dominates the given node.
- Definition Classes
- AbstractDominatorTree
- Note
The root node does not have a(n immediate) dominator; in case
n
is the root node anIllegalArgumentException
is thrown.
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def foreachDom[U](n: Int, reflexive: Boolean = false)(f: (Int) => U): Unit
Iterates over all dominator nodes of the given node and calls the given function f for each dominator node.
Iterates over all dominator nodes of the given node and calls the given function f for each dominator node. Iteration starts with the immediate dominator of the given node if reflexive is
false
and starts with the node itself if reflexive istrue
.- n
The id of a valid node.
- Definition Classes
- AbstractDominatorTree
- val foreachSuccessorOf: (Int) => ((Int) => Unit) => Unit
Executes the given function
f
for each successor instruction ofpc
.Executes the given function
f
for each successor instruction ofpc
.Defined w.r.t. the (implicitly) augmented CFG.
- Definition Classes
- PostDominatorTree → AbstractDominatorTree
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- val hasVirtualStartNode: Boolean
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def immediateDominators: ArraySeq[Int]
The array which stores the immediate dominator for each node.
The array which stores the immediate dominator for each node.
- Definition Classes
- AbstractDominatorTree
- def isAugmented: Boolean
true
if the graph has a virtual start node; always implicitlytrue
if we have additional exit nodes.true
if the graph has a virtual start node; always implicitlytrue
if we have additional exit nodes. I.e., only methods with a unique end node without artificial exit nodes are not augmented.- Definition Classes
- PostDominatorTree → AbstractDominatorTree
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def leaves(isIndexValid: (Int) => Boolean = _ => true): List[Int]
(Re-)computes the dominator tree's leaf nodes.
(Re-)computes the dominator tree's leaf nodes. Due to the way the graph is stored, this method has a complexity of O(2n). Hence, if the leaves are required more than once, storing/caching them should be considered.
- Definition Classes
- AbstractDominatorTree
- final def maxNode: Int
- Definition Classes
- AbstractDominatorTree
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- val startNode: Int
The unique start-node of the dominator tree.
The unique start-node of the dominator tree. If the graph is augmented, this maybe a virtual node.
- Definition Classes
- PostDominatorTree → AbstractDominatorTree
- final def strictlyDominates(n: Int, w: Int): Boolean
- n
a valid node of the graph.
- w
a valid node of the graph.
- returns
true
ifn
strictly dominatesw
.
- Definition Classes
- AbstractDominatorTree
- Annotations
- @tailrec()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toDot(isIndexValid: (Int) => Boolean = _ => true): String
Returns a Graphviz based visualization of this dominator tree.
Returns a Graphviz based visualization of this dominator tree.
- isIndexValid
A function that returns
true
if an element in the iDom array with a specific index is actually identifying a node. This is particularly useful/ required if theidom
array given at initialization time is a sparse array.
- Definition Classes
- AbstractDominatorTree
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated