soot.jimple.toolkits.scalar.pre
Class DownSafetyAnalysis
java.lang.Object
|
+--soot.toolkits.scalar.AbstractFlowAnalysis
|
+--soot.toolkits.scalar.FlowAnalysis
|
+--soot.toolkits.scalar.BackwardFlowAnalysis
|
+--soot.jimple.toolkits.scalar.pre.DownSafetyAnalysis
- public class DownSafetyAnalysis
- extends BackwardFlowAnalysis
Performs an DownSafe-analysis on the given graph.
An expression is downsafe, if the computation will occur on every path from
the current point down to the END.
Constructor Summary |
DownSafetyAnalysis(DirectedGraph dg)
this constructor should not be used, and will throw a runtime-exception! |
DownSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect)
this constructor automaticly performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
|
DownSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet set)
this constructor automaticly performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
as sets-operations are usually more efficient, if the original set comes
from the same source, this allows to share sets. |
Method Summary |
protected void |
copy(java.lang.Object source,
java.lang.Object dest)
Creates a copy of the source flow object in dest . |
protected java.lang.Object |
entryInitialFlow()
Returns the initial flow value for entry/exit graph nodes. |
protected void |
flowThrough(java.lang.Object inValue,
java.lang.Object unit,
java.lang.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(java.lang.Object in1,
java.lang.Object in2,
java.lang.Object out)
Compute the merge of the in1 and in2 sets, putting the result into out . |
protected java.lang.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 |
DownSafetyAnalysis
public DownSafetyAnalysis(DirectedGraph dg)
- this constructor should not be used, and will throw a runtime-exception!
DownSafetyAnalysis
public DownSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect)
- this constructor automaticly performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
- Parameters:
dg
- a CompleteUnitGraph.unitToGen
- the equivalentValue of each unit.sideEffect
- the SideEffectTester that performs kills.
DownSafetyAnalysis
public DownSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet set)
- this constructor automaticly performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
as sets-operations are usually more efficient, if the original set comes
from the same source, this allows to share sets.
- Parameters:
dg
- a CompleteUnitGraph.unitToGen
- the equivalentValue of each unit.sideEffect
- the SideEffectTester that performs kills.BoundedFlowSet
- the shared set.
newInitialFlow
protected java.lang.Object newInitialFlow()
- Description copied from class: AbstractFlowAnalysis
- Returns the flow object corresponding to the initial values for
each graph node.
- Overrides:
- newInitialFlow in class AbstractFlowAnalysis
entryInitialFlow
protected java.lang.Object entryInitialFlow()
- Description copied from class: AbstractFlowAnalysis
- Returns the initial flow value for entry/exit graph nodes.
- Overrides:
- entryInitialFlow in class AbstractFlowAnalysis
flowThrough
protected void flowThrough(java.lang.Object inValue,
java.lang.Object unit,
java.lang.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).
- Overrides:
- flowThrough in class FlowAnalysis
merge
protected void merge(java.lang.Object in1,
java.lang.Object in2,
java.lang.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.
- Overrides:
- merge in class AbstractFlowAnalysis
copy
protected void copy(java.lang.Object source,
java.lang.Object dest)
- Description copied from class: AbstractFlowAnalysis
- Creates a copy of the
source
flow object in dest
.
- Overrides:
- copy in class AbstractFlowAnalysis