soot.jimple.toolkits.scalar.pre
Class NotIsolatedAnalysis
java.lang.Object
|
+--soot.toolkits.scalar.AbstractFlowAnalysis
|
+--soot.toolkits.scalar.FlowAnalysis
|
+--soot.toolkits.scalar.BackwardFlowAnalysis
|
+--soot.jimple.toolkits.scalar.pre.NotIsolatedAnalysis
- public class NotIsolatedAnalysis
- extends BackwardFlowAnalysis
Performs a Not-Isolated-analysis on the given graph, which is basicly the
same as an Isolated-analysis (we just return the complement, as it's easier
to calculate it).
A computation is isolated, if it can only be used at the current
computation-point. In other words: if the result of the computation will not
be used later on the computation is isolated.
The Latest-analysis helps us in finding isolated computations, as they
show us points, where a precedent computation can't be used anymore.
In completely other words: we search the interval "latest"-"computation". a
computation in this interval would not be isolated.
Constructor Summary |
NotIsolatedAnalysis(DirectedGraph dg)
this constructor should not be used, and will throw a runtime-exception! |
NotIsolatedAnalysis(DirectedGraph dg,
LatestComputation latest,
java.util.Map equivRhsMap)
automaticly performs the Isolation-analysis on the graph
dg using the Latest-computation latest .
the equivRhsMap is only here to avoid doing these things
again... |
NotIsolatedAnalysis(DirectedGraph dg,
LatestComputation latest,
java.util.Map equivRhsMap,
BoundedFlowSet set)
automaticly performs the Isolation-analysis on the graph
dg using the Latest-computation latest .
the equivRhsMap is only here to avoid doing these things
again...
the shared set allows more efficient set-operations, when this analysis is
joined with other analyses/computations. |
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 |
NotIsolatedAnalysis
public NotIsolatedAnalysis(DirectedGraph dg)
- this constructor should not be used, and will throw a runtime-exception!
NotIsolatedAnalysis
public NotIsolatedAnalysis(DirectedGraph dg,
LatestComputation latest,
java.util.Map equivRhsMap)
- automaticly performs the Isolation-analysis on the graph
dg
using the Latest-computation latest
.
the equivRhsMap
is only here to avoid doing these things
again...
- Parameters:
dg
- a CompleteUnitGraphlatest
- the latest-computation of the same graph.equivRhsMap
- the rhs of each unit (if assignment-stmt).
NotIsolatedAnalysis
public NotIsolatedAnalysis(DirectedGraph dg,
LatestComputation latest,
java.util.Map equivRhsMap,
BoundedFlowSet set)
- automaticly performs the Isolation-analysis on the graph
dg
using the Latest-computation latest
.
the equivRhsMap
is only here to avoid doing these things
again...
the shared set allows more efficient set-operations, when this analysis is
joined with other analyses/computations.
- Parameters:
dg
- a CompleteUnitGraphlatest
- the latest-computation of the same graph.equivRhsMap
- the rhs of each unit (if assignment-stmt).set
- 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