soot.jimple.toolkits.scalar
Class FastAvailableExpressionsAnalysis
java.lang.Object
soot.toolkits.scalar.AbstractFlowAnalysis
soot.toolkits.scalar.FlowAnalysis
soot.toolkits.scalar.ForwardFlowAnalysis
soot.jimple.toolkits.scalar.FastAvailableExpressionsAnalysis
- public class FastAvailableExpressionsAnalysis
- extends ForwardFlowAnalysis
Implements an available expressions analysis on local variables.
The current implementation is slow but correct.
A better implementation would use an implicit universe and
the kill rule would be computed on-the-fly for each statement.
Method Summary |
protected void |
copy(Object source,
Object dest)
Creates a copy of the source flow object in dest . |
protected Object |
entryInitialFlow()
Returns the initial flow value for entry/exit graph nodes. |
protected void |
flowThrough(Object inValue,
Object unit,
Object outValue)
Given the merge of the out sets, compute the in set for s (or in to out, depending on direction). |
protected void |
merge(Object in1,
Object in2,
Object out)
Compute the merge of the in1 and in2 sets, putting the result into out . |
protected Object |
newInitialFlow()
Returns the flow object corresponding to the initial values for
each graph node. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FastAvailableExpressionsAnalysis
public FastAvailableExpressionsAnalysis(DirectedGraph dg,
SootMethod m,
SideEffectTester st)
newInitialFlow
protected Object newInitialFlow()
- Description copied from class:
AbstractFlowAnalysis
- Returns the flow object corresponding to the initial values for
each graph node.
- Specified by:
newInitialFlow
in class AbstractFlowAnalysis
entryInitialFlow
protected Object entryInitialFlow()
- Description copied from class:
AbstractFlowAnalysis
- Returns the initial flow value for entry/exit graph nodes.
- Specified by:
entryInitialFlow
in class AbstractFlowAnalysis
flowThrough
protected void flowThrough(Object inValue,
Object unit,
Object outValue)
- Description copied from class:
FlowAnalysis
- Given the merge of the
out
sets, compute the in
set for s
(or in to out, depending on direction).
- Specified by:
flowThrough
in class FlowAnalysis
merge
protected void merge(Object in1,
Object in2,
Object out)
- Description copied from class:
AbstractFlowAnalysis
- Compute the merge of the
in1
and in2
sets, putting the result into out
.
The behavior of this function depends on the implementation ( it may be necessary to check whether
in1
and in2
are equal or aliased ).
Used by the doAnalysis method.
- Specified by:
merge
in class AbstractFlowAnalysis
copy
protected void copy(Object source,
Object dest)
- Description copied from class:
AbstractFlowAnalysis
- Creates a copy of the
source
flow object in dest
.
- Specified by:
copy
in class AbstractFlowAnalysis