Package | Description |
---|---|
soot |
Base Soot classes, shared by different intermediate representations.
|
soot.shimple |
Public classes for the SSA Shimple intermediate representation.
|
soot.shimple.internal |
Shimple internal messy stuff.
|
soot.toolkits.graph |
Toolkit to produce and manipulate various types of control flow
graphs.
|
soot.toolkits.graph.pdg |
Modifier and Type | Field and Description |
---|---|
protected Map<Block,Integer> |
AbstractJasminClass.blockToLogicalStackHeight |
protected Map<Block,Integer> |
AbstractJasminClass.blockToLogicalStackHeight |
protected Map<Block,Integer> |
AbstractJasminClass.blockToStackHeight |
protected Map<Block,Integer> |
AbstractJasminClass.blockToStackHeight |
Modifier and Type | Field and Description |
---|---|
protected DominatorsFinder<Block> |
DefaultShimpleFactory.dFinder |
protected DominatorsFinder<Block> |
DefaultShimpleFactory.dFinder |
protected DominanceFrontier<Block> |
DefaultShimpleFactory.dFrontier |
protected DominanceFrontier<Block> |
DefaultShimpleFactory.dFrontier |
protected DominatorTree<Block> |
DefaultShimpleFactory.dTree |
protected DominatorTree<Block> |
DefaultShimpleFactory.dTree |
protected ReversibleGraph<Block> |
DefaultShimpleFactory.rbg |
protected ReversibleGraph<Block> |
DefaultShimpleFactory.rbg |
protected DominatorsFinder<Block> |
DefaultShimpleFactory.rdFinder |
protected DominatorsFinder<Block> |
DefaultShimpleFactory.rdFinder |
protected DominanceFrontier<Block> |
DefaultShimpleFactory.rdFrontier |
protected DominanceFrontier<Block> |
DefaultShimpleFactory.rdFrontier |
protected DominatorTree<Block> |
DefaultShimpleFactory.rdTree |
protected DominatorTree<Block> |
DefaultShimpleFactory.rdTree |
Modifier and Type | Method and Description |
---|---|
boolean |
PhiExpr.addArg(Value arg,
Block pred)
Add the given argument associated with the given CFG
predecessor.
|
boolean |
PhiExpr.addArg(Value arg,
Block pred)
Add the given argument associated with the given CFG
predecessor.
|
ValueUnitPair |
PhiExpr.getArgBox(Block pred)
Returns the argument pair corresponding to the given CFG
predecessor.
|
ValueUnitPair |
PhiExpr.getArgBox(Block pred)
Returns the argument pair corresponding to the given CFG
predecessor.
|
int |
PhiExpr.getArgIndex(Block pred)
Returns the index of the argument associated with the given
control flow predecessor.
|
int |
PhiExpr.getArgIndex(Block pred)
Returns the index of the argument associated with the given
control flow predecessor.
|
Value |
PhiExpr.getValue(Block pred)
Get the PhiExpr argument corresponding to the given control flow
predecessor, returns null if not available.
|
Value |
PhiExpr.getValue(Block pred)
Get the PhiExpr argument corresponding to the given control flow
predecessor, returns null if not available.
|
boolean |
PhiExpr.removeArg(Block pred)
Remove the argument corresponding to the given CFG predecessor.
|
boolean |
PhiExpr.removeArg(Block pred)
Remove the argument corresponding to the given CFG predecessor.
|
boolean |
PhiExpr.setArg(int index,
Value arg,
Block pred)
Modify the PhiExpr argument at the given index with the given
information.
|
boolean |
PhiExpr.setArg(int index,
Value arg,
Block pred)
Modify the PhiExpr argument at the given index with the given
information.
|
boolean |
PhiExpr.setPred(int index,
Block pred)
Update the CFG predecessor associated with the PhiExpr
argument at the given index.
|
boolean |
PhiExpr.setPred(int index,
Block pred)
Update the CFG predecessor associated with the PhiExpr
argument at the given index.
|
boolean |
PhiExpr.setValue(Block pred,
Value arg)
Locate the argument associated with the given CFG predecessor
and set the value.
|
boolean |
PhiExpr.setValue(Block pred,
Value arg)
Locate the argument associated with the given CFG predecessor
and set the value.
|
Modifier and Type | Method and Description |
---|---|
PhiExpr |
Shimple.newPhiExpr(Local leftLocal,
List<Block> preds)
Create a trivial PhiExpr, where preds are an ordered list of
the control predecessor Blocks of the Phi expression.
|
PhiExpr |
Shimple.newPhiExpr(Local leftLocal,
List<Block> preds)
Create a trivial PhiExpr, where preds are an ordered list of
the control predecessor Blocks of the Phi expression.
|
Modifier and Type | Field and Description |
---|---|
protected ReversibleGraph<Block> |
PiNodeManager.cfg |
protected ReversibleGraph<Block> |
PiNodeManager.cfg |
protected DominanceFrontier<Block> |
PhiNodeManager.df |
protected DominanceFrontier<Block> |
PiNodeManager.df |
protected DominanceFrontier<Block> |
PiNodeManager.df |
protected DominanceFrontier<Block> |
PhiNodeManager.df |
protected DominatorTree<Block> |
PhiNodeManager.dt |
protected DominatorTree<Block> |
PiNodeManager.dt |
protected DominatorTree<Block> |
ShimpleBodyBuilder.dt |
protected DominatorTree<Block> |
PiNodeManager.dt |
protected DominatorTree<Block> |
ShimpleBodyBuilder.dt |
protected DominatorTree<Block> |
PhiNodeManager.dt |
protected Map<Unit,Block> |
PhiNodeManager.unitToBlock |
protected Map<Unit,Block> |
PhiNodeManager.unitToBlock |
protected MultiMap<Local,Block> |
PhiNodeManager.varToBlocks |
protected MultiMap<Local,Block> |
PiNodeManager.varToBlocks |
protected MultiMap<Local,Block> |
PiNodeManager.varToBlocks |
protected MultiMap<Local,Block> |
PhiNodeManager.varToBlocks |
Modifier and Type | Method and Description |
---|---|
Map<Unit,Block> |
PhiNodeManager.getUnitToBlockMap(BlockGraph blocks)
Convenience function that maps units to blocks.
|
Map<Unit,Block> |
PhiNodeManager.getUnitToBlockMap(BlockGraph blocks)
Convenience function that maps units to blocks.
|
Modifier and Type | Method and Description |
---|---|
boolean |
SPhiExpr.addArg(Value arg,
Block pred) |
boolean |
SPhiExpr.addArg(Value arg,
Block pred) |
ValueUnitPair |
SPhiExpr.getArgBox(Block pred) |
ValueUnitPair |
SPhiExpr.getArgBox(Block pred) |
int |
SPhiExpr.getArgIndex(Block pred) |
int |
SPhiExpr.getArgIndex(Block pred) |
static List<ValueBox> |
PiNodeManager.getUseBoxesFromBlock(Block block) |
static List<ValueBox> |
PiNodeManager.getUseBoxesFromBlock(Block block) |
Value |
SPhiExpr.getValue(Block pred) |
Value |
SPhiExpr.getValue(Block pred) |
void |
PiNodeManager.insertPiNodes(Local local,
Block frontierBlock) |
void |
PiNodeManager.insertPiNodes(Local local,
Block frontierBlock) |
void |
PhiNodeManager.prependTrivialPhiNode(Local local,
Block frontierBlock)
Inserts a trivial Phi node with the appropriate number of
arguments.
|
void |
PhiNodeManager.prependTrivialPhiNode(Local local,
Block frontierBlock)
Inserts a trivial Phi node with the appropriate number of
arguments.
|
boolean |
SPhiExpr.removeArg(Block pred) |
boolean |
SPhiExpr.removeArg(Block pred) |
void |
ShimpleBodyBuilder.renameLocalsSearch(Block block)
Driven by renameLocals().
|
void |
ShimpleBodyBuilder.renameLocalsSearch(Block block)
Driven by renameLocals().
|
boolean |
SPhiExpr.setArg(int index,
Value arg,
Block pred) |
boolean |
SPhiExpr.setArg(int index,
Value arg,
Block pred) |
boolean |
SPhiExpr.setPred(int index,
Block pred) |
boolean |
SPhiExpr.setPred(int index,
Block pred) |
boolean |
SPhiExpr.setValue(Block pred,
Value arg) |
boolean |
SPhiExpr.setValue(Block pred,
Value arg) |
Constructor and Description |
---|
SPhiExpr(Local leftLocal,
List<Block> preds)
Create a trivial Phi expression for leftLocal.
|
SPhiExpr(Local leftLocal,
List<Block> preds)
Create a trivial Phi expression for leftLocal.
|
Modifier and Type | Field and Description |
---|---|
protected List<Block> |
BlockGraph.mBlocks |
protected List<Block> |
BlockGraph.mBlocks |
protected List<Block> |
BlockGraph.mHeads |
protected List<Block> |
BlockGraph.mHeads |
protected List<Block> |
BlockGraph.mTails |
protected List<Block> |
BlockGraph.mTails |
Modifier and Type | Method and Description |
---|---|
Block |
ExceptionalBlockGraph.ExceptionDest.getHandlerNode() |
Block |
ExceptionalBlockGraph.ExceptionDest.getHandlerNode() |
Modifier and Type | Method and Description |
---|---|
protected Map<Unit,Block> |
BlockGraph.buildBlocks(Set<Unit> leaders,
UnitGraph unitGraph)
A utility method that does most of the work of constructing basic blocks,
once the set of block leaders has been determined, and which designates
the heads and tails of the graph.
|
protected Map<Unit,Block> |
ExceptionalBlockGraph.buildBlocks(Set<Unit> leaders,
UnitGraph uncastUnitGraph)
A utility method that does most of the work of constructing basic blocks,
once the set of block leaders has been determined, and which designates
the heads and tails of the graph.
|
protected Map<Unit,Block> |
BlockGraph.buildBlocks(Set<Unit> leaders,
UnitGraph unitGraph)
A utility method that does most of the work of constructing basic blocks,
once the set of block leaders has been determined, and which designates
the heads and tails of the graph.
|
protected Map<Unit,Block> |
ExceptionalBlockGraph.buildBlocks(Set<Unit> leaders,
UnitGraph uncastUnitGraph)
A utility method that does most of the work of constructing basic blocks,
once the set of block leaders has been determined, and which designates
the heads and tails of the graph.
|
List<Block> |
BlockGraph.getBlocks()
Returns a list of the Blocks composing this graph.
|
List<Block> |
BlockGraph.getBlocks()
Returns a list of the Blocks composing this graph.
|
List<Block> |
ExceptionalBlockGraph.getExceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalSuccsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalSuccsOf(Block b) |
List<Block> |
BlockGraph.getHeads() |
List<Block> |
BlockGraph.getHeads() |
List<Block> |
Block.getPreds()
Returns the List of Block that are predecessors to this block,
|
List<Block> |
Block.getPreds()
Returns the List of Block that are predecessors to this block,
|
List<Block> |
BlockGraph.getPredsOf(Block b) |
List<Block> |
BlockGraph.getPredsOf(Block b) |
List<Block> |
Block.getSuccs()
Returns the List of Blocks that are successors to this block,
|
List<Block> |
Block.getSuccs()
Returns the List of Blocks that are successors to this block,
|
List<Block> |
BlockGraph.getSuccsOf(Block b) |
List<Block> |
BlockGraph.getSuccsOf(Block b) |
List<Block> |
BlockGraph.getTails() |
List<Block> |
BlockGraph.getTails() |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalSuccsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalSuccsOf(Block b) |
Iterator<Block> |
BlockGraph.iterator() |
Iterator<Block> |
BlockGraph.iterator() |
Modifier and Type | Method and Description |
---|---|
List<Block> |
ExceptionalBlockGraph.getExceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalSuccsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getExceptionalSuccsOf(Block b) |
Collection<ExceptionalBlockGraph.ExceptionDest> |
ExceptionalBlockGraph.getExceptionDests(Block b) |
Collection<ExceptionalBlockGraph.ExceptionDest> |
ExceptionalBlockGraph.getExceptionDests(Block b) |
List<Block> |
BlockGraph.getPredsOf(Block b) |
List<Block> |
BlockGraph.getPredsOf(Block b) |
List<Block> |
BlockGraph.getSuccsOf(Block b) |
List<Block> |
BlockGraph.getSuccsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalPredsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalSuccsOf(Block b) |
List<Block> |
ExceptionalBlockGraph.getUnexceptionalSuccsOf(Block b) |
Modifier and Type | Method and Description |
---|---|
void |
Block.setPreds(List<Block> preds)
Sets the list of Blocks that are predecessors of this block in it's enclosing
BlockGraph instance.
|
void |
Block.setPreds(List<Block> preds)
Sets the list of Blocks that are predecessors of this block in it's enclosing
BlockGraph instance.
|
void |
Block.setSuccs(List<Block> succs)
Sets the list of Blocks that are successors of this block in it's enclosing
BlockGraph instance.
|
void |
Block.setSuccs(List<Block> succs)
Sets the list of Blocks that are successors of this block in it's enclosing
BlockGraph instance.
|
Constructor and Description |
---|
ExceptionDest(Trap trap,
ThrowableSet throwables,
Block handler) |
ExceptionDest(Trap trap,
ThrowableSet throwables,
Block handler) |
Modifier and Type | Field and Description |
---|---|
protected Hashtable<Block,Region> |
RegionAnalysis.m_block2region |
protected Hashtable<Block,Region> |
RegionAnalysis.m_block2region |
Modifier and Type | Method and Description |
---|---|
Hashtable<Block,Region> |
RegionAnalysis.getBlock2RegionMap() |
Hashtable<Block,Region> |
RegionAnalysis.getBlock2RegionMap() |
List<Block> |
IRegion.getBlocks() |
List<Block> |
PDGRegion.getBlocks() |
List<Block> |
Region.getBlocks() |
List<Block> |
Region.getBlocks() |
List<Block> |
PDGRegion.getBlocks() |
List<Block> |
IRegion.getBlocks() |
DominatorTree<Block> |
RegionAnalysis.getDominatorTree() |
DominatorTree<Block> |
RegionAnalysis.getDominatorTree() |
DominatorTree<Block> |
RegionAnalysis.getPostDominatorTree() |
DominatorTree<Block> |
RegionAnalysis.getPostDominatorTree() |
Modifier and Type | Method and Description |
---|---|
void |
Region.add(Block b) |
void |
Region.add(Block b) |
void |
Region.add2Back(Block b) |
void |
Region.add2Back(Block b) |
void |
Region.remove(Block b) |
void |
Region.remove(Block b) |
Modifier and Type | Method and Description |
---|---|
static String |
RegionAnalysis.CFGtoString(DirectedGraph<Block> cfg,
boolean blockDetail) |
static String |
RegionAnalysis.CFGtoString(DirectedGraph<Block> cfg,
boolean blockDetail) |
Constructor and Description |
---|
Region(int id,
List<Block> blocks,
SootMethod m,
SootClass c,
UnitGraph ug) |
Region(int id,
List<Block> blocks,
SootMethod m,
SootClass c,
UnitGraph ug) |