SandMark version 2.0


sandmark.obfuscate.boolsplitter.dtree
Class Node

java.lang.Object
  |
  +--sandmark.obfuscate.boolsplitter.dtree.Node
Direct Known Subclasses:
Expr, Stmt, Tree

public abstract class Node
extends java.lang.Object

Node represents a node in an expression tree. Each Node has a value number and a key associated with it. The value number is used to eliminate statements and expressions that have the same value (PRE). Statements and expressions of the same value will be mapped to the same value number.

See Also:
Expr, Stmt, Tree

Field Summary
(package private)  int key
           
protected  Node parent
           
(package private)  int valueNumber
           
 
Constructor Summary
Node()
          Constructor.
 
Method Summary
 Block block()
          Returns the basic block in which this Node resides.
 void cleanup()
          Cleans up this node so that it is independent of the expression tree in which it resides.
abstract  void cleanupOnly()
          Clean up this Node only.
protected  Node copyInto(Node node)
          Copies the contents of one Node into another.
 boolean hasParent()
           
 int key()
          A Node's key represents an integer value that can be used by an algorithm to mark this node.
 Node parent()
           
 void replaceWith(Node node)
          Replaces this node with another and perform cleanup.
 void replaceWith(Node node, boolean cleanup)
          Replaces this Node with node in its (this's) tree.
 void setKey(int key)
           
 void setParent(Node parent)
          Sets the parent Node of this Node.
 void setValueNumber(int valueNumber)
          Sets this Node's value number.
 java.lang.String toString()
           
 int valueNumber()
          Returns this Node's value number.
abstract  void visit(TreeVisitor visitor)
           
 void visitChildren(TreeVisitor visitor)
           
abstract  void visitForceChildren(TreeVisitor visitor)
          Visit the children of this node.
 void visitOnly(TreeVisitor visitor)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parent

protected Node parent

key

int key

valueNumber

int valueNumber
Constructor Detail

Node

public Node()
Constructor.

Method Detail

valueNumber

public int valueNumber()
Returns this Node's value number.


setValueNumber

public void setValueNumber(int valueNumber)
Sets this Node's value number.


key

public int key()
A Node's key represents an integer value that can be used by an algorithm to mark this node. For instance, when dead code elimination is performed a Node is marked as DEAD or ALIVE.


setKey

public void setKey(int key)

visitForceChildren

public abstract void visitForceChildren(TreeVisitor visitor)
Visit the children of this node. Not all Nodes will have children to visit.


visit

public abstract void visit(TreeVisitor visitor)

visitChildren

public void visitChildren(TreeVisitor visitor)

visitOnly

public void visitOnly(TreeVisitor visitor)

block

public Block block()
Returns the basic block in which this Node resides.


setParent

public void setParent(Node parent)
Sets the parent Node of this Node.


hasParent

public boolean hasParent()

parent

public Node parent()

copyInto

protected Node copyInto(Node node)
Copies the contents of one Node into another.

Parameters:
node - A Node from which to copy.
Returns:
node containing the contents of this Node.

cleanupOnly

public abstract void cleanupOnly()
Clean up this Node only. Does not effect its children nodes.


cleanup

public void cleanup()
Cleans up this node so that it is independent of the expression tree in which it resides. This is usually performed before a Node is moved from one part of an expression tree to another.

Traverse the Tree starting at this Node. Remove the parent of each node and perform any Node-specific cleanup (see cleanupOnly). Sets various pointers to null so that they eventually may be garbage collected.


replaceWith

public void replaceWith(Node node)
Replaces this node with another and perform cleanup.


replaceWith

public void replaceWith(Node node,
                        boolean cleanup)
Replaces this Node with node in its (this's) tree.

Parameters:
node - The Node with which to replace.
cleanup - Do we perform cleanup on the tree?

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Returns:
A textual representation of this Node.

SandMark version 2.0

Mon Jun 17 12:30:47 MST 2002