All Classes and Interfaces
Class
Description
Constants used as "access flags" in various places in classes, and
related utilities.
Map from addresses to addresses, where addresses are all
int
s.Interface for a binary output destination that may be augmented
with textual annotations.
An annotation.
An annotation on an element of a class.
Single annotation, which consists of a type and a set of name-value
element pairs.
Parser for annotations.
List of
Annotation
instances.Per-class directory of annotations.
Set of annotations, where no annotation type appears more than once.
Indirect reference to an
AnnotationSetItem
.List of
Annotations
instances.Utility class for dealing with annotations.
Visibility scope of an annotation.
Pseudo-instruction which holds fill array data.
Attribute class for
AnnotationDefault
attributes.Attribute class for standard
AttBootstrapMethods
attributes.Attribute class for standard
Code
attributes.Attribute class for standard
ConstantValue
attributes.Attribute class for standard
Deprecated
attributes.Attribute class for standards-track
EnclosingMethod
attributes.Attribute class for standard
Exceptions
attributes.Attribute class for standard
InnerClasses
attributes.Attribute class for standard
LineNumberTable
attributes.Attribute class for standard
LocalVariableTable
attributes.Attribute class for standard
LocalVariableTypeTable
attributes.Interface representing attributes of class files (directly or indirectly).
Factory capable of instantiating various
Attribute
subclasses
depending on the context and name.Interface for lists of attributes.
Attribute class for standard
RuntimeInvisibleAnnotations
attributes.Attribute class for standard
RuntimeInvisibleParameterAnnotations
attributes.Attribute class for standard
RuntimeVisibleAnnotations
attributes.Attribute class for standard
RuntimeVisibleParameterAnnotations
attributes.Attribute class for standards-track
Signature
attributes.Attribute class for standard
SourceDebugExtension
attributes.Attribute class for standard
SourceFile
attributes.Attribute class for standard
Synthetic
attributes.Base class for annotations attributes.
Base implementation of
Attribute
, which directly stores
the attribute name but leaves the rest up to subclasses.Base implementation of
CodeCursor
.Base class for the various human-friendly dumpers.
Base attribute class for standard
LocalVariableTable
and LocalVariableTypeTable
attributes.Base implementation of
Machine
.Base class for parameter annotation list attributes.
Basic block of register-based instructions.
BasicBlock visitor interface
Utility that identifies basic blocks in bytecode.
List of
BasicBlock
instances.This class maps one register space into another, with
each mapping built up individually and added via addMapping()
A set of integers, represented by a bit set
Utilities for treating
int[]
s as bit sets.Container for the set of
CodeAddress
instances associated with
the blocks of a particular method.Utility to dump basic block info from methods in a human-friendly form.
List of bootstrap method arguments, which are part of the contents of
BootstrapMethods
attributes.List of bootstrap method entries, which are the contents of
BootstrapMethods
attributes.Wrapper for a
byte[]
, which provides read-only access and
can "reveal" a partial slice of the underlying array.Helper interface that allows one to get the cursor (of a stream).
Helper class for
ByteArray.makeDataInputStream()
.Implementation of
AnnotatedOutput
which stores the written data
into a byte[]
.Representation of a basic block in a bytecode array.
List of
ByteBlock
instances.List of catch entries, that is, the elements of an "exception table,"
which is part of a standard
Code
attribute.Item in an exception handler list.
Bytecode array, which is part of a standard
Code
attribute.Base implementation of
BytecodeArray.Visitor
, which has empty method
bodies for all methods.Instruction visitor interface.
A byte source.
Constants and utility methods for dealing with bytecode arrays at an
opcode level.
A byte sink.
A call_site_id_item: https://source.android.com/devices/tech/dalvik/dex-format#call-site-id-item
Representation of a call site reference in a DEX file.
A section in the DEX file for call site identifiers.
Representation of a call site in a DEX file.
Interface for the construction of
CatchTable
instances.Ordered list of (exception type, handler address) entries.
Entry in the list.
List of exception handlers (tuples of covered range, catch type,
handler address) for a particular piece of code.
Table of catch entries.
Entry in a catch list.
A class to contain options passed into dex.cf
Static method that turns
byte[]
s containing Java
classfiles into ClassDefItem
instances.Representation of all the parts of a Dalvik class that are generally
"inflated" into an in-memory representation at runtime.
A type definition.
Representation of a Dalvik class, which is basically a set of
members (fields or methods) along with a few more pieces of
information.
Class definitions list section of a
.dex
file.Utility to dump the contents of class files in a human-friendly form.
Interface for things which purport to be class files or reasonable
facsimiles thereof.
Opens all the class files found in a class path element.
Callback interface for
ClassOpener
.Filter interface for
ClassOpener
.Tool to find direct class references to other classes.
Pseudo-instruction which is used to track an address within a code
array.
Cursor over code units, for reading or writing out Dalvik bytecode.
Input stream of code units, for reading in Dalvik bytecode.
Representation of all the parts needed for concrete methods in a
dex
file.Bytecode visitor to use when "observing" bytecode getting parsed.
Output stream of code units, for writing out Dalvik bytecode.
Walks through a block of code and calls visitor call backs.
Static methods and variables for collecting statistics on generated
code.
What to do when two dex files define the same class.
Container for all the giblets that make up a concrete Java bytecode method.
Implementation of
TranslationAdvice
which conservatively answers
false
to all methods.Base class for constants of all sorts.
Interface for constant pools, which are, more or less, just lists of
Constant
objects.Parser for a constant pool embedded in a class file.
Tags for constant pool constants.
Collects constants that are used more than once at the top of the
method block.
Constant type that represents an annotation.
Constant type to represent a fixed array of other constants.
List of
Constant
instances.Base class for constants of "methodish" type.
Constants of type
boolean
.Constants of type
byte
.Constant type to represent a call site.
Reference to a call site.
Constants of type
char
.Constants of type
CONSTANT_Double_info
.Constant type to represent a reference to a particular constant
value of an enumerated type.
Constants of type
CONSTANT_Fieldref_info
.Constants of type
CONSTANT_Float_info
.Instruction which has a single constant argument in addition
to all the normal instruction information.
Instruction which contains an explicit reference to a constant.
Constants of type
CONSTANT_Integer_info
.Constants of type
CONSTANT_InterfaceMethodref_info
.Constants of type
InvokeDynamic
.Constant type to represent a known-
null
value.Constants which are literal 32-bit values of some sort.
Constants which are literal 64-bit values of some sort.
Constants which are literal bitwise values of some sort.
Constants of type
CONSTANT_Long_info
.Constants of type
CONSTANT_*ref_info
.Constants of type
MethodHandle
.Constants of type
CONSTANT_Methodref_info
.Constants of type
CONSTANT_NameAndType_info
.Prototype reference.
Constants of type
short
.Constants of type
CONSTANT_Utf8_info
or CONSTANT_String_info
.Constants that represent an arbitrary type (reference or primitive).
Container for all the pieces of a concrete method.
Class used as a callback for
DalvCode.assignIndices(com.android.dx.dex.code.DalvCode.AssignIndicesCallback)
.Base class for Dalvik instructions.
List of
DalvInsn
instances.A variation on Appel Algorithm 19.12 "Dead code elimination in SSA form".
Constants for the dex debug info state machine format.
A decoder for the dex debug info state machine format.
An encoder for the dex debug info state machine format.
A decoded Dalvik instruction.
The bytes of a dex file in memory for reading and writing.
Thrown when there's a format problem reading, writing, or generally
processing a dex file.
Representation of an entire
.dex
(Dalvik EXecutable)
file, which itself consists of a set of Dalvik classes.Holder for a byte[] that can grow on demand.
Constants that show up in and are otherwise related to
.dex
files, and helper methods for same.Thrown when there's an index overflow writing a dex file.
Executable that prints all indices of a dex file.
Combine two dex files into one.
Container for options used to control details of dex file generation.
Implementation of
TranslationAdvice
which represents what
the dex format will be able to represent.Class file with info taken from a
byte[]
or slice thereof.Calculates the dominance-frontiers of a method's basic blocks.
Dominance-frontier information for a single basic block.
This class computes dominator and post-dominator information using the
Lengauer-Tarjan method.
Representation of an opcode.
Standard instances of
Dop
and utility methods for getting
them.Dumps the pred/succ graph of methods into a format compatible
with the popular graph utility "dot".
State used by a single invocation of
Main
.Encoded array of constant values.
Representation of a field of a class, of any sort.
Representation of a member (field or method) of a class, for the
purposes of encoding it inside a
ClassDataItem
.Class that representats a method of a class.
An encoded value or array.
Read and write
encoded_value
primitives.Pull parser for encoded values.
Simple intraprocedural escape analysis.
Lattice values used to indicate escape state for an object.
Common exception types.
Exception which carries around structured context.
Representation of a Java method execution stack.
Interface representing fields of class files.
Association of a field and its annotations.
Representation of a field reference inside a Dalvik file.
Field refs list section of a
.dex
file.Interface for lists of fields.
File I/O utilities.
Instruction which fills a newly created array with a predefined list of
constant values.
A decoded Dalvik instruction which contains the payload for
a
packed-switch
instruction.Allocates registers via a naive n^2 register allocator.
Allocates registers in a first-fit fashion, with the bottom reserved for
method parameters and all SSAregisters representing the same local variable
kept together if possible.
A decoded Dalvik instruction which has five register arguments.
Base class for instructions which are of a fixed code size and
which use
InsnFormat
methods to write themselves.Simple (mostly) fixed-size list of objects, which may be made immutable.
Instruction format
10t
.Instruction format
10x
.Instruction format
11n
.Instruction format
11x
.Instruction format
12x
.Instruction format
20t
.Instruction format
21c
.Instruction format
21h
.Instruction format
21s
.Instruction format
21t
.Instruction format
22b
.Instruction format
22c
.Instruction format
22s
.Instruction format
22t
.Instruction format
22x
.Instruction format
23x
.Instruction format
30t
.Instruction format
31c
.Instruction format
31i
.Instruction format
31t
.Instruction format
32x
.Instruction format
35c
.Instruction format
3rc
.Instruction format
45cc
.Instruction format
4rcc
.Instruction format
51l
.A decoded Dalvik instruction which has five register arguments.
Representation of a Java method execution frame.
An element that can have
Attribute
File header section of a
.dex
file.File header section of a
.dex
file.Utilities for formatting numbers as hexadecimal.
Utilities for parsing hexadecimal text.
Combination instruction which turns into a variable number of
move*
instructions to move a set of registers into
registers starting at 0
sequentially.Searches for basic blocks that all have the same successor and insns
but different predecessors.
Representation of a reference to an item inside a Dalvik file.
Writer that wraps another writer and passes width-limited and
optionally-prefixed output to its subordinate.
An item in a Dalvik file which is referenced by index.
Maps the index offsets from one dex file to those in another.
The various types that an index in a Dalvik instruction might refer to.
List of "inner class" entries, which are the contents of
InnerClasses
attributes.Item in an inner classes list.
A register-based instruction.
Base implementation of
Insn.Visitor
, which has empty method
bodies for all methods.Visitor interface for this (outer) class.
Base class for all instruction format handlers.
List of
Insn
instances.Representation of an instruction format, which knows how to decode into
and encode from instances of
DecodedInstruction
.A register interference graph
A register mapper that keeps track of the accumulated interference
information for the registers in the new namespace.
An iterator for a list of ints.
Simple list of
int
s.A set of integers
A decoded invoke-polymorphic instruction.
An invoke-polymorphic instruction.
A decoded invoke-polymorphic/range instruction.
Base class for any structurally-significant and (potentially)
repeated piece of a Dalvik file.
Enumeration of all the top-level item types.
An item that has an integer label.
A list of labeled items, allowing easy lookup by label.
Reads and writes DWARFv3 LEB 128 signed and unsigned integers.
List of "line number" entries, which are the contents of
LineNumberTable
attributes.Item in a line number table.
A set of integers, represented by a list
Upgrades insn to their literal (constant-immediate) equivalent if possible.
From Appel "Modern Compiler Implementation in Java" algorithm 19.17
Calculate the live ranges for register
reg
.A local variable item: either a name or a signature or both.
List of local variables.
Disposition of a local entry.
Entry in a local list.
Intermediate state when constructing a local list.
Representation of an array of local variables, with Java semantics.
Representation of a set of local variable arrays, with Java semantics.
Pseudo-instruction which is used to hold a snapshot of the
state of local variable name mappings that exists immediately after
the instance in an instruction array.
Pseudo-instruction which is used to introduce a new local variable.
Code to figure out which local variables are active at which points in
a method.
Code to figure out which local variables are active at which points in
a method.
Container for local variable information for a particular
RopMethod
.Container for local variable information for a particular
SsaMethod
.List of "local variable" entries, which are the contents of
LocalVariableTable
and LocalVariableTypeTable
attributes, as well as combinations of the two.Item in a local variable table.
Interface for machines capable of executing bytecode by acting
upon a
Frame
.Main class for the class file translator.
Main class for the class file dumper.
Main class for dx.
Command-line argument parser and access.
This is a command line tool used by mainDexClasses script to build a main dex classes list.
Class that represents a map item.
Interface representing members of class files (that is, fields and methods).
Representation of a member (field or method) reference inside a
Dalvik file.
Member (field or method) refs list section of a
.dex
file.Utility methods to merge various frame information.
Interface representing methods of class files.
Association of a method and its annotations.
A method_handle_item:
https://source.android.com/devices/tech/dalvik/dex-format#method-handle-item
A method handle type code:
https://source.android.com/devices/tech/dalvik/dex-format#method-handle-type-codes
Representation of a method handle in a DEX file.
Method Handle kinds for
CONSTANT_MethodHandle_info
constants.Representation of a method reference inside a Dalvik file.
Method refs list section of a
.dex
file.Interface for lists of methods.
A section of a
.dex
file which consists of a sequence of
OffsettedItem
objects, which may each be of a different concrete
class and/or size.Combine identical move-param insns, which may result from Ropper's
handling of synchronized methods.
An instruction with multiple constant arguments in addition
to all the normal instruction information.
Very simple base class that implements a flag to control the mutability
of instances.
Exception due to a mutability problem.
Modified UTF-8 as described in the dex file format spec.
A (name, value) pair.
A "normal" (non-phi) instruction in SSA form.
A register allocator that maps SSA register n to Rop register 2*n,
essentially preserving the original mapping and remaining agnostic
about normal or wide categories.
Pseudo-instruction which either turns into a
nop
or
nothingness, in order to make the subsequent instruction have an
even address.An item in a Dalvik file which is referenced by absolute offset.
Representation of an array of local variables, with Java semantics.
A decoded Dalvik instruction which has one register argument.
Information about each Dalvik opcode.
Information about an opcode.
All the Dalvik opcode value constants.
Runs a method through the SSA form conversion, any optimization algorithms,
and returns it to rop form.
optional optimizer steps
Settings for optimization of code.
Interface for a sink for binary output.
Destination for
DalvInsn
instances being output.Processor for instruction lists, which takes a "first cut" of
instruction selection as a basis and produces a "final cut" in the
form of a
DalvInsnList
instance.A decoded Dalvik instruction which contains the payload for
a
packed-switch
instruction.Association of a method and its parameter annotations.
Exception from parsing.
Observer of parsing in action.
A Phi instruction (magical post-control-flow-merge) instruction
in SSA form.
Visitor interface for instances of this (outer) class.
Resolves the result types of phi instructions.
Instruction which contains an explicit reference to a constant
but which cannot throw an exception.
Plain instruction, which has no embedded data and which cannot possibly
throw an exception.
List of source position entries.
Entry in a position list.
Representation of a method prototype reference inside a Dalvik file.
Proto (method prototype) identifiers list section of a
.dex
file.Representation of a method descriptor.
Raw attribute, for holding onto attributes that are unrecognized.
Base class of all register allocators.
Represents a mapping between two register numbering schemes.
A decoded Dalvik instruction which has register range arguments (an
"A" start register and a register count).
Combination of a register number and a type, used as the sources and
destinations of register-based operations.
List of
RegisterSpec
instances.Set of
RegisterSpec
instances, where a given register number
may appear only once in the set.All the register-based opcodes, and related utilities.
Representation of a subroutine return address.
Class that describes all the immutable parts of register-based operations.
All of the parts that make up a method at the rop layer.
Utility that converts a basic block list into a list of register-oriented
blocks.
Standard instances of
Rop
.A small variant of Wegman and Zadeck's Sparse Conditional Constant
Propagation algorithm.
A section of a
.dex
file.Makes int sets for various parts of the optimizer.
Implementation of
CodeInput
that reads from a short[]
.Implementation of
CodeOutput
that writes to a short[]
.Exception from simulation.
Instruction which has no extra info beyond the basics provided for in
the base class.
Class which knows how to simulate the effects of executing bytecode.
Information about a source position for code, which includes both a
line number and original bytecode address.
A decoded Dalvik instruction which contains the payload for
a
packed-switch
instruction.Instruction format for nonstandard format instructions, which aren't
generally real instructions but do end up appearing in instruction
lists.
An SSA representation of a basic block.
Label comparator.
Visitor interface for basic blocks.
Converts ROP methods to SSA Methods
Dumper for the SSA-translated blocks of a method.
An instruction in SSA form
Visitor interface for this class.
A method in SSA form.
Complete transformation to SSA form by renaming all registers accessed.
Converts a method in SSA form to ROP form.
Statistics about the contents of a file.
Standard subclass of
AttributeFactory
, which knows how to parse
all the standard attribute types.Standard implementation of
AttributeList
, which directly stores
an array of Attribute
objects and can be made immutable.Constructor of
CatchTable
instances from RopMethod
and associated data.Standard implementation of
ConstantPool
, which directly stores
an array of Constant
objects and can be made immutable.Standard implementation of
Field
, which directly stores
all the associated data.Standard implementation of
Member
, which directly stores
all the associated data.Standard implementation of
Method
, which directly stores
all the associated data.Standard implementation of
MethodList
, which directly stores
an array of Method
objects and can be made immutable.Standard implementation of
TypeList
.Representation of string data for a particular string, in a Dalvik file.
Representation of a string inside a Dalvik file.
Strings list section of a
.dex
file.Pseudo-instruction which holds switch data.
Instruction which contains switch cases.
List of (value, target) mappings representing the choices of a
tableswitch
or lookupswitch
instruction.The file header and map.
Instruction which has a single branch target.
A decoded Dalvik instruction which has three register arguments.
Instruction which contains an explicit reference to a constant
and which might throw an exception.
Instruction which possibly throws.
Simple interface for objects that can return a "human" (as opposed to
a complete but often hard to read) string form.
Interface for "advice" passed from the late stage of translation back
to the early stage.
Class that takes a combined output destination and provides two
output writers, one of which ends up writing to the left column and
one which goes on the right.
A decoded Dalvik instruction which has two register arguments.
Representation of a value type, such as may appear in a field, in a
local, on a stack, or in a method descriptor.
Object which has an associated type, possibly itself.
Base class for constants which implement
TypeBearer
.Representation of a type reference inside a Dalvik file.
Type identifiers list section of a
.dex
file.List of
Type
instances (or of things that contain types).Representation of a list of class references.
A section of a
.dex
file which consists of a sequence of
Item
objects.Class that represents a contiguous list of uniform items.
Unsigned arithmetic over Java's signed types.
Simple exception class used to communicate that the command-line tool
should print the usage message.
Machine
which keeps track of known values but does not do
smart/realistic reference type calculations.Handler for writing out
encoded_values
and parts
thereof.Pseudo-instruction base class for variable-sized instructions.
Version number for dx.
Exception which is meant to indicate a non-fatal warning.
Utilities for dealing with
Writer
s.Utility for turning types into zeroes.
A decoded Dalvik instruction which has no register arguments.
Pseudo-instruction base class for zero-size (no code emitted)
instructions, which are generally used for tracking metainformation
about the code they are adjacent to.