|
SandMark version 3.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--sandmark.obfuscate.boolsplitter.dtree.TreeVisitor | +--sandmark.obfuscate.boolsplitter.dcfg.VerifyCFG
VerifyCFG visits the nodes in a control flow graph and verifies that certain properties of the graph are true. For instance, value numbers of expressions are not equal to -1, node connections are consistent, exception handlers are set up correctly, etc. Mostly used for debugging purposes.
Field Summary | |
(package private) Block |
block
|
(package private) FlowGraph |
cfg
|
(package private) boolean |
checkValueNumbers
|
(package private) java.util.Set |
nodes
|
(package private) Node |
parent
|
(package private) java.util.Set |
uses
|
Fields inherited from class sandmark.obfuscate.boolsplitter.dtree.TreeVisitor |
FORWARD, REVERSE |
Constructor Summary | |
VerifyCFG()
Constructor. |
|
VerifyCFG(boolean checkValueNumbers)
Constructor. |
Method Summary | |
void |
visitBlock(Block block)
First make sure that the Block indeed is in the CFG. |
void |
visitDefExpr(DefExpr expr)
Keep track of all the uses of the expression defined by the DefExpr. |
void |
visitExpr(Expr expr)
If desired, make sure that the value number of the Expr is not -1. |
void |
visitFlowGraph(FlowGraph cfg)
Visit the blocks and expression trees in a control flow graph. |
void |
visitGotoStmt(GotoStmt stmt)
Make sure that the target of goto is valid. |
void |
visitIfStmt(IfStmt stmt)
Make sure that the targets of the if statement are valid. |
void |
visitJsrStmt(JsrStmt stmt)
Make sure that all of the targets of the jsr are valid. |
void |
visitNode(Node node)
Make sure that the Node resides in the block that we expect it to and that it has the expected parent expression tree Node. |
void |
visitRetStmt(RetStmt stmt)
Make sure that all of targets of the ret are valid. |
void |
visitStoreExpr(StoreExpr node)
If desired, makes sure that the store expression's value number is not -1. |
void |
visitSwitchStmt(SwitchStmt stmt)
Make sure that that all of the targets of the switch are valid. |
void |
visitVarExpr(VarExpr expr)
Make sure that the VarExpr either defines a local variable, is defined by another expression, or is the child of a PhiStmt (therefore making the VarExpr a phi-variable). |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
Block block
Node parent
FlowGraph cfg
java.util.Set uses
java.util.Set nodes
boolean checkValueNumbers
Constructor Detail |
public VerifyCFG()
public VerifyCFG(boolean checkValueNumbers)
checkValueNumbers
- Are the value numbers of expressions checked?Method Detail |
public void visitFlowGraph(FlowGraph cfg)
visitFlowGraph
in class TreeVisitor
public void visitBlock(Block block)
visitBlock
in class TreeVisitor
public void visitRetStmt(RetStmt stmt)
visitRetStmt
in class TreeVisitor
public void visitJsrStmt(JsrStmt stmt)
visitJsrStmt
in class TreeVisitor
public void visitSwitchStmt(SwitchStmt stmt)
visitSwitchStmt
in class TreeVisitor
public void visitIfStmt(IfStmt stmt)
visitIfStmt
in class TreeVisitor
public void visitGotoStmt(GotoStmt stmt)
visitGotoStmt
in class TreeVisitor
public void visitStoreExpr(StoreExpr node)
visitStoreExpr
in class TreeVisitor
public void visitNode(Node node)
visitNode
in class TreeVisitor
public void visitExpr(Expr expr)
visitExpr
in class TreeVisitor
public void visitDefExpr(DefExpr expr)
visitDefExpr
in class TreeVisitor
public void visitVarExpr(VarExpr expr)
visitVarExpr
in class TreeVisitor
|
SandMark version 3.0 Wed Jan 29 10:30:05 MST 2003 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |