public class ReachingDefs extends StructuredAnalysis<Stmt>
DEBUG, DEBUG_IF, DEBUG_STATEMENTS, DEBUG_TRY, DEBUG_WHILE, MERGETYPE
Constructor and Description |
---|
ReachingDefs(java.lang.Object analyze) |
Modifier and Type | Method and Description |
---|---|
DavaFlowSet<Stmt> |
cloneFlowSet(DavaFlowSet<Stmt> flowSet)
Make a clone of the flowset The implementor should know when they want a
shallow or deep clone
|
DavaFlowSet<Stmt> |
emptyFlowSet() |
void |
gen(DavaFlowSet<Stmt> in,
DefinitionStmt s) |
java.util.List<DefinitionStmt> |
getReachingDefs(Local local,
java.lang.Object node) |
void |
kill(DavaFlowSet<Stmt> in,
Local redefined) |
DavaFlowSet<Stmt> |
newInitialFlow() |
DavaFlowSet<Stmt> |
processStatement(Stmt s,
DavaFlowSet<Stmt> inSet)
Specific stmts within AST Constructs are processed through this method.
|
DavaFlowSet<Stmt> |
processSwitchKey(Value key,
DavaFlowSet<Stmt> inSet)
Deal with the key in the switch construct
|
DavaFlowSet<Stmt> |
processSynchronizedLocal(Local local,
DavaFlowSet<Stmt> inSet)
To deal with the local used for synch blocks
|
DavaFlowSet<Stmt> |
processUnaryBinaryCondition(ASTUnaryBinaryCondition cond,
DavaFlowSet<Stmt> inSet)
To have maximum flexibility in analyzing conditions the analysis API
breaks down the aggregated conditions to simple unary or binary
conditions user defined code can then deal with each condition
separately.
|
void |
reachingDefsToString(java.lang.Object node) |
void |
setMergeType() |
debug, debug, getAfterSet, getBeforeSet, getLabel, handleBreak, handleContinue, isDifferent, merge, mergeExplicitAndImplicit, print, process, processAbruptStatements, processASTDoWhileNode, processASTForLoopNode, processASTIfElseNode, processASTIfNode, processASTLabeledBlockNode, processASTMethodNode, processASTNode, processASTStatementSequenceNode, processASTSwitchNode, processASTSynchronizedBlockNode, processASTTryNode, processASTUnconditionalLoopNode, processASTWhileNode, processCondition, processSingleSubBodyNode
public DavaFlowSet<Stmt> emptyFlowSet()
emptyFlowSet
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> newInitialFlow()
newInitialFlow
in class StructuredAnalysis<Stmt>
public void setMergeType()
setMergeType
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> cloneFlowSet(DavaFlowSet<Stmt> flowSet)
StructuredAnalysis
cloneFlowSet
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> processUnaryBinaryCondition(ASTUnaryBinaryCondition cond, DavaFlowSet<Stmt> inSet)
StructuredAnalysis
processUnaryBinaryCondition
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> processSynchronizedLocal(Local local, DavaFlowSet<Stmt> inSet)
StructuredAnalysis
processSynchronizedLocal
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> processSwitchKey(Value key, DavaFlowSet<Stmt> inSet)
StructuredAnalysis
processSwitchKey
in class StructuredAnalysis<Stmt>
public DavaFlowSet<Stmt> processStatement(Stmt s, DavaFlowSet<Stmt> inSet)
StructuredAnalysis
processStatement
in class StructuredAnalysis<Stmt>
public void gen(DavaFlowSet<Stmt> in, DefinitionStmt s)
public void kill(DavaFlowSet<Stmt> in, Local redefined)
public java.util.List<DefinitionStmt> getReachingDefs(Local local, java.lang.Object node)
public void reachingDefsToString(java.lang.Object node)