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.
|
class |
StoreChainOptimizer
Due to local packing, we may have chains of assignments to the same local.
|
Modifier and Type | Class and Description |
---|---|
class |
AbstractNullTransformer
Abstract base class for
DexNullTransformer and DexIfTransformer . |
class |
DexArrayInitReducer
Transformer that simplifies array initializations.
|
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 |
DexJumpChainShortener
Transformer for reducing goto chains.
|
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 |
DexReturnPacker
This transformer is the inverse of the DexReturnInliner.
|
class |
DexReturnValuePropagator |
class |
DexTransformer |
class |
DexTrapStackFixer
Transformer to ensure that all exception handlers pull the exception object.
|
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 |
FieldStaticnessCorrector |
class |
IdentityCastEliminator
Transformer that removes unnecessary identity casts such as
$i3 = (int) $i3
when $i3 is already of type "int".
|
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
|