History log of /dalvik/dx/src/com/android/dx/io/CodeReader.java
Revision Date Author Comments
fe107fb6e3f308ac5174ebdc5a794ee880c741d9 17-Sep-2011 Jesse Wilson <jessewilson@google.com> Mechanical refactoring of dx into two parts.

This splits off a new package, com.android.dex that contains
code for parsing and modelling dex files. This code is usable
both at build time (for compilation and analysis) and at runtime
(for introspection).

The original package, com.android.dx is the tool that compiles
.class files into .dex files. That package also includes utilities
for merging and querying dex files, all visible to the dx command
line application.

In a follow up change I'll move the new com.android.dex package
into the libcore/ project, and configure build rules so that it's
included in both dx.jar and core.jar. The core.jar will then be
able to use it for annotation processing.

Change-Id: I3c58cf87e728e4dda1925a0992c1ee7b8130e81a
(cherry picked from commit bab4abb07335d162ecdb8091fc395cf84803a580)

Conflicts:
dx/junit-tests/com/android/dx/util/BitIntSetTest.java
dx/junit-tests/com/android/dx/util/BitsTest.java
dx/junit-tests/com/android/dx/util/IntListTest.java
dx/junit-tests/com/android/dx/util/ListIntSetTest.java
dx/src/com/android/dex/Dex.java
dx/src/com/android/dex/TableOfContents.java
dx/src/com/android/dx/annotations/AnnotationAccess.java
dx/src/com/android/dx/command/Main.java
dx/src/com/android/dx/dex/code/OutputFinisher.java
dx/src/com/android/dx/dex/code/form/Form32s.java
dx/src/com/android/dx/dex/code/form/Form33x.java
dx/src/com/android/dx/dex/code/form/Form41c.java
dx/src/com/android/dx/dex/code/form/Form52c.java
dx/src/com/android/dx/gen/DexGenerator.java
dx/src/com/android/dx/merge/DexMerger.java
7baa3b69f87348aa2f4f16375a66be59965e8dd4 05-Feb-2011 Dan Bornstein <danfuzz@android.com> Move DexException to dx.util.

Change-Id: I86bf83bc3adcc55eb8bbeac2fc28822cb5f2d2b9
537939ca06a47668f719ee06159303bcd3175c69 04-Feb-2011 Dan Bornstein <danfuzz@android.com> Move the instruction representation code.

It now gets its own subpackage, reducing the clutter in the base .io
package. I was on the fence about CodeReader and ended up just leaving
it be, but maybe that one wants to move too.

Change-Id: I87c574ce2086025bcb9583627a545160084ba88e
f67b6afce08a6b9b5daf7d4d69e132fda07bc78f 02-Feb-2011 Dan Bornstein <danfuzz@android.com> CodeReader visitor dispatch now uses OpcodeInfo.

This gets rid of the per-opcode Instruction array and just does a
simple switch. If it turns out that the switch has poor performance,
we can push the visitor abstraction down into IndexType.

The big change to OpcodeInfo is to make every Info instance always
have a non-null IndexType, exactly so it could be reliably switch()ed
on without having to do an explicit null check.

Change-Id: Iee8289f8766ce41c5043eec7212b2133ec71e682
17cae2df2191566bf17783cb591c9800b1efb07d 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Simplify string transformation.

Also, check for index jumboization across the board.

Change-Id: I7a5a15f80155b7061b8bc6e15ffa315873ad1626
a754fbb1555f9ac2d14de0ffd0046c780732da5a 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Move opcode names into OpcodeInfo.

This also allowed me to remove the Instruction argument from the
CodeReader visitor methods. Per previous discussion, this also gets
rid of the redundant argument output in FindUsages. I can clean up
CodeReader some more in a follow-up.

Change-Id: I7a65e8d74498e201fd169cddde0d1f19d6f33f81
38b861bc63b91114d52ba01e74d31fbf316a5784 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Hook up CodeReader.

This involved tweaking a lot of interfaces and a few bits of the
implementation, and it could use at least one cleanup pass, but I think
the basic structure is pretty reasonable.

Change-Id: Ic49410aca479d54ceb837ee7e04bedd2ca0bcda9
a2c9b2631e0e0034fdd6518e45a20d27914c731f 01-Feb-2011 Dan Bornstein <danfuzz@android.com> Add more direct encode() and decode() methods.

Also, tweaked a couple messages in CodeReader to match newly-clarified
opcode names, while I was in the territory.

Change-Id: I7bad8be967a3ca9c69f0443d4387b927ccd56d16
e31a42442bbd2cdc69e959f5209b793cf0aa7217 17-Jan-2011 Jesse Wilson <jessewilson@google.com> Make DexMerger's dex reader general purpose.

Use this to implement FindUsages, which prints references to
fields and methods within a dex. This is the FindUsages output
for "Ljava/lang/Number;", "longValue" on libcore's dex file:

Method referenced by Ljava/io/EmulatedFields;#get invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/io/EmulatedFieldsForDumping;#write invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/io/ObjectOutputStream;#writeFieldValues invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/lang/Number;#longValue
Method declared by Ljava/lang/Byte;#longValue
Method declared by Ljava/lang/Double;#longValue
Method declared by Ljava/lang/Float;#longValue
Method declared by Ljava/lang/Integer;#longValue
Method declared by Ljava/lang/Long;#longValue
Method declared by Ljava/lang/Short;#longValue
Method referenced by Ljava/lang/reflect/Array;#set invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#readObject invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#setUnscaledValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#valueExact invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#doubleValue invoke-virtual/range {vCCCC..vNNNN}, meth@BBBB
Method referenced by Ljava/math/BigDecimal;#doubleValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/math/BigDecimal;#longValue
Method referenced by Ljava/math/BigDecimal;#longValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/math/BigInteger;#longValue
Method referenced by Ljava/math/Conversion;#bigInteger2Double invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/Conversion;#bigInteger2Double invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/NumberFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DateFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DecimalFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DecimalFormat;#parse invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/SimpleDateFormat;#formatToCharacterIterator invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromDateTime invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Scanner;#nextLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/util/concurrent/atomic/AtomicInteger;#longValue
Method declared by Ljava/util/concurrent/atomic/AtomicLong;#longValue
Method referenced by Llibcore/icu/NativeDecimalFormat;#formatToCharacterIterator invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xalan/xslt/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/dtm/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/dtm/ref/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/serializer/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/utils/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xpath/functions/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSON;#toLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONArray;#getLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONArray;#optLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#numberToString invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#getLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#optLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC

Change-Id: Ia50f28f53ce5838799e2d5f03a7a2f1c551299de