soot.jimple.toolkits.scalar.pre
Class UpSafetyAnalysis
java.lang.Object
|
+--soot.toolkits.scalar.AbstractFlowAnalysis
|
+--soot.toolkits.scalar.FlowAnalysis
|
+--soot.toolkits.scalar.ForwardFlowAnalysis
|
+--soot.jimple.toolkits.scalar.pre.UpSafetyAnalysis
- public class UpSafetyAnalysis
- extends ForwardFlowAnalysis
Performs an UpSafe-analysis on the given graph.
An expression is upsafe, if the computation already has been performed on
every path from START to the given program-point.
Constructor Summary |
UpSafetyAnalysis(DirectedGraph dg)
this constructor should not be used, and will throw a runtime-exception! |
UpSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect)
this constructor automaticly performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
|
UpSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet set)
this constructor automaticly performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
As usually flowset-operations are more efficient if shared, this allows to
share sets over several analyses. |
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 |
UpSafetyAnalysis
public UpSafetyAnalysis(DirectedGraph dg)
- this constructor should not be used, and will throw a runtime-exception!
UpSafetyAnalysis
public UpSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect)
- this constructor automaticly performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
- Parameters:
dg
- a CompleteUnitGraphunitToGen
- the EquivalentValue of each unit.sideEffect
- the SideEffectTester that will be used to perform kills.
UpSafetyAnalysis
public UpSafetyAnalysis(DirectedGraph dg,
java.util.Map unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet set)
- this constructor automaticly performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore())
and FlowAfter (getFlowAfter()).
As usually flowset-operations are more efficient if shared, this allows to
share sets over several analyses.
- Parameters:
dg
- a CompleteUnitGraphunitToGen
- the EquivalentValue of each unit.sideEffect
- the SideEffectTester that will be used to perform kills.set
- a bounded flow-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