|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--soot.toolkits.scalar.AbstractFlowAnalysis
|
+--soot.toolkits.scalar.FlowAnalysis
|
+--envgen.analysis.stat.ForwardFlowAnalysis
|
+--envgen.analysis.stat.ReadWriteAnalysis
Implementation of interprocedural, flow-sensitive, parameterized side-effects analysis.
| Field Summary | |
(package private) PointsToAnalysis |
alias
Alias analysis results that are used by the side-effects analysis to resolve aliases. |
(package private) ReadWriteAnalysisMain |
analysis
Analysis field,whose method
analyzeSideEffects() gets recursively called for each of
the targets at a call site. |
(package private) AnalysisResults |
analysisResults
|
(package private) EnvCallGraph |
callGraph
Call graph that gets traversed in the top down order. |
(package private) int |
debug
|
(package private) soot.toolkits.scalar.FlowSet |
initSet
Initial data flow set, empty for this analysis. |
(package private) soot.SootMethod |
method
|
(package private) java.util.HashSet |
visited
Set that keeps track of visited methods, used to detect cycles in the call graph. |
| Fields inherited from class soot.toolkits.scalar.FlowAnalysis |
unitToAfterFlow |
| Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis |
graph, unitToBeforeFlow |
| Constructor Summary | |
(package private) |
ReadWriteAnalysis(soot.toolkits.graph.UnitGraph g,
soot.SootMethod method,
soot.toolkits.scalar.FlowSet initSet,
EnvCallGraph callGraph,
AnalysisResults analysisResults,
java.util.HashSet visited,
ReadWriteAnalysisMain analysis,
PointsToAnalysis aliases)
|
| Method Summary | |
protected void |
copy(java.lang.Object source,
java.lang.Object dest)
|
protected java.lang.Object |
entryInitialFlow()
|
protected void |
flowThrough(java.lang.Object inValue,
java.lang.Object unit,
java.lang.Object outValue)
Implementation of transfer functions. |
SymLoc |
getExtendedLoc(SymLocPath symLoc,
Accessor accessor)
Appends a modified accessor to temp. |
protected MultiSet |
getExtendedLocs(soot.Value base,
soot.Type baseType,
soot.Type modType,
Accessor accessor,
DataFlowSet aliasSet)
Extends locations pointed to by base with accessor. |
MultiSet |
getLocsOfArrayRef(soot.Value lhs,
DataFlowSet aliasSet)
|
MultiSet |
getLocsOfInstanceFieldRef(soot.Value lhs,
DataFlowSet aliasSet)
|
MultiSet |
getLocsOfStaticFieldRef(soot.Value lhs,
DataFlowSet aliasSet)
|
protected MultiSet |
getMappedSummaryOfCalledMethod(soot.jimple.Stmt unit,
DataFlowSet summary)
For each entry loc->{values} in the summary, builds a mapping mappedLoc -> {mapped values}, packs them into one set and returns. |
protected void |
merge(java.lang.Object in1,
java.lang.Object in2,
java.lang.Object out)
Merge operator. |
protected java.lang.Object |
newInitialFlow()
Initially data flow set is empty. |
void |
processAssignStmt(soot.jimple.Stmt unit,
soot.toolkits.scalar.FlowSet genSet,
soot.toolkits.scalar.FlowSet killSet,
DataFlowSet in)
|
protected void |
processCallSite(soot.jimple.Stmt unit,
soot.toolkits.scalar.FlowSet genSet,
soot.toolkits.scalar.FlowSet killSet,
DataFlowSet in)
|
| Methods inherited from class envgen.analysis.stat.ForwardFlowAnalysis |
doAnalysis, isForward |
| Methods inherited from class soot.toolkits.scalar.FlowAnalysis |
getFlowAfter |
| Methods inherited from class soot.toolkits.scalar.AbstractFlowAnalysis |
customizeInitialFlowGraph, getFlowBefore, treatTrapHandlersAsEntries |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
soot.toolkits.scalar.FlowSet initSet
PointsToAnalysis alias
EnvCallGraph callGraph
AnalysisResults analysisResults
java.util.HashSet visited
soot.SootMethod method
ReadWriteAnalysisMain analysis
Analysis field,whose method
analyzeSideEffects() gets recursively called for each of
the targets at a call site.
int debug
| Constructor Detail |
ReadWriteAnalysis(soot.toolkits.graph.UnitGraph g,
soot.SootMethod method,
soot.toolkits.scalar.FlowSet initSet,
EnvCallGraph callGraph,
AnalysisResults analysisResults,
java.util.HashSet visited,
ReadWriteAnalysisMain analysis,
PointsToAnalysis aliases)
| Method Detail |
protected java.lang.Object newInitialFlow()
newInitialFlow in class soot.toolkits.scalar.AbstractFlowAnalysisprotected java.lang.Object entryInitialFlow()
entryInitialFlow in class soot.toolkits.scalar.AbstractFlowAnalysis
protected void flowThrough(java.lang.Object inValue,
java.lang.Object unit,
java.lang.Object outValue)
flowThrough in class soot.toolkits.scalar.FlowAnalysis
protected void merge(java.lang.Object in1,
java.lang.Object in2,
java.lang.Object out)
merge in class soot.toolkits.scalar.AbstractFlowAnalysis
protected void copy(java.lang.Object source,
java.lang.Object dest)
copy in class soot.toolkits.scalar.AbstractFlowAnalysis
public void processAssignStmt(soot.jimple.Stmt unit,
soot.toolkits.scalar.FlowSet genSet,
soot.toolkits.scalar.FlowSet killSet,
DataFlowSet in)
public MultiSet getLocsOfInstanceFieldRef(soot.Value lhs,
DataFlowSet aliasSet)
public MultiSet getLocsOfArrayRef(soot.Value lhs,
DataFlowSet aliasSet)
public MultiSet getLocsOfStaticFieldRef(soot.Value lhs,
DataFlowSet aliasSet)
protected void processCallSite(soot.jimple.Stmt unit,
soot.toolkits.scalar.FlowSet genSet,
soot.toolkits.scalar.FlowSet killSet,
DataFlowSet in)
protected MultiSet getMappedSummaryOfCalledMethod(soot.jimple.Stmt unit,
DataFlowSet summary)
protected MultiSet getExtendedLocs(soot.Value base,
soot.Type baseType,
soot.Type modType,
Accessor accessor,
DataFlowSet aliasSet)
public SymLoc getExtendedLoc(SymLocPath symLoc,
Accessor accessor)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||