abstract class AbstractDominatorTree extends AnyRef
Representation of a (post) dominator tree of, for example, a control flow graph.
To construct a (post)dominator tree use the companion objects' factory methods (apply
).
- Alphabetic
- By Inheritance
- AbstractDominatorTree
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new AbstractDominatorTree()
Abstract Value Members
- abstract 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.
- abstract def isAugmented: Boolean
If
true
the underlying cfg was augmented.If
true
the underlying cfg was augmented. To determine in which way the dominator tree is augmented, a pattern match should be used. E.g., the DominatorTree may an additional node which replaces the underlying CFG's root node. - abstract 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.
Concrete 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
- 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.
- 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.
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def immediateDominators: ArraySeq[Int]
The array which stores the immediate dominator for each node.
- 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.
- final def maxNode: Int
- 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()
- 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
.
- 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.
- 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