Translating Jimple code into intermediate representation.


Interface Summary
AbstractDispatchStrategy Strategy for finding the set of possible targets of an instance invocation.
AssertionCreator Analyzes the conditions of if and switch statements and produces corresponding assertion statement for the intermediate program.
IntermediateFactory This is a Facade pattern, used by StatementTranslatorImpl and MethodCallTranslator.
Jimple2IntermediateFactory A configuration for the jimple-to-intermediate translation.
MethodCallTranslator Handles certain method calls specially by creating intermediate statements for them.
MethodTranslator Translates the bodies of jimple-methods into intermediate form.
StatementTranslator Translates individual jimple-statements into intermediate code, which is put into an IntermediateFactory.
StatementTranslatorFacade Handles translation of statements when requested by MethodTranslator.
StaticStringTypes Provides the static string types of return values, parameters, and fields.
TaintAnalysisStrategy Used for taint analysis.
TranslationContext Provides information from the higher-level aspects of the analysis to lower-level aspects.

Class Summary
AbstractDispatchClassHierarchy Finds the possible targets of an invocation using the class hierarchy of the application.
ApplicationMethodCallTranslator Calls to non-external methods and constructors are translated to Call statements.
AssertionBranch A subgraph containing assertions.
AssertionBranches A pair of assertion branches (AssertionBranch); corresponding to the true and false outcomes of a branching condition, respectively.
Automatons Provides automatons for common Java types.
BuiltinMethodCallTranslator Translates calls to methods declared in String, StringBuffer, StringBuilder, and Object into statements, modelling them as precisely as possible.
CompositeMethodCallTranslator Groups multiple translators together.
ControlFlowBuilder Utility class assisting in the construction of method bodies.
ExprAnswerVisitor<Q,A> Jimple visitor pattern that takes an auxillary parameter and has a return value.
HotspotInfo Contains a Hotspot statement and information about which jimple-expression, Java source file, class, method, and line number it was originally defined at.
HotspotValueBoxPair Contains a Hotspot statement and the ValueBox holding the expression that was originally marked as the hotspot.
Jimple2Intermediate Converter from Jimple code to intermediate representation.
NaiveMethodCallTranslator Method-call translator that can't handle any methods.
PrintClassHierarchy Prints all ancestor types of a given class or interface.
ResolverMethodCallTranslator Uses a list of Resolver strategies to translate method calls.
StatementTranslatorFacadeImpl Acts as the middle-man between MethodTranslator and StatementTranslatorImpl.
StatementTranslatorImpl Translates Jimple-expressions and -statements into Statements in intermediate form.
StaticStringTypesNull Defines no static string types.
ThisPointerAnalysis Determines which variables definitely refer to this at each program point.
TranslatedStatement Contains the entry and exit points for the control-flow graph of a single translated jimple-statement, and a list of all the Hotspot statements within.
Types Contains static methods for converting Java types into Intermediate types.
VariableManager Keeps a mapping from soot locals and fields, to their corresponding intermediate locals and fields.

Package Description

Translating Jimple code into intermediate representation.

Intermediate representation (IR) is simplified compared to the Jimple code in the following ways:

This code may be used under the terms of the GNU General Public License.

Anders Møller <>, Aske Simon Christensen <>, Asger Feldthaus <>

Copyright © 2003-2009 Anders Møller, Aske Simon Christensen, Asger Feldthaus.