| Package | Description |
|---|---|
| soot |
Base Soot classes, shared by different intermediate representations.
|
| soot.baf |
Public classes for the Baf intermediate representation.
|
| soot.baf.internal |
Internal, messy, implementation-specific classes for the Baf intermediate representation.
|
| soot.dava | |
| soot.dava.internal.AST | |
| soot.dava.internal.javaRep | |
| soot.dexpler | |
| soot.dexpler.instructions | |
| soot.grimp |
Public classes for the Grimp intermediate representation.
|
| soot.grimp.internal |
Internal, messy, implementation-specific classes for the Grimp intermediate representation.
|
| soot.JastAddJ | |
| soot.jbco.bafTransformations | |
| soot.jbco.jimpleTransformations | |
| soot.jbco.util | |
| soot.jimple |
Public classes for the Jimple intermediate representation.
|
| soot.jimple.internal |
Internal, messy, implementation-specific classes for the Jimple intermediate representation.
|
| soot.jimple.spark.fieldrw | |
| soot.jimple.toolkits.annotation.nullcheck |
Classes that carry out an analysis to determine whether or not null pointer
checks are necessary.
|
| soot.jimple.toolkits.annotation.parity | |
| soot.jimple.toolkits.annotation.purity | |
| soot.jimple.toolkits.annotation.tags |
Tags and aggregators to store and combine information about array bounds and null pointer checks.
|
| soot.jimple.toolkits.base |
A toolkit to optimize the Jimple IR.
|
| soot.jimple.toolkits.callgraph | |
| soot.jimple.toolkits.ide | |
| soot.jimple.toolkits.ide.exampleproblems | |
| soot.jimple.toolkits.ide.icfg | |
| soot.jimple.toolkits.ide.icfg.dotexport | |
| 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.findobject | |
| soot.jimple.toolkits.thread.mhp.stmt | |
| soot.jimple.toolkits.thread.synchronization | |
| soot.jimple.toolkits.typing |
Implements a typing algorithm for Jimple.
|
| soot.shimple |
Public classes for the SSA Shimple intermediate representation.
|
| soot.shimple.internal |
Shimple internal messy stuff.
|
| soot.shimple.toolkits.scalar |
Some analyses based on Shimple.
|
| soot.tagkit |
Classes supporting classfile annotation in Soot.
|
| soot.toDex | |
| soot.toDex.instructions | |
| 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.
|
| soot.validation |
| 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 Map<Unit,String> |
LabeledUnitPrinter.labels
branch targets
|
protected Map<Unit,String> |
LabeledUnitPrinter.references
for unit references in Phi nodes
|
protected Map<Unit,Integer> |
AbstractJasminClass.subroutineToReturnAddressSlot |
protected Numberer<Unit> |
Scene.unitNumberer |
protected Map<Unit,String> |
AbstractJasminClass.unitToLabel |
| Modifier and Type | Method and Description |
|---|---|
Unit |
AbstractTrap.getBeginUnit() |
Unit |
Trap.getBeginUnit()
Returns the first trapped unit, unless this
Trap does not trap any units at all. |
Unit |
AbstractTrap.getEndUnit() |
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 |
AbstractTrap.getHandlerUnit() |
Unit |
Trap.getHandlerUnit()
Returns the unit handling the exception being trapped.
|
Unit |
Body.getThisUnit()
Return unit containing the \@this-assignment
|
Unit |
AbstractUnitBox.getUnit() |
Unit |
UnitBox.getUnit()
Returns the unit contained within this box.
|
| Modifier and Type | Method and Description |
|---|---|
static Set<Unit> |
TrapManager.getTrappedUnitsOf(Body b)
Returns a set of units which lie inside the range of any trap.
|
Numberer<Unit> |
Scene.getUnitNumberer() |
Map<Unit,String> |
LabeledUnitPrinter.labels() |
Map<Unit,String> |
LabeledUnitPrinter.references() |
| Modifier and Type | Method and Description |
|---|---|
abstract boolean |
AbstractUnitBox.canContainUnit(Unit u) |
boolean |
UnitBox.canContainUnit(Unit u)
Returns true if this box can contain the given Unit.
|
void |
AbstractUnitPrinter.endUnit(Unit u) |
void |
AttributesUnitPrinter.endUnit(Unit u) |
void |
UnitPrinter.endUnit(Unit u) |
static List<RefType> |
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 List<Trap> |
TrapManager.getTrapsAt(Unit unit,
Body b)
Returns the list of traps caught at Unit u in Body b.
|
void |
UnitPatchingChain.insertOnEdge(Chain<Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
void |
UnitPatchingChain.insertOnEdge(Collection<? extends Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
void |
UnitPatchingChain.insertOnEdge(List<Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
void |
UnitPatchingChain.insertOnEdge(Unit toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
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 |
AbstractUnit.redirectJumpsToThisTo(Unit newLocation) |
void |
Unit.redirectJumpsToThisTo(Unit newLocation)
Redirects jumps to this Unit to newLocation.
|
void |
AbstractTrap.setBeginUnit(Unit beginUnit) |
void |
Trap.setBeginUnit(Unit beginUnit)
Sets the value to be returned by
Trap.getBeginUnit() to beginUnit. |
void |
AbstractTrap.setEndUnit(Unit endUnit) |
void |
Trap.setEndUnit(Unit endUnit)
Sets the value to be returned by
Trap.getEndUnit() to endUnit. |
void |
AbstractTrap.setHandlerUnit(Unit handlerUnit) |
void |
Trap.setHandlerUnit(Unit handlerUnit)
Sets the unit handling the exception to
handlerUnit. |
void |
AbstractUnitBox.setUnit(Unit unit) |
void |
UnitBox.setUnit(Unit u)
Sets this box to contain the given 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 |
BriefUnitPrinter.startUnit(Unit u) |
void |
AbstractUnitPrinter.startUnit(Unit u) |
void |
AttributesUnitPrinter.startUnit(Unit u) |
void |
UnitPrinter.startUnit(Unit u) |
boolean |
SideEffectTester.unitCanReadFrom(Unit u,
Value v) |
boolean |
SideEffectTester.unitCanWriteTo(Unit u,
Value v) |
abstract void |
AbstractUnitPrinter.unitRef(Unit u,
boolean branchTarget) |
void |
UnitPrinter.unitRef(Unit u,
boolean branchTarget) |
void |
LabeledUnitPrinter.unitRef(Unit u,
boolean branchTarget) |
| Modifier and Type | Method and Description |
|---|---|
void |
UnitPatchingChain.insertOnEdge(Chain<Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
void |
UnitPatchingChain.insertOnEdge(Collection<? extends Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
void |
UnitPatchingChain.insertOnEdge(List<Unit> toInsert,
Unit point_src,
Unit point_tgt)
Inserts instrumentation in a manner such that the resulting control flow graph (CFG) of the program will contain
toInsert on an edge that is defined by point_source and point_target. |
| Constructor and Description |
|---|
UnitPatchingChain(Chain<Unit> aChain) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
AddInst |
interface |
AndInst |
interface |
ArrayLengthInst |
interface |
ArrayReadInst |
interface |
ArrayWriteInst |
interface |
CmpgInst |
interface |
CmpInst |
interface |
CmplInst |
interface |
DivInst |
interface |
Dup1_x1Inst |
interface |
Dup1_x2Inst |
interface |
Dup1Inst |
interface |
Dup2_x1Inst |
interface |
Dup2_x2Inst |
interface |
Dup2Inst |
interface |
DupInst |
interface |
DynamicInvokeInst |
interface |
EnterMonitorInst |
interface |
ExitMonitorInst |
interface |
FieldArgInst |
interface |
FieldGetInst |
interface |
FieldPutInst |
interface |
GotoInst |
interface |
IdentityInst |
interface |
IfCmpEqInst |
interface |
IfCmpGeInst |
interface |
IfCmpGtInst |
interface |
IfCmpLeInst |
interface |
IfCmpLtInst |
interface |
IfCmpNeInst |
interface |
IfEqInst |
interface |
IfGeInst |
interface |
IfGtInst |
interface |
IfLeInst |
interface |
IfLtInst |
interface |
IfNeInst |
interface |
IfNonNullInst |
interface |
IfNullInst |
interface |
IncInst |
interface |
Inst |
interface |
InstanceCastInst |
interface |
InstanceOfInst |
interface |
InterfaceInvokeInst |
interface |
JSRInst |
interface |
LoadInst |
interface |
LookupSwitchInst |
interface |
MethodArgInst |
interface |
MulInst |
interface |
NegInst |
interface |
NewArrayInst |
interface |
NewInst |
interface |
NewMultiArrayInst |
interface |
NoArgInst |
interface |
NopInst |
interface |
OpTypeArgInst |
interface |
OrInst |
interface |
PopInst |
interface |
PrimitiveCastInst |
interface |
PushInst |
interface |
RemInst |
interface |
RetInst |
interface |
ReturnInst |
interface |
ReturnVoidInst |
interface |
ShlInst |
interface |
ShrInst |
interface |
SpecialInvokeInst |
interface |
StaticGetInst |
interface |
StaticInvokeInst |
interface |
StaticPutInst |
interface |
StoreInst |
interface |
SubInst |
interface |
SwapInst |
interface |
TableSwitchInst |
interface |
TargetArgInst |
interface |
ThrowInst |
interface |
UshrInst |
interface |
VirtualInvokeInst |
interface |
XorInst |
| Modifier and Type | Class and Description |
|---|---|
class |
PlaceholderInst |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,org.objectweb.asm.Label> |
BafASMBackend.branchTargetLabels |
| Modifier and Type | Method and Description |
|---|---|
Unit |
LookupSwitchInst.getDefaultTarget() |
Unit |
TableSwitchInst.getDefaultTarget() |
Unit |
PlaceholderInst.getSource() |
Unit |
TargetArgInst.getTarget() |
Unit |
LookupSwitchInst.getTarget(int index) |
Unit |
TableSwitchInst.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
LookupSwitchInst.getTargets() |
List<Unit> |
TableSwitchInst.getTargets() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
BafASMBackend.generateTagsForUnit(org.objectweb.asm.MethodVisitor mv,
Unit u)
Writes out the information stored in tags associated with the given unit
|
protected org.objectweb.asm.Label |
BafASMBackend.getBranchTargetLabel(Unit target)
Returns the ASM Label for a given Unit that is the target of a branch or jump
|
GotoInst |
Baf.newGotoInst(Unit unit) |
IfCmpEqInst |
Baf.newIfCmpEqInst(Type opType,
Unit unit) |
IfCmpGeInst |
Baf.newIfCmpGeInst(Type opType,
Unit unit) |
IfCmpGtInst |
Baf.newIfCmpGtInst(Type opType,
Unit unit) |
IfCmpLeInst |
Baf.newIfCmpLeInst(Type opType,
Unit unit) |
IfCmpLtInst |
Baf.newIfCmpLtInst(Type opType,
Unit unit) |
IfCmpNeInst |
Baf.newIfCmpNeInst(Type opType,
Unit unit) |
IfEqInst |
Baf.newIfEqInst(Unit unit) |
IfGeInst |
Baf.newIfGeInst(Unit unit) |
IfGtInst |
Baf.newIfGtInst(Unit unit) |
IfLeInst |
Baf.newIfLeInst(Unit unit) |
IfLtInst |
Baf.newIfLtInst(Unit unit) |
IfNeInst |
Baf.newIfNeInst(Unit unit) |
IfNonNullInst |
Baf.newIfNonNullInst(Unit unit) |
IfNullInst |
Baf.newIfNullInst(Unit unit) |
UnitBox |
Baf.newInstBox(Unit unit) |
JSRInst |
Baf.newJSRInst(Unit unit) |
LookupSwitchInst |
Baf.newLookupSwitchInst(Unit defaultTarget,
List<IntConstant> lookupValues,
List targets) |
PlaceholderInst |
Baf.newPlaceholderInst(Unit source) |
TableSwitchInst |
Baf.newTableSwitchInst(Unit defaultTarget,
int lowIndex,
int highIndex,
List targets) |
Trap |
Baf.newTrap(SootClass exception,
Unit beginUnit,
Unit endUnit,
Unit handlerUnit)
Constructs a new BTrap for the given exception on the given Unit range with the given Unit handler.
|
void |
LookupSwitchInst.setDefaultTarget(Unit defTarget) |
void |
TableSwitchInst.setDefaultTarget(Unit defTarget) |
void |
LookupSwitchInst.setTarget(int index,
Unit target) |
void |
TableSwitchInst.setTarget(int index,
Unit target) |
void |
TargetArgInst.setTarget(Unit target) |
| Modifier and Type | Method and Description |
|---|---|
void |
LookupSwitchInst.setTargets(List<Unit> targets) |
void |
TableSwitchInst.setTargets(List<Unit> targets) |
| Modifier and Type | Method and Description |
|---|---|
Unit |
BTableSwitchInst.getDefaultTarget() |
Unit |
BLookupSwitchInst.getDefaultTarget() |
Unit |
AbstractBranchInst.getTarget() |
Unit |
BTableSwitchInst.getTarget(int index) |
Unit |
BLookupSwitchInst.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
void |
BTableSwitchInst.setDefaultTarget(Unit defaultTarget) |
void |
BLookupSwitchInst.setDefaultTarget(Unit defaultTarget) |
void |
BTableSwitchInst.setTarget(int index,
Unit target) |
void |
BLookupSwitchInst.setTarget(int index,
Unit target) |
void |
AbstractBranchInst.setTarget(Unit target) |
| Modifier and Type | Method and Description |
|---|---|
void |
BTableSwitchInst.setTargets(List<Unit> targets) |
void |
BLookupSwitchInst.setTargets(List<Unit> targets) |
| Constructor and Description |
|---|
BGotoInst(Unit target) |
BIfCmpEqInst(Type opType,
Unit target) |
BIfCmpGeInst(Type opType,
Unit target) |
BIfCmpGtInst(Type opType,
Unit target) |
BIfCmpLeInst(Type opType,
Unit target) |
BIfCmpLtInst(Type opType,
Unit target) |
BIfCmpNeInst(Type opType,
Unit target) |
BIfEqInst(Unit target) |
BIfGeInst(Unit target) |
BIfGtInst(Unit target) |
BIfLeInst(Unit target) |
BIfLtInst(Unit target) |
BIfNeInst(Unit target) |
BIfNonNullInst(Unit target) |
BIfNullInst(Unit target) |
BJSRInst(Unit target) |
BLookupSwitchInst(Unit defaultTarget,
List lookupValues,
List targets) |
BTableSwitchInst(Unit defaultTarget,
int lowIndex,
int highIndex,
List targets) |
BTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt) |
| Modifier and Type | Method and Description |
|---|---|
Unit |
DavaBody.get_ConstructorUnit() |
| Modifier and Type | Method and Description |
|---|---|
void |
DavaBody.set_ConstructorUnit(Unit s) |
void |
DavaUnitPrinter.unitRef(Unit u,
boolean branchTarget) |
| Modifier and Type | Class and Description |
|---|---|
class |
ASTControlFlowNode |
class |
ASTDoWhileNode |
class |
ASTForLoopNode |
class |
ASTIfElseNode |
class |
ASTIfNode |
class |
ASTLabeledBlockNode |
class |
ASTLabeledNode |
class |
ASTMethodNode |
class |
ASTNode |
class |
ASTStatementSequenceNode |
class |
ASTSwitchNode |
class |
ASTSynchronizedBlockNode |
class |
ASTTryNode |
class |
ASTUnconditionalLoopNode |
class |
ASTWhileNode |
| Modifier and Type | Class and Description |
|---|---|
class |
DAbruptStmt |
class |
DAssignStmt |
class |
DDecrementStmt |
class |
DIdentityStmt |
class |
DIncrementStmt |
class |
DShortcutAssignStmt |
class |
DVariableDeclarationStmt |
| Modifier and Type | Field and Description |
|---|---|
protected List<Unit> |
DexDefUseAnalysis.unitList |
| Modifier and Type | Method and Description |
|---|---|
protected Set<Unit> |
DexDefUseAnalysis.collectDefinitionsWithAliases(Local l)
Collect definitions of l in body including the definitions of aliases of l.
|
protected List<Unit> |
DexTransformer.collectDefinitionsWithAliases(Local l,
LocalDefs localDefs,
LocalUses localUses,
Body body)
Collect definitions of l in body including the definitions of aliases of l.
|
List<Unit> |
DexDefUseAnalysis.getDefsOf(Local l) |
List<Unit> |
DexDefUseAnalysis.getDefsOfAt(Local l,
Unit s) |
Set<Unit> |
DexDefUseAnalysis.getUsesOf(Local l) |
| Modifier and Type | Method and Description |
|---|---|
void |
DexBody.add(Unit u)
Add unit to this body.
|
static void |
Util.addExceptionAfterUnit(Body b,
String exceptionType,
Unit u,
String m)
Insert a runtime exception before unit u of body b.
|
protected boolean |
DexNumTransformer.examineBinopExpr(Unit u) |
List<Unit> |
DexDefUseAnalysis.getDefsOfAt(Local l,
Unit s) |
protected void |
AbstractNullTransformer.replaceWithNull(Unit u)
Replace 0 with null in the given unit.
|
| Modifier and Type | Method and Description |
|---|---|
protected Type |
DexTransformer.findArrayType(LocalDefs localDefs,
Stmt arrayStmt,
int depth,
Set<Unit> alreadyVisitedDefs) |
| Modifier and Type | Field and Description |
|---|---|
protected Unit |
SwitchInstruction.markerUnit |
protected Unit |
JumpInstruction.markerUnit |
protected Unit |
DexlibAbstractInstruction.unit |
| Modifier and Type | Method and Description |
|---|---|
Unit |
DexlibAbstractInstruction.getUnit() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
DexlibAbstractInstruction.setUnit(Unit u)
Set the Jimple Unit, that comprises this instruction.
|
| Modifier and Type | Method and Description |
|---|---|
GotoStmt |
Grimp.newGotoStmt(Unit target)
Constructs a GotoStmt(Stmt) grammar chunk.
|
IfStmt |
Grimp.newIfStmt(Value condition,
Unit target)
Constructs a IfStmt(Condition, Stmt) grammar chunk.
|
LookupSwitchStmt |
Grimp.newLookupSwitchStmt(Value key,
List lookupValues,
List targets,
Unit defaultTarget)
Constructs a LookupSwitchStmt(Expr, List of Expr, List of Unit, Stmt) grammar chunk.
|
UnitBox |
Grimp.newStmtBox(Unit unit) |
TableSwitchStmt |
Grimp.newTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List targets,
Unit defaultTarget)
Constructs a TableSwitchStmt(Expr, int, int, List of Unit, Stmt) grammar chunk.
|
Trap |
Grimp.newTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt)
Constructs a new Trap for the given exception on the given Stmt range with the given Stmt handler.
|
| Modifier and Type | Class and Description |
|---|---|
class |
GAssignStmt |
class |
GEnterMonitorStmt |
class |
GExitMonitorStmt |
class |
GIdentityStmt |
class |
GIfStmt |
class |
GInvokeStmt |
class |
GLookupSwitchStmt |
class |
GReturnStmt |
class |
GTableSwitchStmt |
class |
GThrowStmt |
| Constructor and Description |
|---|
GIfStmt(Value condition,
Unit target) |
GLookupSwitchStmt(Value key,
List lookupValues,
List targets,
Unit defaultTarget) |
GTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List targets,
Unit defaultTarget) |
GTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt) |
| Modifier and Type | Method and Description |
|---|---|
GotoStmt |
Body.newGotoStmt(Unit target,
ASTNode location) |
IfStmt |
Body.newIfStmt(Value op,
Unit target,
ASTNode location) |
LookupSwitchStmt |
Body.newLookupSwitchStmt(Value key,
List lookupValues,
List targets,
Unit defaultTarget,
ASTNode location) |
TableSwitchStmt |
Body.newTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List targets,
Unit defaultTarget,
ASTNode location) |
| Modifier and Type | Method and Description |
|---|---|
static Map<Unit,Stack<Type>> |
StackTypeHeightCalculator.calculateStackHeights(Body b) |
static Map<Unit,Stack<Type>> |
StackTypeHeightCalculator.calculateStackHeights(Body b,
boolean jimpleLocals) |
static Map<Unit,Stack<Type>> |
StackTypeHeightCalculator.calculateStackHeights(Body b,
Map<Local,Local> b2JLocs) |
| Modifier and Type | Method and Description |
|---|---|
static Stack<Type> |
StackTypeHeightCalculator.getAfterStack(Body b,
Unit u) |
static Stack<Type> |
StackTypeHeightCalculator.getAfterStack(Stack<Type> beforeStack,
Unit u) |
static Stack<Type> |
StackTypeHeightCalculator.updateStack(Unit u,
Stack<Type> st) |
| Modifier and Type | Method and Description |
|---|---|
static void |
StackTypeHeightCalculator.printStack(PatchingChain<Unit> units,
Map<Unit,Stack<Type>> stacks,
boolean before) |
static void |
StackTypeHeightCalculator.printStack(PatchingChain<Unit> units,
Map<Unit,Stack<Type>> stacks,
boolean before) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
AddSwitches.checkTraps(Unit u,
Body b) |
protected void |
New2InitFlowAnalysis.flowThrough(FlowSet in,
Unit d,
FlowSet out) |
| Constructor and Description |
|---|
New2InitFlowAnalysis(DirectedGraph<Unit> graph) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
BodyBuilder.isBafIf(Unit u) |
static boolean |
BodyBuilder.isExceptionCaughtAt(Chain<Unit> units,
Unit u,
Iterator<Trap> trapsIt) |
static void |
BodyBuilder.updateTraps(Unit oldu,
Unit newu,
Chain<Trap> traps) |
| Modifier and Type | Method and Description |
|---|---|
static List<Local> |
BodyBuilder.buildParameterLocals(PatchingChain<Unit> units,
Collection<Local> locals,
List<Type> paramTypes) |
static Local |
BodyBuilder.buildThisLocal(PatchingChain<Unit> units,
ThisRef tr,
Collection<Local> locals) |
static boolean |
BodyBuilder.isExceptionCaughtAt(Chain<Unit> units,
Unit u,
Iterator<Trap> trapsIt) |
static void |
Debugger.printUnits(PatchingChain<Unit> u,
String msg) |
| 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 |
SwitchStmt |
interface |
TableSwitchStmt |
interface |
ThrowStmt |
| Modifier and Type | Class and Description |
|---|---|
class |
PlaceholderStmt |
| Modifier and Type | Method and Description |
|---|---|
Unit |
JimpleToBafContext.getCurrentUnit() |
Unit |
SwitchStmt.getDefaultTarget() |
Unit |
PlaceholderStmt.getSource() |
Unit |
GotoStmt.getTarget() |
Unit |
SwitchStmt.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
SwitchStmt.getTargets() |
| 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,
List<IntConstant> lookupValues,
List<? extends Unit> 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,
List<? extends Unit> 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 |
JimpleToBafContext.setCurrentUnit(Unit u) |
void |
SwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
SwitchStmt.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 |
Constant.convertToBaf(JimpleToBafContext context,
List<Unit> out)
Adds a Baf instruction pushing this constant to the stack onto
out. |
void |
ConvertToBaf.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
StaticFieldRef.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
LookupSwitchStmt |
Jimple.newLookupSwitchStmt(Value key,
List<IntConstant> lookupValues,
List<? extends Unit> targets,
Unit defaultTarget)
Constructs a LookupSwitchStmt(Immediate, List of Immediate, List of Unit, Stmt) grammar chunk.
|
TableSwitchStmt |
Jimple.newTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List<? extends Unit> targets,
Unit defaultTarget)
Constructs a TableSwitchStmt(Immediate, int, int, List of Unit, Stmt) grammar chunk.
|
void |
TableSwitchStmt.setTargets(List<? extends Unit> targets) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractDefinitionStmt |
class |
AbstractOpStmt |
class |
AbstractStmt |
class |
AbstractSwitchStmt |
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 |
AbstractSwitchStmt.getDefaultTarget() |
Unit |
JGotoStmt.getTarget() |
Unit |
AbstractSwitchStmt.getTarget(int index) |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
AbstractSwitchStmt.getTargets() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
StmtBox.canContainUnit(Unit u) |
void |
AbstractSwitchStmt.setDefaultTarget(Unit defaultTarget) |
void |
AbstractSwitchStmt.setTarget(int index,
Unit target) |
void |
JIfStmt.setTarget(Unit target) |
void |
JGotoStmt.setTarget(Unit target) |
void |
AbstractSwitchStmt.setTargets(Unit[] targets) |
| Modifier and Type | Method and Description |
|---|---|
void |
JDynamicInvokeExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractInterfaceInvokeExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractStaticInvokeExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractCastExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JReturnVoidStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JIfStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JIdentityStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractJimpleFloatBinopExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JInvokeStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JTableSwitchStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JInstanceOfExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JNopStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JEnterMonitorStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractNewArrayExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractJimpleIntLongBinopExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JLengthExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JLookupSwitchStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JNegExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractInstanceFieldRef.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractNewMultiArrayExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JNewExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JReturnStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JimpleLocal.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractSpecialInvokeExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractJimpleIntBinopExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JExitMonitorStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JThrowStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractVirtualInvokeExpr.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JAssignStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JArrayRef.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
JGotoStmt.convertToBaf(JimpleToBafContext context,
List<Unit> out) |
void |
AbstractSwitchStmt.setTargets(List<? extends Unit> targets) |
| Constructor and Description |
|---|
JGotoStmt(Unit target) |
JIfStmt(Value condition,
Unit target) |
JLookupSwitchStmt(Value key,
List<IntConstant> lookupValues,
List<? extends Unit> targets,
Unit defaultTarget)
Constructs a new JLookupSwitchStmt.
|
JTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List<? extends Unit> targets,
Unit defaultTarget) |
JTrap(SootClass exception,
Unit beginStmt,
Unit endStmt,
Unit handlerStmt) |
| Constructor and Description |
|---|
JLookupSwitchStmt(Value key,
List<IntConstant> lookupValues,
List<? extends Unit> targets,
Unit defaultTarget)
Constructs a new JLookupSwitchStmt.
|
JTableSwitchStmt(Value key,
int lowIndex,
int highIndex,
List<? extends Unit> targets,
Unit defaultTarget) |
| Modifier and Type | Method and Description |
|---|---|
void |
FieldTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
| Modifier and Type | Method and Description |
|---|---|
void |
FieldTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,HashSet<Value>> |
BranchedRefVarsAnalysis.unitToAnalyzedChecksSet
Deprecated.
|
protected Map<Unit,HashSet<Value>> |
BranchedRefVarsAnalysis.unitToArrayRefChecksSet
Deprecated.
|
protected Map<Unit,FlowSet> |
BranchedRefVarsAnalysis.unitToGenerateSet
Deprecated.
|
protected Map<Unit,HashSet<Value>> |
BranchedRefVarsAnalysis.unitToInstanceFieldRefChecksSet
Deprecated.
|
protected Map<Unit,HashSet<Value>> |
BranchedRefVarsAnalysis.unitToInstanceInvokeExprChecksSet
Deprecated.
|
protected Map<Unit,HashSet<Value>> |
BranchedRefVarsAnalysis.unitToLengthExprChecksSet
Deprecated.
|
protected Map<Unit,FlowSet> |
BranchedRefVarsAnalysis.unitToPreserveSet
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
NullnessAnalysis.flowThrough(NullnessAnalysis.AnalysisInfo in,
Unit u,
List<NullnessAnalysis.AnalysisInfo> fallOut,
List<NullnessAnalysis.AnalysisInfo> branchOuts)
Given the merge of the
in sets, compute the fallOut and branchOuts set for
s. |
protected void |
BranchedRefVarsAnalysis.flowThrough(Object inValue,
Unit stmt,
List outFallValue,
List outBranchValues)
Deprecated.
|
List |
LocalRefVarsAnalysisWrapper.getListsOfVarsAfterBranch(Unit s)
Deprecated.
|
List |
LocalRefVarsAnalysisWrapper.getVarsAfterFall(Unit s)
Deprecated.
|
List |
LocalRefVarsAnalysisWrapper.getVarsBefore(Unit s)
Deprecated.
|
List |
LocalRefVarsAnalysisWrapper.getVarsDontNeedCheck(Unit s)
Deprecated.
|
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 |
|---|---|
protected void |
ParityAnalysis.flowThrough(Map<Value,ParityAnalysis.Parity> in,
Unit s,
Map<Value,ParityAnalysis.Parity> out) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
PurityIntraproceduralAnalysis.flowThrough(PurityGraphBox inValue,
Unit unit,
PurityGraphBox outValue) |
| Modifier and Type | Method and Description |
|---|---|
void |
ArrayNullTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
| Modifier and Type | Method and Description |
|---|---|
void |
ArrayNullTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
| Modifier and Type | Method and Description |
|---|---|
Zone |
Zonation.getZoneOf(Unit u) |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,Edge> |
CallGraph.srcUnitToEdge |
| Modifier and Type | Method and Description |
|---|---|
Unit |
ContextSensitiveEdge.srcUnit()
The unit at which the call occurs; may be null for calls not occurring at a specific statement (eg.
|
Unit |
Edge.srcUnit() |
| Modifier and Type | Method and Description |
|---|---|
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.addStaticEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind) |
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) |
void |
OneCFAContextManager.addVirtualEdge(MethodOrMethodContext src,
Unit srcUnit,
SootMethod target,
Kind kind,
Context typeContext) |
Iterator |
ContextSensitiveCallGraph.edgesOutOf(Context srcCtxt,
SootMethod src,
Unit srcUnit)
Returns all ContextSensitiveEdge's out of unit srcUnit in method src in context srcCtxt.
|
Iterator<Edge> |
CallGraph.edgesOutOf(Unit u)
Returns an iterator over all edges that have u as their source unit.
|
Iterator |
SlowCallGraph.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.
|
protected void |
ConstantArrayAnalysis.flowThrough(ConstantArrayAnalysis.ArrayState in,
Unit d,
ConstantArrayAnalysis.ArrayState out) |
Iterator<MethodOrMethodContext> |
TransitiveTargets.iterator(Unit u) |
boolean |
CallGraph.removeAllEdgesOutOf(Unit u)
Removes all outgoing edges that start at the given unit
|
| Constructor and Description |
|---|
Edge(MethodOrMethodContext src,
Unit srcUnit,
MethodOrMethodContext tgt,
Kind kind) |
| Constructor and Description |
|---|
ConstantArrayAnalysis(DirectedGraph<Unit> graph,
Body b) |
| Modifier and Type | Class and Description |
|---|---|
class |
DefaultJimpleIDETabulationProblem<D,V,I extends heros.InterproceduralCFG<Unit,SootMethod>>
|
class |
DefaultJimpleIFDSTabulationProblem<D,I extends heros.InterproceduralCFG<Unit,SootMethod>>
|
class |
JimpleIDESolver<D,V,I extends heros.InterproceduralCFG<Unit,SootMethod>> |
class |
JimpleIFDSSolver<D,I extends heros.InterproceduralCFG<Unit,SootMethod>> |
| Constructor and Description |
|---|
JimpleIDESolver(heros.IDETabulationProblem<Unit,D,SootMethod,V,I> problem) |
JimpleIDESolver(heros.IDETabulationProblem<Unit,D,SootMethod,V,I> problem,
boolean dumpResults) |
JimpleIFDSSolver(heros.IFDSTabulationProblem<Unit,D,SootMethod,I> problem) |
JimpleIFDSSolver(heros.IFDSTabulationProblem<Unit,D,SootMethod,I> problem,
boolean dumpResults) |
| Modifier and Type | Method and Description |
|---|---|
heros.FlowFunctions<Unit,Pair<Value,Type>,SootMethod> |
IFDSPossibleTypes.createFlowFunctionsFactory() |
heros.FlowFunctions<Unit,Value,SootMethod> |
IFDSLiveVariables.createFlowFunctionsFactory() |
heros.FlowFunctions<Unit,Pair<Value,Set<DefinitionStmt>>,SootMethod> |
IFDSReachingDefinitions.createFlowFunctionsFactory() |
heros.FlowFunctions<Unit,Local,SootMethod> |
IFDSUninitializedVariables.createFlowFunctionsFactory() |
heros.FlowFunctions<Unit,Local,SootMethod> |
IFDSLocalInfoFlow.createFlowFunctionsFactory() |
Map<Unit,Set<Pair<Value,Type>>> |
IFDSPossibleTypes.initialSeeds() |
Map<Unit,Set<Value>> |
IFDSLiveVariables.initialSeeds() |
Map<Unit,Set<Pair<Value,Set<DefinitionStmt>>>> |
IFDSReachingDefinitions.initialSeeds() |
Map<Unit,Set<Local>> |
IFDSUninitializedVariables.initialSeeds() |
Map<Unit,Set<Local>> |
IFDSLocalInfoFlow.initialSeeds() |
| Constructor and Description |
|---|
IFDSLiveVariables(heros.InterproceduralCFG<Unit,SootMethod> icfg) |
IFDSLocalInfoFlow(heros.InterproceduralCFG<Unit,SootMethod> icfg) |
IFDSPossibleTypes(heros.InterproceduralCFG<Unit,SootMethod> icfg) |
IFDSReachingDefinitions(heros.InterproceduralCFG<Unit,SootMethod> icfg) |
IFDSUninitializedVariables(heros.InterproceduralCFG<Unit,SootMethod> icfg) |
| Modifier and Type | Field and Description |
|---|---|
protected com.google.common.cache.LoadingCache<Body,DirectedGraph<Unit>> |
AbstractJimpleBasedICFG.bodyToUnitGraph |
protected BiDiInterproceduralCFG<Unit,SootMethod> |
BackwardsInterproceduralCFG.delegate |
protected com.google.common.cache.CacheLoader<SootMethod,Collection<Unit>> |
JimpleBasedInterproceduralCFG.loaderMethodToCallers |
protected com.google.common.cache.CacheLoader<Unit,Collection<SootMethod>> |
JimpleBasedInterproceduralCFG.loaderUnitToCallees |
protected Map<SootMethod,Set<Unit>> |
OnTheFlyJimpleBasedICFG.methodToCallers |
protected com.google.common.cache.LoadingCache<SootMethod,Collection<Unit>> |
JimpleBasedInterproceduralCFG.methodToCallers |
protected com.google.common.cache.LoadingCache<SootMethod,Set<Unit>> |
AbstractJimpleBasedICFG.methodToCallsFromWithin |
protected com.google.common.cache.LoadingCache<Unit,Set<SootMethod>> |
OnTheFlyJimpleBasedICFG.unitToCallees |
protected com.google.common.cache.LoadingCache<Unit,Collection<SootMethod>> |
JimpleBasedInterproceduralCFG.unitToCallees |
| Modifier and Type | Method and Description |
|---|---|
Set<Unit> |
AbstractJimpleBasedICFG.allNonCallEndNodes() |
Set<Unit> |
BackwardsInterproceduralCFG.allNonCallEndNodes() |
Set<Unit> |
AbstractJimpleBasedICFG.allNonCallStartNodes() |
Set<Unit> |
BackwardsInterproceduralCFG.allNonCallStartNodes() |
protected Map<Unit,Body> |
AbstractJimpleBasedICFG.createUnitToOwnerMap() |
Set<Unit> |
OnTheFlyJimpleBasedICFG.getCallersOf(SootMethod m) |
Collection<Unit> |
JimpleBasedInterproceduralCFG.getCallersOf(SootMethod m) |
Collection<Unit> |
BackwardsInterproceduralCFG.getCallersOf(SootMethod m) |
Set<Unit> |
AbstractJimpleBasedICFG.getCallsFromWithin(SootMethod m) |
Set<Unit> |
BackwardsInterproceduralCFG.getCallsFromWithin(SootMethod m) |
protected Set<Unit> |
AbstractJimpleBasedICFG.getCallsFromWithinMethod(SootMethod m) |
Collection<Unit> |
AbstractJimpleBasedICFG.getEndPointsOf(SootMethod m) |
Collection<Unit> |
BackwardsInterproceduralCFG.getEndPointsOf(SootMethod m) |
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(Body body) |
DirectedGraph<Unit> |
AbstractJimpleBasedICFG.getOrCreateUnitGraph(SootMethod m) |
DirectedGraph<Unit> |
BackwardsInterproceduralCFG.getOrCreateUnitGraph(SootMethod m) |
List<Unit> |
AbstractJimpleBasedICFG.getPredsOf(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getPredsOf(Unit u) |
List<Unit> |
AbstractJimpleBasedICFG.getPredsOfCallAt(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getPredsOfCallAt(Unit u) |
Collection<Unit> |
AbstractJimpleBasedICFG.getReturnSitesOfCallAt(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getReturnSitesOfCallAt(Unit n) |
Collection<Unit> |
AbstractJimpleBasedICFG.getStartPointsOf(SootMethod m) |
Collection<Unit> |
BackwardsInterproceduralCFG.getStartPointsOf(SootMethod m) |
List<Unit> |
AbstractJimpleBasedICFG.getSuccsOf(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getSuccsOf(Unit n) |
protected DirectedGraph<Unit> |
AbstractJimpleBasedICFG.makeGraph(Body body) |
| Modifier and Type | Method and Description |
|---|---|
Body |
AbstractJimpleBasedICFG.getBodyOf(Unit u) |
Set<SootMethod> |
OnTheFlyJimpleBasedICFG.getCalleesOfCallAt(Unit u) |
Collection<SootMethod> |
JimpleBasedInterproceduralCFG.getCalleesOfCallAt(Unit u) |
Collection<SootMethod> |
BackwardsInterproceduralCFG.getCalleesOfCallAt(Unit n) |
SootMethod |
AbstractJimpleBasedICFG.getMethodOf(Unit u) |
SootMethod |
BackwardsInterproceduralCFG.getMethodOf(Unit n) |
List<Unit> |
AbstractJimpleBasedICFG.getPredsOf(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getPredsOf(Unit u) |
List<Unit> |
AbstractJimpleBasedICFG.getPredsOfCallAt(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getPredsOfCallAt(Unit u) |
Collection<Unit> |
AbstractJimpleBasedICFG.getReturnSitesOfCallAt(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getReturnSitesOfCallAt(Unit n) |
List<Unit> |
AbstractJimpleBasedICFG.getSuccsOf(Unit u) |
List<Unit> |
BackwardsInterproceduralCFG.getSuccsOf(Unit n) |
boolean |
AbstractJimpleBasedICFG.isBranchTarget(Unit u,
Unit succ) |
boolean |
BackwardsInterproceduralCFG.isBranchTarget(Unit stmt,
Unit succ) |
boolean |
AbstractJimpleBasedICFG.isCallStmt(Unit u) |
boolean |
BackwardsInterproceduralCFG.isCallStmt(Unit stmt) |
boolean |
AbstractJimpleBasedICFG.isExitStmt(Unit u) |
boolean |
BackwardsInterproceduralCFG.isExitStmt(Unit stmt) |
boolean |
AbstractJimpleBasedICFG.isFallThroughSuccessor(Unit u,
Unit succ) |
boolean |
BackwardsInterproceduralCFG.isFallThroughSuccessor(Unit stmt,
Unit succ) |
boolean |
AbstractJimpleBasedICFG.isReachable(Unit u) |
boolean |
BackwardsInterproceduralCFG.isReachable(Unit u) |
boolean |
AbstractJimpleBasedICFG.isReturnSite(Unit n) |
boolean |
BackwardsInterproceduralCFG.isReturnSite(Unit n) |
boolean |
AbstractJimpleBasedICFG.isStartPoint(Unit u) |
boolean |
BackwardsInterproceduralCFG.isStartPoint(Unit stmt) |
boolean |
AbstractJimpleBasedICFG.setOwnerStatement(Unit u,
Body b) |
| Constructor and Description |
|---|
BackwardsInterproceduralCFG(BiDiInterproceduralCFG<Unit,SootMethod> fwICFG) |
| Constructor and Description |
|---|
ICFGDotVisualizer(String fileName,
Unit startPoint,
heros.InterproceduralCFG<Unit,SootMethod> icfg)
This class will save your ICFG in DOT format by traversing the ICFG Depth-first!
|
| Constructor and Description |
|---|
ICFGDotVisualizer(String fileName,
Unit startPoint,
heros.InterproceduralCFG<Unit,SootMethod> icfg)
This class will save your ICFG in DOT format by traversing the ICFG Depth-first!
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
SimpleMethodInfoFlowAnalysis.flowThrough(FlowSet<Pair<EquivalentValue,EquivalentValue>> in,
Unit unit,
FlowSet<Pair<EquivalentValue,EquivalentValue>> out) |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,Map<Value,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 |
LocalMustNotAliasAnalysis.flowThrough(HashMap<Local,Set<NewExpr>> in,
Unit unit,
HashMap<Local,Set<NewExpr>> out) |
protected void |
LocalMustAliasAnalysis.flowThrough(HashMap<Value,Integer> in,
Unit u,
HashMap<Value,Integer> out) |
protected void |
CastCheckEliminator.flowThrough(soot.jimple.toolkits.pointer.LocalTypeSet in,
Unit unit,
List<soot.jimple.toolkits.pointer.LocalTypeSet> outFallValues,
List<soot.jimple.toolkits.pointer.LocalTypeSet> outBranchValues)
This is the flow function as described in the assignment write-up.
|
protected void |
LocalMayAliasAnalysis.flowThrough(Set<Set<Value>> source,
Unit unit,
Set<Set<Value>> target) |
boolean |
LocalMayAliasAnalysis.mayAlias(Value v1,
Value v2,
Unit u)
Returns true if v1 and v2 may alias before u.
|
Set<Value> |
LocalMayAliasAnalysis.mayAliases(Value v,
Unit u)
Returns all values that may-alias with v before u.
|
protected void |
LocalMustAliasAnalysis.merge(Unit succUnit,
HashMap<Value,Integer> inMap1,
HashMap<Value,Integer> inMap2,
HashMap<Value,Integer> 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) |
| Constructor and Description |
|---|
LocalMustNotAliasAnalysis(DirectedGraph<Unit> directedGraph,
Body b) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
FastAvailableExpressionsAnalysis.flowThrough(FlowSet<Value> in,
Unit u,
FlowSet<Value> out) |
protected void |
SlowAvailableExpressionsAnalysis.flowThrough(FlowSet<Value> in,
Unit unit,
FlowSet<Value> out) |
protected void |
EqualUsesAnalysis.flowThrough(FlowSet in,
Unit unit,
FlowSet out)
Deprecated.
|
Chain |
AvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available after u.
|
Chain<EquivalentValue> |
SlowAvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available after u.
|
Chain<EquivalentValue> |
FastAvailableExpressions.getAvailableEquivsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
Chain |
AvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
Chain<EquivalentValue> |
SlowAvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
Chain<EquivalentValue> |
FastAvailableExpressions.getAvailableEquivsBefore(Unit u)
Returns a Chain containing the EquivalentValue objects corresponding to expressions available before u.
|
List |
AvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
List<UnitValueBoxPair> |
SlowAvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available after u.
|
List<UnitValueBoxPair> |
FastAvailableExpressions.getAvailablePairsAfter(Unit u)
Returns a List containing the EquivalentValue corresponding to expressions available after u.
|
List |
AvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
List<UnitValueBoxPair> |
SlowAvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
List<UnitValueBoxPair> |
FastAvailableExpressions.getAvailablePairsBefore(Unit u)
Returns a List containing the UnitValueBox pairs corresponding to expressions available before u.
|
| Constructor and Description |
|---|
FastAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
PessimisticAvailableExpressionsAnalysis(DirectedGraph<Unit> dg,
SootMethod m,
SideEffectTester st) |
SlowAvailableExpressionsAnalysis(DirectedGraph<Unit> dg) |
| Modifier and Type | Method and Description |
|---|---|
static Value |
SootFilter.binopRhs(Unit unit)
only lets binary RHS through.
|
protected void |
NotIsolatedAnalysis.flowThrough(FlowSet<EquivalentValue> in,
Unit unit,
FlowSet<EquivalentValue> out) |
protected void |
DelayabilityAnalysis.flowThrough(FlowSet<EquivalentValue> in,
Unit u,
FlowSet<EquivalentValue> out) |
protected void |
UpSafetyAnalysis.flowThrough(FlowSet<EquivalentValue> in,
Unit u,
FlowSet<EquivalentValue> out) |
protected void |
DownSafetyAnalysis.flowThrough(FlowSet<EquivalentValue> in,
Unit u,
FlowSet<EquivalentValue> out) |
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.
|
| Constructor and Description |
|---|
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,
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. |
LatestComputation(UnitGraph unitGraph,
DelayabilityAnalysis delayed,
Map<Unit,EquivalentValue> equivRhsMap)
given a DelayabilityAnalysis and the computations of each unit, calculates the latest computation-point for each
expression.
|
LatestComputation(UnitGraph unitGraph,
DelayabilityAnalysis delayed,
Map<Unit,EquivalentValue> equivRhsMap,
BoundedFlowSet<EquivalentValue> set)
given a DelayabilityAnalysis and the computations of each unit, calculates the latest computation-point for each
expression.
the equivRhsMap could be calculated on the fly, but it is very likely that it already exists (as
similar maps are used for calculating Earliestness, Delayed,...the shared set allows more efficient set-operations, when they the computation is merged with other analyses/computations. |
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,
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 | Method and Description |
|---|---|
protected Set<Unit> |
PegGraph.getExceHandlers() |
| Modifier and Type | Method and Description |
|---|---|
List<SootMethod> |
TargetMethodsFinder.find(Unit unit,
CallGraph cg,
boolean canBeNullList,
boolean canBeNative) |
boolean |
MhpTester.mayHappenInParallel(SootMethod m1,
Unit u1,
SootMethod m2,
Unit u2) |
boolean |
SynchObliviousMhpAnalysis.mayHappenInParallel(SootMethod m1,
Unit u1,
SootMethod m2,
Unit u2) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
MultiRunStatementsFinder.flowThrough(BitSet in,
Unit unit,
BitSet out) |
| Modifier and Type | Field and Description |
|---|---|
protected Unit |
JPegStmt.unit |
| Modifier and Type | Method and Description |
|---|---|
Unit |
JPegStmt.getUnit() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
JPegStmt.setUnit(Unit un) |
| Constructor and Description |
|---|
JoinStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
JPegStmt(String obj,
String na,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
MonitorEntryStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
MonitorExitStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
NotifyAllStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
NotifyStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
OtherStmt(String obj,
String na,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
StartStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
WaitStmt(String obj,
String ca,
Unit un,
UnitGraph ug,
SootMethod sm) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
SynchronizedRegionFinder.flowThrough(FlowSet<soot.jimple.toolkits.thread.synchronization.SynchronizedRegionFlowPair> in,
Unit unit,
FlowSet<soot.jimple.toolkits.thread.synchronization.SynchronizedRegionFlowPair> out)
OUT is the same as (IN minus killSet) plus the genSet.
|
protected void |
LockableReferenceAnalysis.flowThrough(soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo inInfo,
Unit u,
soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo outInfo) |
void |
LockAllocationBodyTransformer.redirectTraps(Body b,
Unit oldUnit,
Unit newUnit) |
| Modifier and Type | Method and Description |
|---|---|
InstanceFieldRef |
LockAllocationBodyTransformer.reconstruct(Body b,
PatchingChain<Unit> units,
InstanceFieldRef lock,
Stmt insertBefore,
boolean redirect) |
| Modifier and Type | Method and Description |
|---|---|
static Unit |
Util.findFirstNonIdentityUnit(Body b,
Stmt s)
Returns the first statement after all the "identity statements".
|
static Unit |
Util.findLastIdentityUnit(Body b,
Stmt s)
A new "normal" statement cannot be inserted in the middle of special "identity statements" (a = @parameter or b = @this
in Jimple).
|
| Modifier and Type | Method and Description |
|---|---|
Unit |
PiExpr.getCondStmt() |
Unit |
PhiExpr.getPred(int index)
Returns the control flow predecessor Unit for the given index into the PhiExpr.
|
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
PhiExpr.getPreds()
Returns a list of the control flow predecessor Units being tracked by this PhiExpr
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
PhiExpr.addArg(Value arg,
Unit predTailUnit)
Add the given argument associated with the given CFG predecessor.
|
ValueUnitPair |
PhiExpr.getArgBox(Unit predTailUnit)
Returns the argument pair corresponding to the given CFG predecessor.
|
int |
PhiExpr.getArgIndex(Unit predTailUnit)
Returns the index of the argument associated with the given control flow predecessor Unit.
|
static Local |
Shimple.getLhsLocal(Unit unit)
Returns the corresponding left Local if the unit is a Shimple node, null otherwise.
|
static PhiExpr |
Shimple.getPhiExpr(Unit unit)
Returns the corresponding PhiExpr if the unit is a Phi node, null otherwise.
|
static PiExpr |
Shimple.getPiExpr(Unit unit) |
Value |
PhiExpr.getValue(Unit predTailUnit)
Get the PhiExpr argument corresponding to the given control flow predecessor, returns null if not available.
|
static boolean |
Shimple.isPhiNode(Unit unit)
Returns true if the unit is a Phi node, false otherwise.
|
static boolean |
Shimple.isPiNode(Unit unit) |
PiExpr |
Shimple.newPiExpr(Local local,
Unit predicate,
Object targetKey) |
static void |
Shimple.redirectPointers(Unit oldLocation,
Unit newLocation)
Redirects PhiExpr pointers to the given Unit to the new Unit.
|
static void |
Shimple.redirectToPreds(Body body,
Unit remove)
If you are removing a Unit from a Unit chain which contains PhiExpr's, you might want to call this utility function in
order to update any PhiExpr pointers to the Unit to point to the Unit's predecessor(s).
|
boolean |
PhiExpr.removeArg(Unit predTailUnit)
Remove the argument corresponding to the given CFG predecessor.
|
boolean |
PhiExpr.setArg(int index,
Value arg,
Unit predTailUnit)
Modify the PhiExpr argument at the given index with the given information.
|
void |
PiExpr.setCondStmt(Unit cs) |
boolean |
PhiExpr.setPred(int index,
Unit predTailUnit)
Update the CFG predecessor associated with the PhiExpr argument at the given index.
|
boolean |
PhiExpr.setValue(Unit predTailUnit,
Value arg)
Locate the argument associated with the given CFG predecessor unit and set the value.
|
| Modifier and Type | Method and Description |
|---|---|
PhiExpr |
Shimple.newPhiExpr(List<Value> args,
List<Unit> preds)
Create a PhiExpr with the provided list of Values (Locals or Constants) and the corresponding control flow predecessor
Blocks.
|
| Modifier and Type | Field and Description |
|---|---|
protected Map<UnitBox,Unit> |
SPatchingChain.boxToPhiNode
Map from UnitBox to the Phi node owning it.
|
protected Set<Unit> |
SPatchingChain.phiNodeSet
Set of the values of boxToPhiNode.
|
protected Map<Unit,ValueUnitPair> |
SPhiExpr.predToPair |
protected Map<Unit,Block> |
PhiNodeManager.unitToBlock |
| Modifier and Type | Method and Description |
|---|---|
Unit |
SPiExpr.getCondStmt() |
Unit |
SPhiExpr.getPred(int index) |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
SPhiExpr.getPreds() |
Map<Unit,Block> |
PhiNodeManager.getUnitToBlockMap(BlockGraph blocks)
Convenience function that maps units to blocks.
|
Iterator<Unit> |
SPatchingChain.iterator() |
Iterator<Unit> |
SPatchingChain.iterator(Unit u) |
Iterator<Unit> |
SPatchingChain.iterator(Unit head,
Unit tail) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
SPatchingChain.add(Unit o) |
boolean |
SPhiExpr.addArg(Value arg,
Unit predTailUnit) |
void |
SPatchingChain.addFirst(Unit u) |
void |
SPatchingChain.addLast(Unit u) |
boolean |
PhiNodeManager.dominates(Unit champ,
Unit challenger)
Returns true if champ dominates challenger.
|
ValueUnitPair |
SPhiExpr.getArgBox(Unit predTailUnit) |
int |
SPhiExpr.getArgIndex(Unit predTailUnit) |
Value |
SPhiExpr.getValue(Unit predTailUnit) |
void |
SPatchingChain.insertAfter(List<Unit> toInsert,
Unit point) |
void |
SPatchingChain.insertAfter(Unit toInsert,
Unit point) |
void |
SPatchingChain.insertBefore(List<Unit> toInsert,
Unit point) |
void |
SPatchingChain.insertBefore(Unit toInsert,
Unit point) |
Iterator<Unit> |
SPatchingChain.iterator(Unit u) |
Iterator<Unit> |
SPatchingChain.iterator(Unit head,
Unit tail) |
void |
PiNodeManager.piHandleSwitchStmt(Local local,
Unit u) |
protected void |
SPatchingChain.processPhiNode(Unit o) |
boolean |
SPatchingChain.remove(Unit obj) |
boolean |
SPhiExpr.removeArg(Unit predTailUnit) |
boolean |
SPhiExpr.setArg(int index,
Value arg,
Unit predTailUnit) |
void |
SPiExpr.setCondStmt(Unit pred) |
boolean |
SPhiExpr.setPred(int index,
Unit predTailUnit) |
void |
SValueUnitPair.setUnit(Unit u) |
boolean |
SPhiExpr.setValue(Unit predTailUnit,
Value arg) |
void |
SPatchingChain.swapWith(Unit out,
Unit in) |
| Modifier and Type | Method and Description |
|---|---|
void |
SPatchingChain.insertAfter(List<Unit> toInsert,
Unit point) |
void |
SPatchingChain.insertBefore(List<Unit> toInsert,
Unit point) |
| Constructor and Description |
|---|
SPiExpr(Value v,
Unit u,
Object o) |
SValueUnitPair(Value value,
Unit unit) |
| Constructor and Description |
|---|
SPatchingChain(Body aBody,
Chain<Unit> aChain) |
SPhiExpr(List<Value> args,
List<Unit> preds)
Create a Phi expression from the given list of Values and Blocks.
|
| Modifier and Type | Field and Description |
|---|---|
protected Map<Value,List<Unit>> |
ShimpleLocalDefs.localToDefs |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
ShimpleLocalDefs.getDefsOf(Local l)
Unconditionally returns the definition site of a local (as a singleton list).
|
List<Unit> |
ShimpleLocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition site for a Local at a certain point (Unit) in a method as a singleton list.
|
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
ShimpleLocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition site for a Local at a certain point (Unit) in a method as a singleton list.
|
List |
ShimpleLocalUses.getUsesOf(Unit unit)
If a Local is defined in the Unit, returns all the uses of that Local as a list of UnitValueBoxPairs, each containing a
Unit that uses the local and the corresponding ValueBox containing the Local.
|
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,Unit> |
TryCatchTag.handlerUnitToFallThroughUnit |
protected Map<Unit,Unit> |
TryCatchTag.handlerUnitToFallThroughUnit |
protected List<Unit> |
CodeAttribute.mUnits |
| Modifier and Type | Method and Description |
|---|---|
Unit |
TryCatchTag.getFallThroughUnitOf(Unit handlerUnit) |
| Modifier and Type | Method and Description |
|---|---|
void |
ImportantTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Decide whether this tag should be aggregated by this aggregator.
|
void |
LineNumberTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
void |
FirstTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Decide whether this tag should be aggregated by this aggregator.
|
abstract void |
TagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Aggregate the given tag assigned to the given unit
|
Unit |
TryCatchTag.getFallThroughUnitOf(Unit handlerUnit) |
void |
TryCatchTag.register(Unit handler,
Unit fallThrough) |
| Modifier and Type | Method and Description |
|---|---|
void |
ImportantTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Decide whether this tag should be aggregated by this aggregator.
|
void |
LineNumberTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units) |
void |
FirstTagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Decide whether this tag should be aggregated by this aggregator.
|
abstract void |
TagAggregator.considerTag(Tag t,
Unit u,
LinkedList<Tag> tags,
LinkedList<Unit> units)
Aggregate the given tag assigned to the given unit
|
String |
CodeAttribute.getJasminValue(Map<Unit,String> instToLabel)
Generates Jasmin Value String
|
abstract String |
JasminAttribute.getJasminValue(Map<Unit,String> instToLabel) |
| Constructor and Description |
|---|
CodeAttribute(String name,
List<Unit> units,
List<Tag> tags)
Create an attribute object with the name and lists of unit-tag pairs.
|
| Modifier and Type | Method and Description |
|---|---|
Set<Unit> |
DexArrayInitDetector.getIgnoreUnits() |
| Modifier and Type | Method and Description |
|---|---|
List<Value> |
DexArrayInitDetector.getValuesForArrayInit(Unit arrayInit) |
| Modifier and Type | Method and Description |
|---|---|
void |
StmtVisitor.finalizeInstructions(Set<Unit> trapReferences) |
static int |
SootToDexUtils.getOutWordCount(Collection<Unit> units) |
static void |
TrapSplitter.removePotentiallyUselassTraps(Body b,
Set<Unit> potentiallyUselessTrapHandlers)
Changes the given body so that trap handlers, which are contained in the given set, are removed in case they are not
referenced by any trap.
|
protected void |
DexPrinter.toInstructions(Collection<Unit> units,
StmtVisitor stmtV,
Set<Unit> trapReferences) |
protected void |
DexPrinter.toInstructions(Collection<Unit> units,
StmtVisitor stmtV,
Set<Unit> trapReferences) |
| Modifier and Type | Field and Description |
|---|---|
protected List<Unit> |
SwitchPayload.targets |
| Constructor and Description |
|---|
PackedSwitchPayload(int firstKey,
List<Unit> targets) |
SparseSwitchPayload(int[] keys,
List<Unit> targets) |
SwitchPayload(List<Unit> targets) |
| Modifier and Type | Method and Description |
|---|---|
Set<Unit> |
TrapTransformer.getUnitsWithMonitor(UnitGraph ug) |
| Modifier and Type | Method and Description |
|---|---|
ThrowableSet |
UnitThrowAnalysis.mightThrow(Unit u) |
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) |
ThrowableSet |
ThrowAnalysis.mightThrow(Unit u)
Returns a set representing the
Throwable types that the specified unit might throw. |
protected boolean |
TrapTightener.mightThrowTo(ExceptionalUnitGraph g,
Unit u,
Trap t)
|
| Modifier and Type | Field and Description |
|---|---|
protected List<Unit> |
UnitGraph.heads |
protected Chain<Unit> |
BlockGraph.mUnits |
protected List<Unit> |
UnitGraph.tails |
protected Chain<Unit> |
UnitGraph.unitChain |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalPreds |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalPreds |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalSuccs |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToExceptionalSuccs |
protected Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> |
ExceptionalUnitGraph.unitToExceptionDests |
protected Map<Unit,List<Unit>> |
UnitGraph.unitToPreds |
protected Map<Unit,List<Unit>> |
UnitGraph.unitToPreds |
protected Map<Unit,List<Unit>> |
UnitGraph.unitToSuccs |
protected Map<Unit,List<Unit>> |
UnitGraph.unitToSuccs |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalPreds |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalPreds |
protected Map<Unit,List<Unit>> |
ExceptionalUnitGraph.unitToUnexceptionalSuccs |
protected Map<Unit,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 occurring immediately before some other Unit in the block.
|
Unit |
Block.getSuccOf(Unit aItem)
Returns the Unit occurring immediately after some other Unit in the block.
|
Unit |
Block.getTail()
Returns the last unit in this block.
|
| 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 Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> |
ExceptionalUnitGraph.buildExceptionDests(ThrowAnalysis throwAnalysis)
Utility method used in the construction of
UnitGraph variants which include
exceptional control flow. |
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected Set<Unit> |
BlockGraph.computeLeaders(UnitGraph unitGraph)
|
protected Set<Unit> |
ArrayRefBlockGraph.computeLeaders(UnitGraph unitGraph)
|
protected Set<Unit> |
ZonedBlockGraph.computeLeaders(UnitGraph unitGraph)
|
protected FlowSet<Unit> |
PostDominatorAnalysis.entryInitialFlow()
Deprecated.
|
protected FlowSet<Unit> |
DominatorAnalysis.entryInitialFlow()
Deprecated.
|
List<Unit> |
ExceptionalUnitGraph.getExceptionalPredsOf(Unit u) |
List<Unit> |
ExceptionalUnitGraph.getExceptionalSuccsOf(Unit u) |
List<Unit> |
UnitGraph.getExtendedBasicBlockPathBetween(Unit from,
Unit to)
Look for a path in graph, from def to use.
|
List<Unit> |
UnitGraph.getHeads() |
List<Unit> |
UnitGraph.getPredsOf(Unit u) |
List<Unit> |
UnitGraph.getSuccsOf(Unit u) |
List<Unit> |
UnitGraph.getTails() |
List<Unit> |
ExceptionalUnitGraph.getUnexceptionalPredsOf(Unit u) |
List<Unit> |
ExceptionalUnitGraph.getUnexceptionalSuccsOf(Unit u) |
Iterator<Unit> |
Block.iterator()
Returns an iterator for the linear chain of Units that make up the block.
|
Iterator<Unit> |
UnitGraph.iterator() |
protected FlowSet<Unit> |
PostDominatorAnalysis.newInitialFlow()
Deprecated.
|
protected FlowSet<Unit> |
DominatorAnalysis.newInitialFlow()
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
UnitGraph.addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
PostDominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
List<Unit> |
ExceptionalUnitGraph.getExceptionalPredsOf(Unit u) |
List<Unit> |
ExceptionalUnitGraph.getExceptionalSuccsOf(Unit u) |
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. |
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 occurring immediately before some other Unit in the block.
|
List<Unit> |
UnitGraph.getPredsOf(Unit u) |
Unit |
Block.getSuccOf(Unit aItem)
Returns the Unit occurring immediately after some other Unit in the block.
|
List<Unit> |
UnitGraph.getSuccsOf(Unit u) |
List<Unit> |
ExceptionalUnitGraph.getUnexceptionalPredsOf(Unit u) |
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 occurring before some other Unit in the Block.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
UnitGraph.addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
protected void |
UnitGraph.addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG.
|
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 void |
TrapUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
TrapUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
TrapUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
TrapUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
ClassicCompleteUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
ClassicCompleteUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
ClassicCompleteUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
ClassicCompleteUnitGraph.buildExceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Method to compute the edges corresponding to exceptional control flow.
|
protected Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected Set<Unit> |
ExceptionalUnitGraph.buildExceptionalEdges(ThrowAnalysis throwAnalysis,
Map<Unit,Collection<ExceptionalUnitGraph.ExceptionDest>> unitToExceptionDests,
Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
boolean omitExceptingUnitEdges)
Method to compute the edges corresponding to exceptional control flow.
|
protected void |
UnitGraph.buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected void |
UnitGraph.buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Utility method for UnitGraph constructors.
|
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected Map<Unit,List<Unit>> |
UnitGraph.combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
|
protected void |
PostDominatorAnalysis.copy(FlowSet<Unit> source,
FlowSet<Unit> dest)
Deprecated.
|
protected void |
PostDominatorAnalysis.copy(FlowSet<Unit> source,
FlowSet<Unit> dest)
Deprecated.
|
protected void |
DominatorAnalysis.copy(FlowSet<Unit> source,
FlowSet<Unit> dest)
Deprecated.
|
protected void |
DominatorAnalysis.copy(FlowSet<Unit> source,
FlowSet<Unit> dest)
Deprecated.
|
protected void |
PostDominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
protected void |
PostDominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.flowThrough(FlowSet<Unit> in,
Unit s,
FlowSet<Unit> out)
Deprecated.
|
protected void |
PostDominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
protected void |
PostDominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
protected void |
PostDominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
protected void |
DominatorAnalysis.merge(FlowSet<Unit> in1,
FlowSet<Unit> in2,
FlowSet<Unit> out)
Deprecated.
|
| 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 Hashtable<Unit,Unit> |
EnhancedUnitGraph.handler2header |
protected Hashtable<Unit,Unit> |
EnhancedUnitGraph.handler2header |
protected Hashtable<Unit,Unit> |
EnhancedUnitGraph.try2nop |
protected 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 |
|---|---|
Hashtable<Unit,Region> |
RegionAnalysis.getUnit2RegionMap() |
List<Unit> |
Region.getUnits() |
List<Unit> |
PDGRegion.getUnits() |
List<Unit> |
IRegion.getUnits() |
List<Unit> |
Region.getUnits(Unit from,
Unit to) |
List<Unit> |
PDGRegion.getUnits(Unit from,
Unit to) |
List<Unit> |
IRegion.getUnits(Unit from,
Unit to) |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
Region.getUnits(Unit from,
Unit to) |
List<Unit> |
PDGRegion.getUnits(Unit from,
Unit to) |
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 |
|---|---|
Unit |
UnitValueBoxPair.unit |
protected Unit |
ValueUnitPair.unit |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Unit,List<A>> |
BranchedFlowAnalysis.unitToAfterBranchFlow |
protected Map<Unit,List<A>> |
BranchedFlowAnalysis.unitToAfterFallFlow
Maps graph nodes to OUT sets.
|
protected Map<Unit,List> |
GuaranteedDefs.unitToGuaranteedDefs |
| Modifier and Type | Method and Description |
|---|---|
Unit |
LocalUnitPair.getUnit() |
Unit |
UnitValueBoxPair.getUnit() |
Unit |
ValueUnitPair.getUnit() |
| Modifier and Type | Method and Description |
|---|---|
List<Unit> |
SmartLocalDefs.getDefsOf(Local l) |
List<Unit> |
LocalDefs.getDefsOf(Local l)
Returns the definition sites for a Local merged over all points in a method.
|
List<Unit> |
SimpleLocalDefs.getDefsOf(Local l) |
List<Unit> |
CombinedDUAnalysis.getDefsOf(Local l) |
List<Unit> |
SmartLocalDefs.getDefsOfAt(Local l,
Unit s) |
List<Unit> |
LocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition sites for a Local at a certain point (Unit) in a method.
|
List<Unit> |
SimpleLocalDefs.getDefsOfAt(Local l,
Unit s) |
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,
List<A> fallOut,
List<A> branchOuts)
Given the merge of the
in sets, compute the fallOut and branchOuts set for
s. |
protected void |
InitAnalysis.flowThrough(FlowSet<Local> in,
Unit unit,
FlowSet<Local> out) |
protected void |
CombinedDUAnalysis.flowThrough(FlowSet<ValueBox> out,
Unit u,
FlowSet<ValueBox> in) |
List<A> |
BranchedFlowAnalysis.getBranchFlowAfter(Unit s) |
List<Unit> |
SmartLocalDefs.getDefsOfAt(Local l,
Unit s) |
List<Unit> |
LocalDefs.getDefsOfAt(Local l,
Unit s)
Returns the definition sites for a Local at a certain point (Unit) in a method.
|
List<Unit> |
SimpleLocalDefs.getDefsOfAt(Local l,
Unit s) |
List<Unit> |
CombinedDUAnalysis.getDefsOfAt(Local l,
Unit s) |
A |
BranchedFlowAnalysis.getFallFlowAfter(Unit s) |
List |
GuaranteedDefs.getGuaranteedDefs(Unit s)
Returns a list of locals guaranteed to be defined at (just before) program point s.
|
List<Local> |
LiveLocals.getLiveLocalsAfter(Unit s)
Returns the list of Locals that are live after the specified Unit.
|
List<Local> |
SimpleLiveLocals.getLiveLocalsAfter(Unit s) |
List<Local> |
CombinedDUAnalysis.getLiveLocalsAfter(Unit u) |
List<Local> |
LiveLocals.getLiveLocalsBefore(Unit s)
Returns the list of Locals that are live before the specified Unit.
|
List<Local> |
SimpleLiveLocals.getLiveLocalsBefore(Unit s) |
List<Local> |
CombinedDUAnalysis.getLiveLocalsBefore(Unit u) |
List<UnitValueBoxPair> |
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.
|
List<UnitValueBoxPair> |
CombinedDUAnalysis.getUsesOf(Unit u) |
List<UnitValueBoxPair> |
LocalUses.getUsesOf(Unit s)
Returns a list of the Units that use the Local that is defined by a given Unit.
|
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 |
|---|---|
Set<Map.Entry<Unit,T>> |
UnitMap.entrySet() |
Set<Unit> |
UnitMap.keySet() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract T |
UnitMap.mapTo(Unit unit)
maps a unit to an object.
|
T |
UnitMap.put(Unit key,
T value) |
| Modifier and Type | Method and Description |
|---|---|
void |
UnitMap.putAll(Map<? extends Unit,? extends T> t) |
| Constructor and Description |
|---|
UnitValidationException(Unit concerned,
Body body,
String strMessage)
Creates a new ValidationException, treated as an error.
|
UnitValidationException(Unit concerned,
Body body,
String strMessage,
boolean isWarning)
Creates a new ValidationException.
|
Copyright © 2020 Soot OSS. All rights reserved.