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 ints.
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).
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.
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 ints.
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.
Translator from rop-level Insn instances to corresponding Dop instances.
Translator from RopMethod to DalvCode.
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 FieldList, which directly stores an array of Field objects and can be made immutable.
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 Writers.
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.