Class ExtendedNode

  • Direct Known Subclasses:
    ConditionalJump

    public abstract class ExtendedNode
    extends java.lang.Object
    An extended node can be one of several things (depending on its type):
    • NODE: NodeHolder. An extended node of this type is just a wrapper for a Node (that cannot throw exceptions).
    • EXCEPTION_NODE: NodeWithExceptionsHolder. A wrapper for a Node which can throw exceptions. It contains a label for every possible exception type the node might throw.
    • UNCONDITIONAL_JUMP: UnconditionalJump. An unconditional jump to a label.
    • TWO_TARGET_CONDITIONAL_JUMP: ConditionalJump. A conditional jump with two targets for both the 'then' and 'else' branch.
    Note that this class is deliberately public, to enable users of the dataflow library to customize CFG construction.
    • Field Detail

      • block

        protected BlockImpl block
        The basic block this extended node belongs to (as determined in phase two).
      • terminatesExecution

        protected boolean terminatesExecution
        Does this node terminate the execution? (e.g., "System.exit()")
    • Constructor Detail

      • ExtendedNode

        protected ExtendedNode​(ExtendedNode.ExtendedNodeType type)
        Create a new ExtendedNode.
        Parameters:
        type - the type of this node