Package | Description |
---|---|
soot.dava.internal.asg | |
soot.jbco.jimpleTransformations | |
soot.jbco.util | |
soot.jimple.toolkits.annotation.purity | |
soot.jimple.toolkits.callgraph | |
soot.jimple.toolkits.ide.icfg | |
soot.jimple.toolkits.infoflow | |
soot.jimple.toolkits.pointer | |
soot.jimple.toolkits.scalar |
A toolkit for scalar optimization of Jimple.
|
soot.jimple.toolkits.scalar.pre |
Particial redundency elimination.
|
soot.jimple.toolkits.thread.mhp | |
soot.jimple.toolkits.thread.mhp.pegcallgraph | |
soot.jimple.toolkits.thread.synchronization | |
soot.toolkits.graph |
Toolkit to produce and manipulate various types of control flow
graphs.
|
soot.toolkits.graph.interaction | |
soot.toolkits.graph.pdg | |
soot.toolkits.scalar |
A number of scalar optimizations, and the flow analysis framework.
|
soot.util |
Generally useful utility classes for Soot.
|
soot.util.cfgcmd |
Modifier and Type | Class and Description |
---|---|
class |
AugmentedStmtGraph |
Constructor and Description |
---|
New2InitFlowAnalysis(DirectedGraph<Unit> graph) |
New2InitFlowAnalysis(DirectedGraph<Unit> graph) |
Modifier and Type | Class and Description |
---|---|
class |
SimpleExceptionalGraph |
Modifier and Type | Class and Description |
---|---|
class |
DirectedCallGraph
Builds a DirectedGraph from a CallGraph and SootMethodFilter.
|
Modifier and Type | Field and Description |
---|---|
protected DirectedGraph |
AbstractInterproceduralAnalysis.dg |
protected DirectedGraph |
AbstractInterproceduralAnalysis.dg |
Constructor and Description |
---|
ConstantArrayAnalysis(DirectedGraph<Unit> graph,
Body b) |
ConstantArrayAnalysis(DirectedGraph<Unit> graph,
Body b) |
Modifier and Type | Method and Description |
---|---|
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(Body body) |
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(Body body) |
DirectedGraph<N> |
BiDiInterproceduralCFG.getOrCreateUnitGraph(M body) |
DirectedGraph<N> |
BiDiInterproceduralCFG.getOrCreateUnitGraph(M body) |
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(SootMethod m) |
DirectedGraph<Unit> |
BackwardsInterproceduralCFG.getOrCreateUnitGraph(SootMethod m) |
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(SootMethod m) |
DirectedGraph<Unit> |
BackwardsInterproceduralCFG.getOrCreateUnitGraph(SootMethod m) |
protected DirectedGraph<Unit> |
AbstractJimpleBasedICFG.makeGraph(Body body) |
protected DirectedGraph<Unit> |
AbstractJimpleBasedICFG.makeGraph(Body body) |
Modifier and Type | Method and Description |
---|---|
static void |
InfoFlowAnalysis.printGraphToDotFile(String filename,
DirectedGraph<EquivalentValue> graph,
String graphname,
boolean onePage) |
static void |
InfoFlowAnalysis.printGraphToDotFile(String filename,
DirectedGraph<EquivalentValue> graph,
String graphname,
boolean onePage) |
static void |
InfoFlowAnalysis.printInfoFlowSummary(DirectedGraph<EquivalentValue> g) |
static void |
InfoFlowAnalysis.printInfoFlowSummary(DirectedGraph<EquivalentValue> g) |
Constructor and Description |
---|
LocalMustNotAliasAnalysis(DirectedGraph<Unit> directedGraph,
Body b) |
LocalMustNotAliasAnalysis(DirectedGraph<Unit> directedGraph,
Body b) |
Constructor and Description |
---|
FastAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
FastAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
PessimisticAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
PessimisticAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
SlowAvailableExpressionsAnalysis(DirectedGraph<Unit> dg) |
SlowAvailableExpressionsAnalysis(DirectedGraph<Unit> dg) |
Constructor and Description |
---|
DelayabilityAnalysis(DirectedGraph<Unit> dg)
this constructor should not be used, and will throw a runtime-exception!
|
DelayabilityAnalysis(DirectedGraph<Unit> dg)
this constructor should not be used, and will throw a runtime-exception!
|
DelayabilityAnalysis(DirectedGraph<Unit> dg,
EarliestnessComputation earliest,
Map<Unit,EquivalentValue> equivRhsMap)
Automatically performs the Delayability-analysis on the graph
dg and the Earliest-computation earliest .the equivRhsMap is only here to avoid doing these things
again... |
DelayabilityAnalysis(DirectedGraph<Unit> dg,
EarliestnessComputation earliest,
Map<Unit,EquivalentValue> equivRhsMap)
Automatically performs the Delayability-analysis on the graph
dg and the Earliest-computation earliest .the equivRhsMap is only here to avoid doing these things
again... |
DelayabilityAnalysis(DirectedGraph<Unit> dg,
EarliestnessComputation earliest,
Map<Unit,EquivalentValue> equivRhsMap,
BoundedFlowSet<EquivalentValue> set)
Automatically performs the Delayability-analysis on the graph
dg and the Earliest-computation earliest .the equivRhsMap is only here to avoid doing these things
again...as set-operations are usually more efficient, if the sets come from one source, sets should be shared around analyses, if the analyses are to be combined. |
DelayabilityAnalysis(DirectedGraph<Unit> dg,
EarliestnessComputation earliest,
Map<Unit,EquivalentValue> equivRhsMap,
BoundedFlowSet<EquivalentValue> set)
Automatically performs the Delayability-analysis on the graph
dg and the Earliest-computation earliest .the equivRhsMap is only here to avoid doing these things
again...as set-operations are usually more efficient, if the sets come from one source, sets should be shared around analyses, if the analyses are to be combined. |
DownSafetyAnalysis(DirectedGraph<Unit> dg)
This constructor should not be used, and will throw a runtime-exception!
|
DownSafetyAnalysis(DirectedGraph<Unit> dg)
This constructor should not be used, and will throw a runtime-exception!
|
DownSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect)
This constructor automatically performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore()) and FlowAfter (getFlowAfter()). |
DownSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect)
This constructor automatically performs the DownSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore()) and FlowAfter (getFlowAfter()). |
DownSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet<EquivalentValue> set)
This constructor automatically 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. |
DownSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet<EquivalentValue> set)
This constructor automatically 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. |
NotIsolatedAnalysis(DirectedGraph<Unit> dg,
LatestComputation latest,
Map<Unit,EquivalentValue> equivRhsMap)
Automatically 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<Unit> dg,
LatestComputation latest,
Map<Unit,EquivalentValue> equivRhsMap)
Automatically 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<Unit> dg,
LatestComputation latest,
Map<Unit,EquivalentValue> equivRhsMap,
BoundedFlowSet<EquivalentValue> set)
Automatically 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. |
NotIsolatedAnalysis(DirectedGraph<Unit> dg,
LatestComputation latest,
Map<Unit,EquivalentValue> equivRhsMap,
BoundedFlowSet<EquivalentValue> set)
Automatically 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. |
UpSafetyAnalysis(DirectedGraph<Unit> dg)
This constructor should not be used, and will throw a runtime-exception!
|
UpSafetyAnalysis(DirectedGraph<Unit> dg)
This constructor should not be used, and will throw a runtime-exception!
|
UpSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect)
This constructor automatically performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore()) and FlowAfter (getFlowAfter()). |
UpSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect)
This constructor automatically performs the UpSafety-analysis.
the result of the analysis is as usual in FlowBefore (getFlowBefore()) and FlowAfter (getFlowAfter()). |
UpSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet<EquivalentValue> set)
This constructor automatically 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. |
UpSafetyAnalysis(DirectedGraph<Unit> dg,
Map<Unit,EquivalentValue> unitToGen,
SideEffectTester sideEffect,
BoundedFlowSet<EquivalentValue> set)
This constructor automatically 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. |
Modifier and Type | Class and Description |
---|---|
class |
PegGraph
Oct.
|
Modifier and Type | Method and Description |
---|---|
static void |
PegCallGraphToDot.toDotFile(String methodname,
DirectedGraph graph,
String graphname)
Generates a dot format file for a DirectedGraph
|
static void |
PegCallGraphToDot.toDotFile(String methodname,
DirectedGraph graph,
String graphname)
Generates a dot format file for a DirectedGraph
|
Constructor and Description |
---|
PegCallGraphToDot(DirectedGraph graph,
boolean onepage,
String name) |
PegCallGraphToDot(DirectedGraph graph,
boolean onepage,
String name) |
SCC(Iterator it,
DirectedGraph g) |
SCC(Iterator it,
DirectedGraph g) |
Modifier and Type | Class and Description |
---|---|
class |
PegCallGraph |
Modifier and Type | Method and Description |
---|---|
DirectedGraph |
LockAllocator.getDeadlockGraph() |
DirectedGraph |
LockAllocator.getDeadlockGraph() |
Modifier and Type | Interface and Description |
---|---|
interface |
ExceptionalGraph<N>
Defines the interface for navigating a control flow graph which
distinguishes exceptional control flow.
|
interface |
MutableDirectedGraph<N>
Defines a DirectedGraph which is modifiable.
|
interface |
MutableEdgeLabelledDirectedGraph<N,L>
Defines a DirectedGraph which is modifiable and associates
a label object with every edge.
|
interface |
ReversibleGraph<N>
DirectedGraph which can be reversed and re-reversed.
|
Modifier and Type | Class and Description |
---|---|
class |
ArrayRefBlockGraph
|
class |
BlockGraph
Represents the control flow graph of a
Body at the basic block level. |
class |
BriefBlockGraph
|
class |
BriefUnitGraph
Represents a CFG where the nodes are Unit instances, and
where no edges are included to account for control flow
associated with exceptions.
|
class |
ClassicCompleteBlockGraph
Represents a CFG where the nodes are
Block s and the
edges are derived from control flow. |
class |
ClassicCompleteUnitGraph
Represents a CFG for a Body instance where the nodes are
Unit instances, and where edges are a conservative
indication of unexceptional and exceptional control
flow. |
class |
CompleteBlockGraph
|
class |
CompleteUnitGraph
|
class |
DominatorTreeAdapter<N>
This adapter provides a DirectedGraph interface to DominatorTree.
|
class |
ExceptionalBlockGraph
Represents a CFG where the nodes are
Block s and the
edges are derived from control flow. |
class |
ExceptionalUnitGraph
|
class |
HashMutableDirectedGraph<N>
HashMap based implementation of a MutableBlockGraph.
|
class |
HashMutableEdgeLabelledDirectedGraph<N,L> |
class |
HashReversibleGraph<N>
A reversible version of HashMutableDirectedGraph
|
class |
InverseGraph<N>
An inverted graph of a directed graph.
|
class |
MemoryEfficientGraph<N>
A memory efficient version of HashMutableDirectedGraph, in the sense
that throw-away objects passed as arguments will not be kept in the
process of adding edges.
|
class |
TrapUnitGraph
|
class |
UnitGraph
Represents a CFG where the nodes are
Unit instances and edges
represent unexceptional and (possibly) exceptional control flow between
Units. |
class |
ZonedBlockGraph
A CFG where the nodes are
Block instances, and where
exception boundaries are taken into account when finding the
Blocks for the provided Body. |
Modifier and Type | Field and Description |
---|---|
protected DirectedGraph<N> |
InverseGraph.g |
protected DirectedGraph<N> |
StronglyConnectedComponentsFast.g |
protected DirectedGraph<N> |
InverseGraph.g |
protected DirectedGraph<N> |
StronglyConnectedComponentsFast.g |
protected DirectedGraph<N> |
DominatorTree.graph |
protected DirectedGraph<N> |
MHGDominatorsFinder.graph |
protected DirectedGraph<N> |
SimpleDominatorsFinder.graph |
protected DirectedGraph<N> |
SimpleDominatorsFinder.graph |
protected DirectedGraph<N> |
DominatorTree.graph |
protected DirectedGraph<N> |
MHGDominatorsFinder.graph |
Modifier and Type | Method and Description |
---|---|
DirectedGraph<N> |
DominatorTree.getGraph() |
DirectedGraph<N> |
DominatorsFinder.getGraph()
Returns the graph to which the analysis pertains.
|
DirectedGraph<N> |
MHGDominatorsFinder.getGraph() |
DirectedGraph<N> |
SimpleDominatorsFinder.getGraph() |
DirectedGraph<N> |
SimpleDominatorsFinder.getGraph() |
DirectedGraph<N> |
DominatorsFinder.getGraph()
Returns the graph to which the analysis pertains.
|
DirectedGraph<N> |
DominatorTree.getGraph() |
DirectedGraph<N> |
MHGDominatorsFinder.getGraph() |
DirectedGraph |
StronglyConnectedComponents.getSuperGraph()
Deprecated.
|
DirectedGraph |
StronglyConnectedComponents.getSuperGraph()
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
protected List<N> |
PseudoTopologicalOrderer.computeOrder(DirectedGraph<N> g,
boolean reverse)
Orders in pseudo-topological order.
|
protected List<N> |
PseudoTopologicalOrderer.computeOrder(DirectedGraph<N> g,
boolean reverse)
Orders in pseudo-topological order.
|
List<N> |
PseudoTopologicalOrderer.newList(DirectedGraph<N> g)
Deprecated.
use
#newList(DirectedGraph, boolean)) instead |
List<N> |
SlowPseudoTopologicalOrderer.newList(DirectedGraph<N> g)
Deprecated.
use
#newList(DirectedGraph, boolean)) instead |
List<N> |
PseudoTopologicalOrderer.newList(DirectedGraph<N> g)
Deprecated.
use
#newList(DirectedGraph, boolean)) instead |
List<N> |
SlowPseudoTopologicalOrderer.newList(DirectedGraph<N> g)
Deprecated.
use
#newList(DirectedGraph, boolean)) instead |
List<N> |
Orderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
List<N> |
PseudoTopologicalOrderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
List<N> |
SlowPseudoTopologicalOrderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
List<N> |
PseudoTopologicalOrderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
List<N> |
Orderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
List<N> |
SlowPseudoTopologicalOrderer.newList(DirectedGraph<N> g,
boolean reverse)
Builds an order for a directed graph.
|
Constructor and Description |
---|
HashReversibleGraph(DirectedGraph<N> dg) |
HashReversibleGraph(DirectedGraph<N> dg) |
InverseGraph(DirectedGraph<N> g) |
InverseGraph(DirectedGraph<N> g) |
MHGDominatorsFinder(DirectedGraph<N> graph) |
MHGDominatorsFinder(DirectedGraph<N> graph) |
MHGPostDominatorsFinder(DirectedGraph<N> graph) |
MHGPostDominatorsFinder(DirectedGraph<N> graph) |
SimpleDominatorsFinder(DirectedGraph<N> graph)
Compute dominators for provided singled-headed directed graph.
|
SimpleDominatorsFinder(DirectedGraph<N> graph)
Compute dominators for provided singled-headed directed graph.
|
StronglyConnectedComponents(DirectedGraph g)
Deprecated.
|
StronglyConnectedComponents(DirectedGraph g)
Deprecated.
|
StronglyConnectedComponentsFast(DirectedGraph<N> g) |
StronglyConnectedComponentsFast(DirectedGraph<N> g) |
Modifier and Type | Method and Description |
---|---|
void |
InteractionHandler.handleCfgEvent(DirectedGraph<?> g) |
void |
InteractionHandler.handleCfgEvent(DirectedGraph<?> g) |
Modifier and Type | Interface and Description |
---|---|
interface |
ProgramDependenceGraph
This defines the interface to a Program Dependence Graph as defined in
Ferrante, J., Ottenstein, K.
|
Modifier and Type | Class and Description |
---|---|
class |
EnhancedBlockGraph |
class |
EnhancedUnitGraph
This class represents a control flow graph which behaves like an
ExceptionalUnitGraph and BriefUnitGraph when there are no exception handling
construct in the method; at the presence of such constructs, the CFG is
constructed from a brief graph by adding a concise representation of the
exceptional flow as well as START/STOP auxiliary nodes.
|
class |
HashMutablePDG
This class implements a Program Dependence Graph as defined in
Ferrante, J., Ottenstein, K.
|
Modifier and Type | Method and Description |
---|---|
static String |
RegionAnalysis.CFGtoString(DirectedGraph<Block> cfg,
boolean blockDetail) |
static String |
RegionAnalysis.CFGtoString(DirectedGraph<Block> cfg,
boolean blockDetail) |
Modifier and Type | Field and Description |
---|---|
protected DirectedGraph<N> |
AbstractFlowAnalysis.graph
The graph being analysed.
|
protected DirectedGraph<N> |
ForwardFlowAnalysisExtended.graph
The graph being analysed.
|
protected DirectedGraph<N> |
AbstractFlowAnalysis.graph
The graph being analysed.
|
protected DirectedGraph<N> |
ForwardFlowAnalysisExtended.graph
The graph being analysed.
|
Constructor and Description |
---|
AbstractFlowAnalysis(DirectedGraph<N> graph)
Constructs a flow analysis on the given
DirectedGraph . |
AbstractFlowAnalysis(DirectedGraph<N> graph)
Constructs a flow analysis on the given
DirectedGraph . |
BackwardFlowAnalysis(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
BackwardFlowAnalysis(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
BranchedFlowAnalysis(DirectedGraph<N> graph) |
BranchedFlowAnalysis(DirectedGraph<N> graph) |
FlowAnalysis(DirectedGraph<N> graph)
Constructs a flow analysis on the given
DirectedGraph . |
FlowAnalysis(DirectedGraph<N> graph)
Constructs a flow analysis on the given
DirectedGraph . |
ForwardFlowAnalysis(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
ForwardFlowAnalysis(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
ForwardFlowAnalysisExtended(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
ForwardFlowAnalysisExtended(DirectedGraph<N> graph)
Construct the analysis from a DirectedGraph representation of a Body.
|
Modifier and Type | Method and Description |
---|---|
void |
PhaseDumper.dumpGraph(DirectedGraph g,
Body b)
Asks the
PhaseDumper to dump the passed DirectedGraph if the current phase is being dumped. |
void |
PhaseDumper.dumpGraph(DirectedGraph g,
Body b)
Asks the
PhaseDumper to dump the passed DirectedGraph if the current phase is being dumped. |
Modifier and Type | Method and Description |
---|---|
abstract DirectedGraph |
CFGGraphType.buildGraph(Body b)
Method that will build a graph of this type.
|
abstract DirectedGraph |
CFGGraphType.buildGraph(Body b)
Method that will build a graph of this type.
|
Modifier and Type | Method and Description |
---|---|
<N> DotGraph |
CFGToDotGraph.drawCFG(DirectedGraph<N> graph,
Body body)
Create a
DotGraph whose nodes and edges depict
a control flow graph without distinguished
exceptional edges. |
<N> DotGraph |
CFGToDotGraph.drawCFG(DirectedGraph<N> graph,
Body body)
Create a
DotGraph whose nodes and edges depict
a control flow graph without distinguished
exceptional edges. |
abstract DotGraph |
CFGGraphType.drawGraph(CFGToDotGraph drawer,
DirectedGraph g,
Body b)
Method that will draw a
DotGraph representation of the
control flow in this type of graph. |
abstract DotGraph |
CFGGraphType.drawGraph(CFGToDotGraph drawer,
DirectedGraph g,
Body b)
Method that will draw a
DotGraph representation of the
control flow in this type of graph. |