public abstract class ExtendedNode extends Object
type
):
NodeHolder
. An extended node of this type is just a wrapper for a
Node
(that cannot throw exceptions).
NodeWithExceptionsHolder
. A wrapper for a Node
which can throw exceptions. It contains a label for every possible exception type the node
might throw.
UnconditionalJump
. An unconditional jump to a label.
ConditionalJump
. A conditional jump with two
targets for both the 'then' and 'else' branch.
Modifier and Type | Class and Description |
---|---|
static class |
ExtendedNode.ExtendedNodeType
Extended node types (description see above).
|
Modifier and Type | Field and Description |
---|---|
protected BlockImpl |
block
The basic block this extended node belongs to (as determined in phase two).
|
protected boolean |
terminatesExecution
Does this node terminate the execution? (e.g., "System.exit()")
|
protected ExtendedNode.ExtendedNodeType |
type
Type of this node.
|
Modifier | Constructor and Description |
---|---|
protected |
ExtendedNode(ExtendedNode.ExtendedNodeType type)
Create a new ExtendedNode.
|
Modifier and Type | Method and Description |
---|---|
BlockImpl |
getBlock() |
Label |
getLabel()
Returns the label associated with this extended node (only applicable if type is
ExtendedNode.ExtendedNodeType.CONDITIONAL_JUMP or ExtendedNode.ExtendedNodeType.UNCONDITIONAL_JUMP ). |
Node |
getNode()
Returns the node contained in this extended node (only applicable if the type is
NODE
or EXCEPTION_NODE ). |
boolean |
getTerminatesExecution() |
ExtendedNode.ExtendedNodeType |
getType() |
void |
setBlock(BlockImpl b) |
void |
setTerminatesExecution(boolean terminatesExecution) |
String |
toString() |
abstract String |
toStringDebug()
Returns a verbose string representation of this, useful for debugging.
|
protected BlockImpl block
protected final ExtendedNode.ExtendedNodeType type
protected boolean terminatesExecution
protected ExtendedNode(ExtendedNode.ExtendedNodeType type)
type
- the type of this nodepublic ExtendedNode.ExtendedNodeType getType()
public boolean getTerminatesExecution()
public void setTerminatesExecution(boolean terminatesExecution)
public Node getNode()
NODE
or EXCEPTION_NODE
).NODE
or EXCEPTION_NODE
)public Label getLabel()
ExtendedNode.ExtendedNodeType.CONDITIONAL_JUMP
or ExtendedNode.ExtendedNodeType.UNCONDITIONAL_JUMP
).ExtendedNode.ExtendedNodeType.CONDITIONAL_JUMP
or ExtendedNode.ExtendedNodeType.UNCONDITIONAL_JUMP
)public BlockImpl getBlock()
public void setBlock(BlockImpl b)
public abstract String toStringDebug()