| Package | Description |
|---|---|
| soot |
Base Soot classes, shared by different intermediate representations.
|
| soot.jimple |
Public classes for the Jimple intermediate representation.
|
| soot.jimple.internal |
Internal, messy, implementation-specific classes for the Jimple intermediate representation.
|
| soot.jimple.toolkits.annotation.nullcheck |
Classes that carry out an analysis to determine whether or not null pointer
checks are necessary.
|
| soot.jimple.toolkits.base |
A toolkit to optimize the Jimple IR.
|
| soot.jimple.toolkits.callgraph | |
| soot.jimple.toolkits.pointer | |
| soot.jimple.toolkits.scalar |
A toolkit for scalar optimization of Jimple.
|
| soot.jimple.toolkits.scalar.pre |
Particial redundency elimination.
|
| soot.toolkits.exceptions | |
| soot.toolkits.graph |
Toolkit to produce and manipulate various types of control flow
graphs.
|
| 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.
|
| Modifier and Type | Class and Description |
|---|---|
class |
PatchingChain<E extends Unit>
An implementation of a Chain which can contain only Units,
and handles patching to deal with element insertions and removals.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
IdentityUnit
A unit that assigns to a variable from one of {parameters, this, caughtexception}.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractUnit
Provides default implementations for the methods in Unit.
|
| Modifier and Type | Field and Description |
|---|---|
protected E |
PatchingChain.PatchingIterator.lastObject |
protected Unit |
AbstractUnitBox.unit |
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<Unit,java.lang.String> |
LabeledUnitPrinter.references
for unit references in Phi nodes
|
protected PatchingChain<Unit> |
Body.unitChain
The chain of units for this Body.
|
| Modifier and Type | Method and Description |
|---|---|
Unit |
Trap.getBeginUnit()
Returns the first trapped unit, unless this
Trap
does not trap any units at all. |
Unit |
AbstractTrap.getBeginUnit() |
Unit |
Trap.getEndUnit()
Returns the unit following the last trapped unit (that is, the
first succeeding untrapped unit in the underlying
Chain), unless this Trap does not trap
any units at all. |
Unit |
LocalVariable.getEndUnit() |
Unit |
AbstractTrap.getEndUnit() |
Unit |
Trap.getHandlerUnit()
Returns the unit handling the exception being trapped.
|
Unit |
AbstractTrap.getHandlerUnit() |
Unit |
LocalVariable.getStartUnit() |
Unit |
UnitBox.getUnit()
Returns the unit contained within this box.
|
Unit |
AbstractUnitBox.getUnit() |
| Modifier and Type | Method and Description |
|---|---|
PatchingChain<Unit> |
Body.getUnits()
Returns the Chain of Units that make up this body.
|
java.util.Map<Unit,java.lang.String> |
LabeledUnitPrinter.references() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
UnitBox.canContainUnit(Unit u)
Returns true if this box can contain the given Unit.
|
abstract boolean |
AbstractUnitBox.canContainUnit(Unit u) |
void |
UnitPrinter.endUnit(Unit u) |
void |
AttributesUnitPrinter.endUnit(Unit u) |
void |
AbstractUnitPrinter.endUnit(Unit u) |
static java.util.List |
TrapManager.getExceptionTypesOf(Unit u,
Body body)
Given a body and a unit handling an exception,
returns the list of exception types possibly caught
by the handler.
|
static java.util.List<Trap> |
TrapManager.getTrapsAt(Unit unit,
Body b)
Returns the list of traps caught at Unit u in Body b.
|
static boolean |
TrapManager.isExceptionCaughtAt(SootClass e,
Unit u,
Body b)
If exception e is caught at unit u in body b, return true;
otherwise, return false.
|
void |
Unit.redirectJumpsToThisTo(Unit newLocation)
Redirects jumps to this Unit to newLocation.
|
void |
AbstractUnit.redirectJumpsToThisTo(Unit newLocation) |
void |
Trap.setBeginUnit(Unit beginUnit)
Sets the value to be returned by
Trap.getBeginUnit() to
beginUnit. |
void |
AbstractTrap.setBeginUnit(Unit beginUnit) |
void |
Trap.setEndUnit(Unit endUnit)
Sets the value to be returned by
Trap.getEndUnit() to
endUnit. |
void |
AbstractTrap.setEndUnit(Unit endUnit) |
void |
Trap.setHandlerUnit(Unit handlerUnit)
Sets the unit handling the exception to
handlerUnit. |
void |
AbstractTrap.setHandlerUnit(Unit handlerUnit) |
void |
UnitBox.setUnit(Unit u)
Sets this box to contain the given unit.
|
void |
AbstractUnitBox.setUnit(Unit unit) |
static void |
TrapManager.splitTrapsAgainst(Body b,
Unit rangeStart,
Unit rangeEnd)
Splits all traps so that they do not cross the range rangeStart - rangeEnd.
|
void |
UnitPrinter.startUnit(Unit u) |
void |
BriefUnitPrinter.startUnit(Unit u) |
void |
AttributesUnitPrinter.startUnit(Unit u) |
void |
AbstractUnitPrinter.startUnit(Unit u) |
boolean |
SideEffectTester.unitCanReadFrom(Unit u,
Value v) |
boolean |
SideEffectTester.unitCanWriteTo(Unit u,
Value v) |
void |
UnitPrinter.unitRef(Unit u,
boolean branchTarget) |
void |
LabeledUnitPrinter.unitRef(Unit u,
boolean branchTarget) |
abstract void |
AbstractUnitPrinter.unitRef(Unit u,
boolean branchTarget) |
| Constructor and Description |
|---|
LocalVariable(java.lang.String name,
int index,
Unit startUnit,
Unit endUnit,
java.lang.String descriptor) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
AssignStmt |
interface |
BreakpointStmt |
interface |
DefinitionStmt |
interface |
EnterMonitorStmt |
interface |
ExitMonitorStmt |
interface |
GotoStmt |
interface |
IdentityStmt |
interface |
IfStmt |
interface |
InvokeStmt |
interface |
LookupSwitchStmt |
interface |
MonitorStmt |
interface |
NopStmt |
interface |
RetStmt |
interface |
ReturnStmt |
interface |
ReturnVoidStmt |
interface |
Stmt |
interface |
TableSwitchStmt |
interface |
ThrowStmt |
| Modifier and Type | Class and Description |
|---|---|
class |
PlaceholderStmt |
| Modifier and Type | Method and Description |
|---|---|
Unit |
TableSwitchStmt.getDefaultTarget() |
Unit |
LookupSwitchStmt.getDefaultTarget() |
Unit |
PlaceholderStmt.getSource() |
Unit |
GotoStmt.getTarget() |
Unit |
TableSwitchStmt.getTarget(int index) |
Unit |
LookupSwitchStmt.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
GotoStmt |
Jimple.newGotoStmt(Unit target)
Constructs a GotoStmt(Stmt) grammar chunk.
|
IfStmt |
Jimple.newIfStmt(Value condition,
Unit target)
Constructs a IfStmt(Condition, Stmt) grammar chunk.
|
LookupSwitchStmt |
Jimple.newLookupSwitchStmt(Value key,
java.util.List lookupValues,
java.util.List targets,
Unit defaultTarget)
Constructs a LookupSwitchStmt(Immediate, List of Immediate, List of Unit, Stmt) grammar chunk.
|
UnitBox |
Jimple.newStmtBox(Unit unit) |
TableSwitchStmt |
Jimple.newTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
java.util.List targets,
Unit defaultTarget)
Constructs a TableSwitchStmt(Immediate, int, int, List of Unit, Stmt) grammar chunk.
|
Trap |
Jimple.newTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt)
Constructs a new JTrap for the given exception on the given Stmt range with the given Stmt handler.
|
void |
TableSwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
LookupSwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
TableSwitchStmt.setTarget(int index,
Unit target) |
void |
LookupSwitchStmt.setTarget(int index,
Unit target) |
void |
IfStmt.setTarget(Unit target) |
void |
GotoStmt.setTarget(Unit target) |
void |
LookupSwitchStmt.setTargets(Unit[] targets) |
boolean |
NaiveSideEffectTester.unitCanReadFrom(Unit u,
Value v)
Returns true if the unit can read from v.
|
boolean |
NaiveSideEffectTester.unitCanWriteTo(Unit u,
Value v) |
| Modifier and Type | Method and Description |
|---|---|
void |
TableSwitchStmt.setTargets(java.util.List<Unit> targets) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractDefinitionStmt |
class |
AbstractStmt |
class |
JAssignStmt |
class |
JBreakpointStmt |
class |
JEnterMonitorStmt |
class |
JExitMonitorStmt |
class |
JGotoStmt |
class |
JIdentityStmt |
class |
JIfStmt |
class |
JInvokeStmt |
class |
JLookupSwitchStmt |
class |
JNopStmt |
class |
JRetStmt |
class |
JReturnStmt |
class |
JReturnVoidStmt |
class |
JTableSwitchStmt |
class |
JThrowStmt |
| Modifier and Type | Method and Description |
|---|---|
Unit |
JTableSwitchStmt.getDefaultTarget() |
Unit |
JLookupSwitchStmt.getDefaultTarget() |
Unit |
JGotoStmt.getTarget() |
Unit |
JTableSwitchStmt.getTarget(int index) |
Unit |
JLookupSwitchStmt.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
StmtBox.canContainUnit(Unit u) |
void |
JTableSwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
JLookupSwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
JTableSwitchStmt.setTarget(int index,
Unit target) |
void |
JLookupSwitchStmt.setTarget(int index,
Unit target) |
void |
JIfStmt.setTarget(Unit target) |
void |
JGotoStmt.setTarget(Unit target) |
void |
JLookupSwitchStmt.setTargets(Unit[] targets) |
| Modifier and Type | Method and Description |
|---|---|
void |
JTableSwitchStmt.setTargets(java.util.List<Unit> targets) |
| Constructor and Description |
|---|
JGotoStmt(Unit target) |
JIfStmt(Value condition,
Unit target) |
JLookupSwitchStmt(Value key,
java.util.List lookupValues,
java.util.List targets,
Unit defaultTarget)
Constructs a new JLookupSwitchStmt.
|
JTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
java.util.List targets,
Unit defaultTarget) |
JTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt) |
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<Unit,java.util.HashSet<Value>> |
BranchedRefVarsAnalysis.unitToAnalyzedChecksSet
Deprecated.
|
protected java.util.Map<Unit,java.util.HashSet<Value>> |
BranchedRefVarsAnalysis.unitToArrayRefChecksSet
Deprecated.
|
protected java.util.Map<Unit,FlowSet> |
BranchedRefVarsAnalysis.unitToGenerateSet
Deprecated.
|
protected java.util.Map<Unit,java.util.HashSet<Value>> |
BranchedRefVarsAnalysis.unitToInstanceFieldRefChecksSet
Deprecated.
|
protected java.util.Map<Unit,java.util.HashSet<Value>> |
BranchedRefVarsAnalysis.unitToInstanceInvokeExprChecksSet
Deprecated.
|
protected java.util.Map<Unit,java.util.HashSet<Value>> |
BranchedRefVarsAnalysis.unitToLengthExprChecksSet
Deprecated.
|
protected java.util.Map<Unit,FlowSet> |
BranchedRefVarsAnalysis.unitToPreserveSet
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
NullnessAnalysis.flowThrough(java.lang.Object flowin,
Unit u,
java.util.List fallOut,
java.util.List branchOuts)
Given the merge of the
in sets,
compute the fallOut and branchOuts
set for s. |
protected void |
BranchedRefVarsAnalysis.flowThrough(java.lang.Object inValue,
Unit stmt,
java.util.List outFallValue,
java.util.List outBranchValues)
Deprecated.
|
java.util.List |
LocalRefVarsAnalysisWrapper.getListsOfVarsAfterBranch(Unit s)
Deprecated.
|
java.util.List |
LocalRefVarsAnalysisWrapper.getVarsAfterFall(Unit s)
Deprecated.
|
java.util.List |
LocalRefVarsAnalysisWrapper.getVarsBefore(Unit s)
Deprecated.
|
java.util.List |
LocalRefVarsAnalysisWrapper.getVarsDontNeedCheck(Unit s)
Deprecated.
|
java.util.List |
LocalRefVarsAnalysisWrapper.getVarsNeedCheck(Unit s)
Deprecated.
|
boolean |
NullnessAnalysis.isAlwaysNonNullBefore(Unit s,
Immediate i)
Returns
true if the analysis could determine that i is always non-null
before the statement s. |
boolean |
NullnessAnalysis.isAlwaysNullBefore(Unit s,
Immediate i)
Returns
true if the analysis could determine that i is always null
before the statement s. |
boolean |
NullnessAssumptionAnalysis.isAssumedNonNullBefore(Unit s,
Immediate i)
Returns
true if the analysis could determine that i is always treated as non-null
after and including the statement s. |
boolean |
NullnessAssumptionAnalysis.isAssumedNullBefore(Unit s,
Immediate i)
Returns
true if the analysis could determine that i is always treated as null
after and including the statement s. |
| Modifier and Type | Method and Description |
|---|---|
Zone |
Zonation.getZoneOf(Unit u) |
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<Unit,Edge> |
CallGraph.srcUnitToEdge |
| Modifier and Type | Method and Description |
|---|---|
Unit |
Edge.srcUnit() |
Unit |
ContextSensitiveEdge.srcUnit()
The unit at which the call occurs; may be null for calls not
occurring at a specific statement (eg.
|
| Modifier and Type | Method and Description |
|---|---|
void |
OneCFAContextManager.addStaticEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind) |
void |
ObjSensContextManager.addStaticEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind) |
void |
ContextManager.addStaticEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind) |
void |
ContextInsensitiveContextManager.addStaticEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind) |
void |
OneCFAContextManager.addVirtualEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind,
Context typeContext) |
void |
ObjSensContextManager.addVirtualEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind,
Context typeContext) |
void |
ContextManager.addVirtualEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind,
Context typeContext) |
void |
ContextInsensitiveContextManager.addVirtualEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind,
Context typeContext) |
java.util.Iterator |
ContextSensitiveCallGraph.edgesOutOf(Context srcCtxt,
SootMethod src,
Unit srcUnit)
Returns all ContextSensitiveEdge's out of unit srcUnit in method src
in context srcCtxt.
|
java.util.Iterator |
SlowCallGraph.edgesOutOf(Unit u)
Returns an iterator over all edges that have u as their source unit.
|
java.util.Iterator<Edge> |
CallGraph.edgesOutOf(Unit u)
Returns an iterator over all edges that have u as their source unit.
|
Edge |
CallGraph.findEdge(Unit u,
SootMethod callee)
Find the specific call edge that is going out from the callsite u and the call target is callee.
|
java.util.Iterator<MethodOrMethodContext> |
TransitiveTargets.iterator(Unit u) |
| Constructor and Description |
|---|
Edge(MethodOrMethodContext src,
Unit srcUnit,
MethodOrMethodContext tgt,
Kind kind) |
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<Unit,java.util.Map<Value,java.lang.Integer>> |
LocalMustAliasAnalysis.mergePointToValueToNumber
maps from a merge point (a unit) and a value to the unique value number of that value at this point
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
LocalMustAliasAnalysis.flowThrough(java.util.HashMap<Value,java.lang.Object> in,
Unit u,
java.util.HashMap<Value,java.lang.Object> out) |
protected void |
CastCheckEliminator.flowThrough(java.lang.Object inValue,
Unit unit,
java.util.List outFallValues,
java.util.List outBranchValues)
This is the flow function as described in the assignment write-up.
|
protected void |
LocalMustAliasAnalysis.merge(Unit succUnit,
java.util.HashMap<Value,java.lang.Object> inMap1,
java.util.HashMap<Value,java.lang.Object> inMap2,
java.util.HashMap<Value,java.lang.Object> outMap) |
protected RWSet |
PASideEffectTester.readSet(Unit u) |
boolean |
PASideEffectTester.unitCanReadFrom(Unit u,
Value v)
Returns true if the unit can read from v.
|
boolean |
PASideEffectTester.unitCanWriteTo(Unit u,
Value v)
Returns true if the unit can read from v.
|
protected RWSet |
PASideEffectTester.writeSet(Unit u) |
| Modifier and Type | Method and Description |
|---|---|
Chain |
SlowAvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available after u.
|
Chain |
FastAvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
Chain |
AvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available after u.
|
Chain |
SlowAvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
Chain |
FastAvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
Chain |
AvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
java.util.List |
SlowAvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
java.util.List |
FastAvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the EquivalentValue corresponding to expressions available after u.
|
java.util.List |
AvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
java.util.List |
SlowAvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
java.util.List |
FastAvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
java.util.List |
AvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
| Modifier and Type | Method and Description |
|---|---|
static Value |
SootFilter.binopRhs(Unit unit)
only lets binary RHS through.
|
static Value |
SootFilter.noExceptionThrowingRhs(Unit unit)
filters out RHS that don't throw any exception.
|
static Value |
SootFilter.noInvokeRhs(Unit unit)
filters out RHS that aren't invokes.
|
static Value |
SootFilter.rhs(Unit unit)
filters out the RHS of an assignmentStmt.
|
| Modifier and Type | Method and Description |
|---|---|
ThrowableSet |
UnitThrowAnalysis.mightThrow(Unit u) |
ThrowableSet |
ThrowAnalysis.mightThrow(Unit u)
Returns a set representing the
Throwable types that
the specified unit might throw. |
ThrowableSet |
PedanticThrowAnalysis.mightThrow(Unit u)
Returns the set of all
Throwables as the set
of types that the specified unit might throw, regardless of the
unit's identity. |
abstract ThrowableSet |
AbstractThrowAnalysis.mightThrow(Unit u) |
protected boolean |
TrapTightener.mightThrowTo(ExceptionalUnitGraph g,
Unit u,
Trap t)
|
| Modifier and Type | Field and Description |
|---|---|
protected java.util.List<Unit> |
UnitGraph.heads |
protected Chain<Unit> |
BlockGraph.mUnits |
protected java.util.List<Unit> |
UnitGraph.tails |
protected Chain<Unit> |
UnitGraph.unitChain |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalSuccs |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalSuccs |
protected java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> |
ExceptionalUnitGraph.unitToExceptionDests |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.unitToPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.unitToPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.unitToSuccs |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.unitToSuccs |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalPreds |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalSuccs |
protected java.util.Map<Unit,java.util.List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalSuccs |
| Modifier and Type | Method and Description |
|---|---|
Unit |
ExceptionalUnitGraph.ExceptionDest.getHandlerNode() |
Unit |
Block.getHead()
Returns the first unit in this block.
|
Unit |
Block.getPredOf(Unit aItem)
Returns the Unit occuring immediatly before some other Unit in the block.
|
Unit |
Block.getSuccOf(Unit aItem)
Returns the Unit occuring immediatly after some other Unit in the block.
|
Unit |
Block.getTail()
Returns the last unit in this block.
|
| Modifier and Type | Method and Description |
|---|---|
protected java.util.Map<Unit,Block> |
ExceptionalBlockGraph.buildBlocks(java.util.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 java.util.Map<Unit,Block> |
BlockGraph.buildBlocks(java.util.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 java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> |
ExceptionalUnitGraph.buildExceptionDests(ThrowAnalysis throwAnalysis)
Utility method used in the construction of
UnitGraph
variants which include exceptional control flow. |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected java.util.Set<Unit> |
ZonedBlockGraph.computeLeaders(UnitGraph unitGraph)
|
protected java.util.Set<Unit> |
BlockGraph.computeLeaders(UnitGraph unitGraph)
|
protected java.util.Set<Unit> |
ArrayRefBlockGraph.computeLeaders(UnitGraph unitGraph)
|
java.util.List<Unit> |
ExceptionalUnitGraph.getExceptionalPredsOf(Unit u) |
java.util.List<Unit> |
ExceptionalUnitGraph.getExceptionalSuccsOf(Unit u) |
java.util.List<Unit> |
UnitGraph.getExtendedBasicBlockPathBetween(Unit from,
Unit to)
Look for a path in graph, from def to use.
|
java.util.List<Unit> |
UnitGraph.getHeads() |
java.util.List<Unit> |
UnitGraph.getPredsOf(Unit u) |
java.util.List<Unit> |
UnitGraph.getSuccsOf(Unit u) |
java.util.List<Unit> |
UnitGraph.getTails() |
java.util.List<Unit> |
ExceptionalUnitGraph.getUnexceptionalPredsOf(Unit u) |
java.util.List<Unit> |
ExceptionalUnitGraph.getUnexceptionalSuccsOf(Unit u) |
java.util.Iterator<Unit> |
UnitGraph.iterator() |
java.util.Iterator<Unit> |
Block.iterator()
Returns an iterator for the linear chain of Units that make up the block.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
UnitGraph.addEdge(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
java.util.List<Unit> |
ExceptionalUnitGraph.getExceptionalPredsOf(Unit u) |
java.util.List<Unit> |
ExceptionalUnitGraph.getExceptionalSuccsOf(Unit u) |
java.util.Collection<ExceptionalUnitGraph.ExceptionDest> |
ExceptionalUnitGraph.getExceptionDests(Unit u)
Returns a collection of
ExceptionDest
objects which represent how exceptions thrown by a specified
unit will be handled. |
java.util.List<Unit> |
UnitGraph.getExtendedBasicBlockPathBetween(Unit from,
Unit to)
Look for a path in graph, from def to use.
|
Unit |
Block.getPredOf(Unit aItem)
Returns the Unit occuring immediatly before some other Unit in the block.
|
java.util.List<Unit> |
UnitGraph.getPredsOf(Unit u) |
Unit |
Block.getSuccOf(Unit aItem)
Returns the Unit occuring immediatly after some other Unit in the block.
|
java.util.List<Unit> |
UnitGraph.getSuccsOf(Unit u) |
java.util.List<Unit> |
ExceptionalUnitGraph.getUnexceptionalPredsOf(Unit u) |
java.util.List<Unit> |
ExceptionalUnitGraph.getUnexceptionalSuccsOf(Unit u) |
void |
Block.insertAfter(Unit toInsert,
Unit point)
Inserts a Unit after some other Unit in the Block.
|
void |
Block.insertBefore(Unit toInsert,
Unit point)
Inserts a Unit before some other Unit in this block.
|
boolean |
Block.remove(Unit item)
Removes a Unit occuring before some other Unit in the Block.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
UnitGraph.addEdge(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected java.util.Map<Unit,Block> |
ExceptionalBlockGraph.buildBlocks(java.util.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 java.util.Map<Unit,Block> |
BlockGraph.buildBlocks(java.util.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 java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected java.util.Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
java.util.Map<Unit,java.util.Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional
control flow.
|
protected void |
UnitGraph.buildUnexceptionalEdges(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(java.util.Map<Unit,java.util.List<Unit>> unitToSuccs,
java.util.Map<Unit,java.util.List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected java.util.Map<Unit,java.util.List<Unit>> |
UnitGraph.combineMapValues(java.util.Map<Unit,java.util.List<Unit>> mapA,
java.util.Map<Unit,java.util.List<Unit>> mapB)
Utility method that produces a new map from the
Units
of this graph's body to the union of the values stored in the
two argument Maps, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
protected static void |
UnitGraph.makeMappedListsUnmodifiable(java.util.Map<?,java.util.List<Unit>> map)
Utility method that replaces the values of a
Map,
which must be instances of List, with unmodifiable
equivalents. |
| Constructor and Description |
|---|
Block(Unit aHead,
Unit aTail,
Body aBody,
int aIndexInMethod,
int aBlockLength,
BlockGraph aBlockGraph)
Constructs a Block in the context of a BlockGraph, and enclosing Body instances.
|
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Hashtable<Unit,Unit> |
EnhancedUnitGraph.handler2header |
protected java.util.Hashtable<Unit,Unit> |
EnhancedUnitGraph.handler2header |
protected java.util.Hashtable<Unit,Unit> |
EnhancedUnitGraph.try2nop |
protected java.util.Hashtable<Unit,Unit> |
EnhancedUnitGraph.try2nop |
| Modifier and Type | Method and Description |
|---|---|
Unit |
Region.getFirst() |
Unit |
PDGRegion.getFirst() |
Unit |
IRegion.getFirst() |
Unit |
Region.getLast() |
Unit |
PDGRegion.getLast() |
Unit |
IRegion.getLast() |
| Modifier and Type | Method and Description |
|---|---|
java.util.Hashtable<Unit,Region> |
RegionAnalysis.getUnit2RegionMap() |
java.util.List<Unit> |
Region.getUnits() |
java.util.List<Unit> |
PDGRegion.getUnits() |
java.util.List<Unit> |
IRegion.getUnits() |
java.util.List<Unit> |
Region.getUnits(Unit from,
Unit to) |
java.util.List<Unit> |
PDGRegion.getUnits(Unit from,
Unit to) |
java.util.List<Unit> |
IRegion.getUnits(Unit from,
Unit to) |
| Modifier and Type | Method and Description |
|---|---|
java.util.List<Unit> |
Region.getUnits(Unit from,
Unit to) |
java.util.List<Unit> |
PDGRegion.getUnits(Unit from,
Unit to) |
java.util.List<Unit> |
IRegion.getUnits(Unit from,
Unit to) |
boolean |
Region.occursBefore(Unit u1,
Unit u2) |
boolean |
PDGRegion.occursBefore(Unit u1,
Unit u2) |
boolean |
IRegion.occursBefore(Unit u1,
Unit u2) |
PDGNode |
PDGRegion.unit2PDGNode(Unit u) |
| Modifier and Type | Class and Description |
|---|---|
class |
BranchedFlowAnalysis<N extends Unit,A>
Abstract class providing functionality for branched flow analysis.
|
| Modifier and Type | Field and Description |
|---|---|
protected Unit |
ValueUnitPair.unit |
Unit |
UnitValueBoxPair.unit |
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<Unit,java.util.ArrayList<A>> |
BranchedFlowAnalysis.unitToAfterBranchFlow |
protected java.util.Map<Unit,java.util.ArrayList<A>> |
BranchedFlowAnalysis.unitToAfterFallFlow
Maps graph nodes to OUT sets.
|
protected java.util.Map<Unit,java.util.List> |
GuaranteedDefs.unitToGuaranteedDefs |
| Modifier and Type | Method and Description |
|---|---|
Unit |
ValueUnitPair.getUnit() |
Unit |
UnitValueBoxPair.getUnit() |
Unit |
LocalUnitPair.getUnit() |
| Modifier and Type | Method and Description |
|---|---|
java.util.List<Unit> |
SmartLocalDefs.getDefsOfAt(Local l,
Unit s) |
java.util.List<Unit> |
SimpleLocalDefs.getDefsOfAt(Local l,
Unit s) |
java.util.List<Unit> |
LocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition sites for a Local at a certain
point (Unit) in a method.
|
java.util.List<Unit> |
CombinedDUAnalysis.getDefsOfAt(Local l,
Unit s) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
ValueUnitPair.canContainUnit(Unit u) |
protected abstract void |
BranchedFlowAnalysis.flowThrough(A in,
Unit s,
java.util.List<A> fallOut,
java.util.List<A> branchOuts)
Given the merge of the
in sets,
compute the fallOut and branchOuts
set for s. |
java.util.List<A> |
BranchedFlowAnalysis.getBranchFlowAfter(Unit s) |
java.util.List<Unit> |
SmartLocalDefs.getDefsOfAt(Local l,
Unit s) |
java.util.List<Unit> |
SimpleLocalDefs.getDefsOfAt(Local l,
Unit s) |
java.util.List<Unit> |
LocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition sites for a Local at a certain
point (Unit) in a method.
|
java.util.List<Unit> |
CombinedDUAnalysis.getDefsOfAt(Local l,
Unit s) |
A |
BranchedFlowAnalysis.getFallFlowAfter(Unit s) |
A |
BranchedFlowAnalysis.getFlowBefore(Unit s) |
java.util.List |
GuaranteedDefs.getGuaranteedDefs(Unit s)
Returns a list of locals guaranteed to be defined at (just
before) program point s.
|
java.util.List |
SimpleLiveLocals.getLiveLocalsAfter(Unit s) |
java.util.List |
LiveLocals.getLiveLocalsAfter(Unit s)
Returns the list of Locals that are live after the specified
Unit.
|
java.util.List |
CombinedDUAnalysis.getLiveLocalsAfter(Unit u) |
java.util.List |
SimpleLiveLocals.getLiveLocalsBefore(Unit s) |
java.util.List |
LiveLocals.getLiveLocalsBefore(Unit s)
Returns the list of Locals that are live before the specified
Unit.
|
java.util.List |
CombinedDUAnalysis.getLiveLocalsBefore(Unit u) |
java.util.Map<java.lang.Integer,Local> |
RoboVmLiveSlotLocals.getLocalsBeforUnit(Unit u) |
java.util.List |
SimpleLocalUses.getUsesOf(Unit s)
Uses for a Local defined at a given Unit are returned as
a list of UnitValueBoxPairs each containing a Unit that use the
local and the Local itself wrapped in a ValueBox.
|
java.util.List |
LocalUses.getUsesOf(Unit s)
Returns a list of the Units that use the Local that is
defined by a given Unit.
|
java.util.List |
CombinedDUAnalysis.getUsesOf(Unit u) |
boolean |
SimpleLocalDefs.hasDefsAt(Local l,
Unit s) |
void |
ValueUnitPair.setUnit(Unit unit) |
| Constructor and Description |
|---|
LocalUnitPair(Local local,
Unit unit)
Constructs a LocalUnitPair from a Unit object and a Local object.
|
UnitValueBoxPair(Unit unit,
ValueBox valueBox)
Constructs a UnitValueBoxPair form a Unit object and a ValueBox object.
|
ValueUnitPair(Value value,
Unit unit)
Constructs a ValueUnitPair from a Unit object and a Value object.
|
| Modifier and Type | Method and Description |
|---|---|
protected abstract java.lang.Object |
UnitMap.mapTo(Unit unit)
maps a unit to an object.
|
Copyright © 2012-2019 RoboVM AB. All Rights Reserved.