public class SimpleLocalDefs.FlowAssignment extends ForwardFlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet> implements LocalDefs
FlowAnalysis.FlowfilterUnitToAfterFlow, unitToAfterFlowfilterUnitToBeforeFlow, graph, unitToBeforeFlow| Constructor and Description |
|---|
FlowAssignment(DirectedGraph<Unit> graph,
Local[] locals,
List<Unit>[] unitList,
int units,
boolean omitSSA) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
copy(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet source,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet dest)
Creates a copy of the
source flow object in dest. |
protected void |
flowThrough(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in,
Unit unit,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet out)
Given the merge of the
out sets, compute the in set for s (or in to out,
depending on direction). |
List<Unit> |
getDefsOf(Local l)
Returns the definition sites for a Local merged over all points in a method.
|
List<Unit> |
getDefsOfAt(Local l,
Unit s)
Returns the definition sites for a Local at a certain point (Unit) in a method.
|
protected FlowAnalysis.Flow |
getFlow(Unit from,
Unit to)
You can specify which flow set you would like to use of node
from |
protected void |
merge(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in1,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in2,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet out)
Compute the merge of the
in1 and in2 sets, putting the result into out. |
protected void |
mergeInto(Unit succNode,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet inout,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in)
Merges in into inout, just before node succNode.
|
protected soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet |
newInitialFlow()
Returns the flow object corresponding to the initial values for each graph node.
|
protected boolean |
omissible(Unit u)
If a flow node can be omitted return
true, otherwise false. |
doAnalysis, isForwardcopyFreshToExisting, getFlowAfter, getFlowBeforeentryInitialFlow, merge, treatTrapHandlersAsEntriespublic FlowAssignment(DirectedGraph<Unit> graph, Local[] locals, List<Unit>[] unitList, int units, boolean omitSSA)
protected boolean omissible(Unit u)
FlowAnalysistrue, otherwise false. There is no guarantee a node will
be omitted. A omissible node does not influence the result of an analysis.
If you are unsure, don't overwrite this methodomissible in class FlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>u - the node to checkfalseprotected FlowAnalysis.Flow getFlow(Unit from, Unit to)
FlowAnalysisfromgetFlow in class FlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>protected void flowThrough(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in,
Unit unit,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet out)
FlowAnalysisout sets, compute the in set for s (or in to out,
depending on direction).
This function often causes confusion, because the same interface is used for both forward and backward flow analyses.
The first parameter is always the argument to the flow function (i.e. it is the "in" set in a forward analysis and the
"out" set in a backward analysis), and the third parameter is always the result of the flow function (i.e. it is the
"out" set in a forward analysis and the "in" set in a backward analysis).flowThrough in class FlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>in - the input flowunit - the current nodeout - the returned flowprotected void copy(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet source,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet dest)
AbstractFlowAnalysissource flow object in dest.copy in class AbstractFlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>protected soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet newInitialFlow()
AbstractFlowAnalysisnewInitialFlow in class AbstractFlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>protected void mergeInto(Unit succNode, soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet inout, soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in)
AbstractFlowAnalysismergeInto in class AbstractFlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>protected void merge(soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in1,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet in2,
soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet out)
AbstractFlowAnalysisin1 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.merge in class AbstractFlowAnalysis<Unit,soot.toolkits.scalar.SimpleLocalDefs.FlowAssignment.FlowBitSet>public List<Unit> getDefsOfAt(Local l, Unit s)
LocalDefsnull.getDefsOfAt in interface LocalDefsl - the Local in question.s - a unit that specifies the method context (location) to query for the definitions of the Local.Copyright © 2024 Soot OSS. All rights reserved.