object CFGFactory
- Alphabetic
- By Inheritance
- CFGFactory
- 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
- def apply(implicit code: Code, classHierarchy: ClassHierarchy = ClassHierarchy.PreInitializedClassHierarchy): CFG[Instruction, Code]
Constructs the control flow graph for a given method.
Constructs the control flow graph for a given method.
The constructed CFG basically consists of the code's basic blocks. Additionally, two artifical exit nodes are added. One artificial exit node is added to facilitate the navigation to all normal return instructions. A second artificial node is added that enables the navigation to all instructions that led to an abnormal return. Exception handlers are directly added to the graph using CatchNodes. Each exception handler is associated with exactly one CatchNode and all instructions that may throw a corresponding exception will have the respective CatchNode as a successor.
- code
A method's body (i.e., the code.)
- classHierarchy
The class hierarchy that will be used to determine if a certain exception is potentially handled by an exception handler.
- Note
The algorithm supports all Java bytecode instructions - in particular JSR/RET.
,The code is parsed linearly and the graph is therefore constructed implicitly. Hence, it is possible that the graph contains nodes that cannot be reached from the start node.
- def apply(method: Method, classHierarchy: ClassHierarchy): Option[CFG[Instruction, Code]]
- 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 eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- 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
- 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 synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- 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