| Package | Description |
|---|---|
| soot.asm | |
| soot.baf.toolkits.base |
A toolkit to optimize the Baf IR.
|
| soot.dexpler | |
| soot.grimp.toolkits.base |
A toolkit to optimize the Grimp IR.
|
| soot.javaToJimple.toolkits | |
| soot.jbco.bafTransformations | |
| soot.jbco.jimpleTransformations | |
| soot.jimple.spark.fieldrw | |
| soot.jimple.toolkits.annotation |
A toolkit to annotate classfiles with array and null bounds check information.
|
| soot.jimple.toolkits.annotation.arraycheck |
Classes that carry out an analysis to determine whether or not array bounds
checks are necessary.
|
| soot.jimple.toolkits.annotation.callgraph | |
| soot.jimple.toolkits.annotation.defs | |
| soot.jimple.toolkits.annotation.liveness | |
| soot.jimple.toolkits.annotation.logic | |
| 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.profiling | |
| 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.graph |
A set of utility classes for program transformation and optimizations.
|
| 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.synchronization | |
| soot.jimple.toolkits.typing |
Implements a typing algorithm for Jimple.
|
| soot.shimple.toolkits.scalar |
Some analyses based on Shimple.
|
| soot.tagkit |
Classes supporting classfile annotation in Soot.
|
| soot.toDex | |
| soot.toolkits.exceptions | |
| soot.toolkits.scalar |
A number of scalar optimizations, and the flow analysis framework.
|
| soot.tools |
Various extensions to Soot that can be executed instead of soot.Main.
|
| Modifier and Type | Class and Description |
|---|---|
class |
CastAndReturnInliner
Transformers that inlines returns that cast and return an object.
|
| Modifier and Type | Class and Description |
|---|---|
class |
LoadStoreOptimizer |
class |
PeepholeOptimizer
Driver class to run peepholes on the Baf IR.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractNullTransformer
Abstract base class for
DexNullTransformer and DexIfTransformer. |
class |
DexIfTransformer
BodyTransformer to find and change definition of locals used within an if
which contains a condition involving two locals ( and not only one local as
in DexNullTransformer).
|
class |
DexNullArrayRefTransformer
If Dalvik bytecode contains statements using a base array which is always
null, Soot's fast type resolver will fail with the following exception:
"Exception in thread "
main" java.lang.RuntimeException: Base of array reference is not an array!"
Those statements are replaced by a throw statement (this is what will happen
in practice if the code is executed).
|
class |
DexNullThrowTransformer
Some Android applications throw null references, e.g.,
a = null; throw a;
This will make unit graph construction fail as no targets of the throw
statement can be found.
|
class |
DexNullTransformer
BodyTransformer to find and change IntConstant(0) to NullConstant where
locals are used as objects.
|
class |
DexNumTransformer
BodyTransformer to find and change initialization type of Jimple variables.
|
class |
DexRefsChecker |
class |
DexReturnInliner
BodyTransformer to inline jumps to return statements.
|
class |
DexReturnValuePropagator |
class |
DexTransformer |
class |
TrapMinimizer
Transformer that splits traps for Dalvik whenever
a statements within the trap cannot reach the trap's handler.
|
| Modifier and Type | Class and Description |
|---|---|
class |
ConstructorFolder |
| Modifier and Type | Class and Description |
|---|---|
class |
CondTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
AddJSRs |
class |
BAFCounter |
class |
BafLineNumberer |
class |
BAFPrintout |
class |
ConstructorConfuser |
class |
Counter |
class |
FindDuplicateSequences |
class |
FixUndefinedLocals |
class |
IfNullToTryCatch |
class |
IndirectIfJumpsToCaughtGotos |
class |
Jimple2BafLocalBuilder |
class |
LocalsToBitField |
class |
MoveLoadsAboveIfs |
class |
RemoveRedundantPushStores |
class |
TryCatchCombiner |
class |
UpdateConstantsToFields |
class |
WrapSwitchesInTrys |
| Modifier and Type | Class and Description |
|---|---|
class |
AddSwitches |
class |
ArithmeticTransformer |
class |
CollectJimpleLocals |
class |
GotoInstrumenter |
| Modifier and Type | Class and Description |
|---|---|
class |
FieldReadTagAggregator |
class |
FieldTagAggregator |
class |
FieldTagger |
class |
FieldWriteTagAggregator |
| Modifier and Type | Class and Description |
|---|---|
class |
AvailExprTagger
A body transformer that records avail expression
information in tags.
|
class |
DominatorsTagger
A body transformer that records avail expression
information in tags.
|
| Modifier and Type | Class and Description |
|---|---|
class |
ArrayBoundsChecker |
| Modifier and Type | Class and Description |
|---|---|
class |
CallGraphTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
ReachingDefsTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
LiveVarsTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
LoopFinder |
class |
LoopInvariantFinder |
| Modifier and Type | Class and Description |
|---|---|
class |
NullCheckEliminator |
class |
NullPointerChecker |
class |
NullPointerColorer |
| Modifier and Type | Class and Description |
|---|---|
class |
ParityTagger
A body transformer that records parity analysis
information in tags.
|
| Modifier and Type | Class and Description |
|---|---|
class |
ProfilingGenerator |
| Modifier and Type | Class and Description |
|---|---|
class |
ArrayNullTagAggregator
The aggregator for ArrayNullCheckAttribute.
|
| Modifier and Type | Class and Description |
|---|---|
class |
Aggregator |
class |
ExceptionChecker |
class |
JimpleConstructorFolder |
class |
PartialConstructorFolder |
class |
ThisInliner |
| Modifier and Type | Class and Description |
|---|---|
class |
ClinitElimTransformer |
class |
UnreachableMethodTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
CriticalEdgeRemover
removes all critical edges.
A critical edge is an edge from Block A to block B, if B has more than one predecessor and A has more the one successor. As an example: If we wanted a computation to be only on the path A->B this computation must be directly on the edge. |
class |
LoopConditionUnroller
"unrolls" the condition of while/for loops.
before the first test of a while-loop, we can't be sure, if the body will be taken or not, and several optimizations (especially LCM) can't be done. |
| Modifier and Type | Class and Description |
|---|---|
class |
CastCheckEliminatorDumper
A body transformer that simply calls the CastCheckEliminator analysis.
|
class |
DependenceTagAggregator |
class |
FieldRWTagger |
class |
ParameterAliasTagger
Adds colour tags to indicate potential aliasing between method parameters.
|
class |
SideEffectTagger |
| Modifier and Type | Class and Description |
|---|---|
class |
CommonSubexpressionEliminator
Runs an available expressions analysis on a body, then
eliminates common subexpressions.
|
class |
ConditionalBranchFolder |
class |
ConstantCastEliminator
Transformer for removing unnecessary casts on primitive values.
|
class |
ConstantPropagatorAndFolder
Does constant propagation and folding.
|
class |
CopyPropagator |
class |
DeadAssignmentEliminator |
class |
EmptySwitchEliminator
Removes empty switch statements which always take the default action from a
method body, i.e.
|
class |
LocalNameStandardizer |
class |
NopEliminator |
class |
UnconditionalBranchFolder |
class |
UnreachableCodeEliminator |
| Modifier and Type | Class and Description |
|---|---|
class |
BusyCodeMotion
Performs a partial redundancy elimination (= code motion).
|
class |
LazyCodeMotion
Performs a partial redundancy elimination (= code motion).
|
| Modifier and Type | Class and Description |
|---|---|
class |
LockAllocationBodyTransformer |
| Modifier and Type | Class and Description |
|---|---|
class |
TypeAssigner
This transformer assigns types to local variables.
|
| Modifier and Type | Class and Description |
|---|---|
class |
SConstantPropagatorAndFolder
A powerful constant propagator and folder based on an algorithm
sketched by Cytron et al that takes conditional control flow into
account.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FirstTagAggregator
A tag aggregator that associates a tag with the first instruction
that is tagged with it.
|
class |
ImportantTagAggregator
A tag aggregator that associates a tag with the most important
instruction that is tagged with it.
|
class |
LineNumberTagAggregator
The aggregator for LineNumberTable attribute.
|
class |
TagAggregator
Interface to aggregate tags of units.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FastDexTrapTightener
Tries may not start or end at units which have no corresponding Dalvik
instructions such as IdentityStmts.
|
class |
SynchronizedMethodTransformer
The Dalvik VM requires synchronized methods to explicitly enter a monitor and
leave it in a finally block again after execution.
|
class |
TrapSplitter
Transformer that splits nested traps for Dalvik which does not support
hierarchies of traps.
|
| Modifier and Type | Class and Description |
|---|---|
class |
TrapTightener
|
class |
TrapTransformer
Common abstract base class for all body transformers that change the trap
list to, e.g., minimize the trap list
|
| Modifier and Type | Class and Description |
|---|---|
class |
LocalPacker
A BodyTransformer that attemps to minimize the number of local variables used in
Body by 'reusing' them when possible.
|
class |
LocalSplitter
A BodyTransformer that attemps to indentify and separate uses of a local
variable that are independent of each other.
|
class |
UnusedLocalEliminator
A BodyTransformer that removes all unused local variables from a given Body.
|
| Modifier and Type | Class and Description |
|---|---|
class |
CFGViewer
A utility class for generating dot graph file for a control flow graph
|