• Home
  • History
  • Annotate
  • only in /dalvik/dx/src/com/android/dx/
History log of /dalvik/dx/src/com/android/dx/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
418c84770acea60b3b13aa37ac21563dba4c8854 22-Aug-2013 Yohann Roussel <yroussel@google.com> Make a more verbose too many id error message.

This restores the old message, replacing "ids" by "references" and
advertising for multidex otpions.

Updates dalvik/tests/089-many-methods accordingly.

(cherry picked from commit d352de04f03b848e0246119344ea13e7233018f0)

Change-Id: I5934bc9fb7812b66c0e38935946cacdf1c35a402
ommand/dexer/Main.java
ex/file/MemberIdsSection.java
ex/file/TypeIdsSection.java
82e8334a1c1af6261b5e105868c20d2ab6b8a13b 22-Aug-2013 Yohann Roussel <yroussel@google.com> Increment dx version to 1.8

(cherry picked from commit 39bcbf75923303d209b7e6640590cd7f5eaaa65a)

Change-Id: Iaddb2020b75f2bbba2e2ebda3a4465a890e361ca
ersion.java
3abdb48fdefcc3136a8d7f9c168a305d9be9690e 21-Aug-2013 Yohann Roussel <yroussel@google.com> Fix 2 filtering problems in multi dex + main list.

- Classes in archives were added in all dexes.
- Adding resources could be done twice in non "strictNameCheck" mode
(when using BestEffortMainDexListFilter) if there was 2 secondary
dex.

(cherry picked from commit ad27e19691c6723a801b127f8802f5cdf4f44359)

Change-Id: I5cbc1b273518e868fdd3d642d50488ddcbec2af6
f/direct/ClassPathOpener.java
ommand/dexer/Main.java
4c656e4ec2f5c5036dc67fb4034c1e7ff7abf343 31-Jul-2013 Benoit Lamarche <benoitlamarche@google.com> Introduce --multi-dex option in dx.

Add --multi-dex options to dx command line to allow the generation of
several dex files when method index limit is about to be reached.
Also add
--main-dex-list allowing to force some classes in the main dex.
--minimal-main-dex to keep in main edx only classes specified by
main-dex-list.
--set-max-idx-number to set an arbitrary idx limit for the
splitting.

(cherry picked from commit c7daf656da3a4854296b6a8bb702e3ee418450e5)

Change-Id: I2b42272be91484a75783eb94cd30581159948975
f/direct/ClassPathOpener.java
f/direct/DirectClassFile.java
ommand/Main.java
ommand/dexer/Main.java
ex/cf/CfTranslator.java
ex/file/AnnotationUtils.java
ex/file/DexFile.java
ex/file/MemberIdsSection.java
ex/file/TypeIdsSection.java
ca3f9628c157d864e9c273db14bdb38835249838 02-Aug-2013 Elliott Hughes <enh@google.com> If dalvik wants ASCII casing, it needs to ask for it.

http://elliotth.blogspot.com/2012/01/beware-convenience-methods.html

Bug: https://code.google.com/p/android/issues/detail?id=58359
Change-Id: I1601cda215ebc5995117323e40a684ad352fe733
ommand/annotool/Main.java
97208a0be35a4b9583172dc853150a32bb138f15 17-May-2013 Jean-Philippe Lesot <jplesot@google.com> Merge "Added support for version 51 class files in dx"
0b44e47c51b5c735283cc99b0c08cac82dba8a00 26-Apr-2013 delphinemartin <delphinemartin@google.com> Report problems as errors in dx (with exit codes)

(cherry picked from commit 593a7233e13d6eeb8ae5d894e29c6a27cbc7b7f0)

Change-Id: I6421f95ceb97a596a19781e46cb4767bfb21cdbd
ommand/dexer/Main.java
5ca383d7373cf7c54706b8e70d534deee8d2e3ad 29-Apr-2013 delphinemartin <delphinemartin@google.com> Added support for version 51 class files in dx

If an invokedynamic is present, an exception is thrown.

(cherry picked from commit 94629f2a31206637fc79535ffef1b223e9f02e30)

Change-Id: I1922d4cf78465dfd2ac53f8694b7317a1d98016d
f/code/ByteOps.java
f/code/BytecodeArray.java
f/cst/ConstantPoolParser.java
f/cst/ConstantTags.java
f/direct/DirectClassFile.java
cdab79083aae45f792dc5416f8ccc158d816bf88 31-Oct-2012 yroussel <yroussel@google.com> Fix alignment when recompacting a DexMerger result.

(cherry picked from commit a659fe6f8a0b7d32eafc9a2ff7aa1387702da053)

Change-Id: I7c93e7d45b52655cd7adfdc3fc783757ee71079b
erge/DexMerger.java
5b7285481d0f9ece6aad7f1bceddf903e3dde82d 22-Sep-2011 Jesse Wilson <jessewilson@google.com> Use zero filled alignment padding before method code

(cherry picked from commit d8760772c49647ab197c34b8e46438c410decb42)

Change-Id: I092ff646b02abf7b3ee6285361e4e256c1ade37d
erge/DexMerger.java
c2a804c050cbd6aa60da7ffaea46c8c99aaf53ad 26-Oct-2012 yroussel <yroussel@google.com> Allow the merging of more than 2 dex file at a time.

(cherry picked from commit f9f7020a0a181ffba3bb9ed123f5bb211a61738e)

Change-Id: I2dd875399c2d30d214b6a025ffea995155ff48c1
erge/DexMerger.java
9d8ae21b54d2fc38163dfe63fbd86c5c9e0ff678 08-Oct-2012 mikaelpeltier <mikaelpeltier@google.com> Fix bug on register compatibility.

- Bad register usage to compute prefix or suffix expansion.

(cherry picked from commit 5bce02865087b7ec3c6321a1bef9542c18b0f90e)

Change-Id: Ife9b2b07870bbc933f959c194a4a72dfa9507cfb
ex/code/form/Form12x.java
3ef1ad8ccca8dff0ca0e3b07309b0e1c2a2591cf 19-Sep-2011 Jesse Wilson <jessewilson@google.com> Switch Dex from byte[] to ByteBuffer for backing store. Part 2.

Change-Id: Ifd3672027d075b6c9f8df208a04bc33122c883af
(cherry picked from commit f8357511efd16d76ce4410459c15dbb08b0140b6)

Conflicts:
dx/src/com/android/dx/merge/DexMerger.java
o/DexHasher.java
erge/DexMerger.java
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
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlockList.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/OneLocalsArray.java
f/code/Ropper.java
f/code/RopperMachine.java
f/code/SimException.java
f/code/Simulator.java
f/direct/AnnotationParser.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/StdAttributeFactory.java
f/iface/ParseException.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dexer/Main.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/ClassDumper.java
ommand/dump/DotDumper.java
ommand/dump/Main.java
ommand/dump/SsaDumper.java
ommand/findusages/FindUsages.java
ommand/findusages/Main.java
ommand/grep/Grep.java
ommand/grep/Main.java
ex/DexFormat.java
ex/DexOptions.java
ex/SizeOf.java
ex/TableOfContents.java
ex/cf/AttributeTranslator.java
ex/cf/CfOptions.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/code/ArrayData.java
ex/code/CatchBuilder.java
ex/code/CatchTable.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalList.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/StdCatchBuilder.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32x.java
ex/code/form/Form35c.java
ex/code/form/Form51l.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
o/Annotation.java
o/ClassData.java
o/ClassDef.java
o/Code.java
o/CodeReader.java
o/DexBuffer.java
o/DexHasher.java
o/DexIndexPrinter.java
o/EncodedValue.java
o/EncodedValueReader.java
o/FieldId.java
o/MethodId.java
o/ProtoId.java
o/instructions/AddressMap.java
o/instructions/BaseCodeCursor.java
o/instructions/DecodedInstruction.java
o/instructions/InstructionCodec.java
erge/DexMerger.java
erge/IndexMap.java
erge/InstructionTransformer.java
erge/SortableType.java
erge/TypeList.java
op/annotation/Annotation.java
op/annotation/Annotations.java
op/code/FillArrayDataInsn.java
op/code/LocalVariableInfo.java
op/code/PlainInsn.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RopMethod.java
op/cst/CstArray.java
op/cst/StdConstantPool.java
op/type/Type.java
sa/BasicRegisterMapper.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/EscapeAnalysis.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/LocalVariableExtractor.java
sa/LocalVariableInfo.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/PhiTypeResolver.java
sa/RegisterMapper.java
sa/SCCP.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaInsn.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/back/FirstFitAllocator.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/IdenticalBlockCombiner.java
sa/back/InterferenceGraph.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
til/ByteArrayAnnotatedOutput.java
til/ByteArrayByteInput.java
til/ByteInput.java
til/ByteOutput.java
til/DexException.java
til/EncodedValueUtils.java
til/ExceptionWithContext.java
til/FileUtils.java
til/Leb128Utils.java
til/MutabilityException.java
til/Mutf8.java
til/Output.java
til/Uint.java
til/Unsigned.java
fd2a1f6f7f56fb9e98bb4c1023ccdc7f7ce6c5d2 30-Apr-2013 Brian Carlstrom <bdc@google.com> Change com.android.dx.io.Annotation to use EncodedValue

(cherry picked from commit 4ec022b0b6c84f994ab2fc78934110ad96d0bdec)

Change-Id: Ia420b7661f372c59af8fe62bdab7982a1d2b008f
o/Annotation.java
o/DexBuffer.java
o/EncodedValueReader.java
erge/IndexMap.java
7e85b634fbafa4a3b927c80665dea6fac337d886 15-Sep-2011 Jesse Wilson <jessewilson@google.com> Teach dex how to parse encoded values from .dex files.

Previously primitive values were treated as opaque byte arrays.
Now the encoded values can be interpreted as their proper types:
integers, indices, floats, chars, etc. This gets complicated
pretty fast due to the dense packing dx performs when encoding
the values.

The encoding code is moved from ValueEncoder. The decoding code
is ported from C++ to Java from Annotation.cpp.

There's a bunch of new tests to make sure the decoding is correct;
porting from C++ to Java was tricky because of the '>>' shifts on
unsigned values. The test input data is generated by dex!

Change-Id: I83b2fc3e16115d667fa94b3dab782d1a9687f3ad
(cherry picked from commit 27847605b9255358f0577ffec28886c450263898)
ommand/grep/Grep.java
ex/file/ValueEncoder.java
o/DexBuffer.java
o/EncodedValueReader.java
erge/IndexMap.java
til/EncodedValueUtils.java
fe48ac9bd8b37501192c675adedaf1193b9c74cb 05-Apr-2013 jwilson <jwilson@squareup.com> Don't duplicate annotation set ref lists when merging.

See exception reported on this thread:
https://groups.google.com/d/msg/android-contrib/h0sDMo5DVBI/MAMiBv5XR44J

Change-Id: I867a8d2328b32625e5baa0b029f55e373fe11271
erge/DexMerger.java
erge/IndexMap.java
0a752f071fbbdfeab5dd9a230efe0f4f47b8cd94 17-Dec-2012 jwilson <jwilson@squareup.com> Fail if the new index is out of range.

We were silently truncating, which made an obvious problem
into a non-obvious one.

Bug: http://code.google.com/p/android/issues/detail?id=40409
Change-Id: I15576357c72ac0e98cf85c0a1d289fd5009468f9
erge/DexMerger.java
f870f2dce9300c8dec620613371f08e5c234245b 16-Oct-2012 jeffhao <jeffhao@google.com> Add dx option to always generate const-string/jumbo.do not merge.

This allows large dex files with many strings to be merged properly.

(cherry picked from commit 266f45ff7da18022faf5f77df76c69f8cdad313f)

Change-Id: I5fe4c55d84a91101a4f89f590117aa6dc0bfc0f2
ommand/Main.java
ommand/dexer/Main.java
ex/DexOptions.java
ex/code/OutputFinisher.java
erge/InstructionTransformer.java
e6516a5395a20f2bf923753e4dd87ffd304074fb 05-Sep-2012 Jean-Philippe Lesot <jplesot@google.com> Merge "Fix an ugly bug where try/catch offsets weren't being mapped properly."
bf7dfeea94f21dd0e097cf5f786f9995722fd70d 01-Sep-2012 Jesse Wilson <jwilson@squareup.com> Fix a bug where the max blowup of annotations was incorrect.

I'm not sure where the 1.34 number comes from but it's incorrect.
From the spec, the encoded_annotation is made up of a single byte
plus an unlimited number of uleb128 values. Each of these values
can double in width in the worst case. I received (personal) email
from one user who'd run into a case worse than the incorrect 1.34
limit.

Change-Id: I3b676e6d2b274aaa538ca61ce23945b3d49aff04
erge/DexMerger.java
d43341a24abe339d474b0b0d92669917ae2eb9bf 01-Sep-2012 Jesse Wilson <jwilson@squareup.com> Fix an ugly bug where try/catch offsets weren't being mapped properly.

In dex files, there are several places where one object refers
to another object by its position in the file. The dex merger
is generally very careful to adjust these mappings when combining
dex files.

Unfortunately one of these cases was broken. Each try_item refers
to a corresponding encoded_catch_handler by its byte offset in a
list. Most of the time this byte offset is the same in the input
dex file and the output dex file. But encoded_catch_handlers are
variable-length because they use a variable-length uleb128 encoding
to address the type_idx being caught. When dex files are merged,
some exception types may go from having a small index to having
a large index, increasing the number of bytes required to encode
that index. This breaks our ability to directly copy over offsets
as we were doing previously.

Bug: http://code.google.com/p/android/issues/detail?id=36490
Change-Id: I3bdadf20899fdb5d4d074e69103b33c0404a31f8
ex/SizeOf.java
o/Code.java
o/DexBuffer.java
erge/DexMerger.java
a57317952de3fc37876f97e8655cc773b97df891 28-Aug-2012 Jean-Philippe Lesot <jplesot@google.com> Merge "Correctly handle switches on values in a high register"
55ac44b64744cd5692d6495bca99dfc8181e0cfc 23-Aug-2012 Jesse Wilson <jwilson@squareup.com> Fix a bug where debugInfos' size wasn't being computed.

Previously debugInfos' size of 0 caused a malformed dex file
because debug data was present but not mentioned in the table
of contents.

Change-Id: I07171aaee12fef9f303fc505909f44ef1a714114
erge/DexMerger.java
40c69d949e67fe2cc2cccf4dd16b2f9fdabea396 23-Aug-2012 Ben Gruver <bgruv@google.com> Correctly handle switches on values in a high register

When dx generates a switch on a value in a high register, it prepends a move
instruction, to move the value to a low register. However, this causes the
switch data pseudo-instruction to use address of the move instruction as the
base address of the switch targets, rather than the address of the switch
instruction

Change-Id: I0708d35ec3059c30221cd0a64f426244411d31ea
ex/code/CodeAddress.java
ex/code/OutputFinisher.java
ex/code/RopTranslator.java
f2a33d444213c328642daae78742e9e978c94c28 12-Jun-2012 Elliott Hughes <enh@google.com> am effc95cb: Merge "Make dex merging stateless."

* commit 'effc95cb732d8d5453930e647240a1665b6dc71a':
Make dex merging stateless.
5164762f98362866f50cda3c7f2b72b519be9c91 12-Jun-2012 Elliott Hughes <enh@google.com> am a9ac3a9d: Merge "Support debug info in dexmerge."

* commit 'a9ac3a9d1f8de71bcdc39d1f4827c04a952a0c29':
Support debug info in dexmerge.
5e90165d5918f18aec0964bc475f4064e9143599 12-Jun-2012 Xavier Ducrohet <xav@android.com> Make dex merging stateless.

This is required to run dx in Eclipse which doesn't unload the dx
library after each run.

(cherry-pick of 7aa5ce7e990dc3766eba97cd0932b62e4de21503.)

Change-Id: I7a69a3015d448ddd5558c307cd01346156cbc739
ommand/dexer/Main.java
89b53f727b579850a777a99b822aab1d31093db0 08-Jun-2012 Elliott Hughes <enh@google.com> Support debug info in dexmerge.

Bug: 4090053

(cherry-pick of bc23c4f3ebaefebb3f1be7732767631f91e165ea.)

Change-Id: I1108933fc03330ff91be3a2edef8b4966977dcd7
Signed-off-by: Jesse Wilson <jesse@swank.ca>
o/DexBuffer.java
erge/DexMerger.java
874b6e182d68a14181ca8aea5bee3c832ebb1d39 28-Mar-2012 Elliott Hughes <enh@google.com> am 92ab8d50: am 531f7273: am 54ff31a5: Merge "Compact merged dexes on their byte aligned size"

* commit '92ab8d5069c51de75903a5b4768d4d94563bceb1':
Compact merged dexes on their byte aligned size
fa3b293a068fd521a6ba6019a051ad502dfaca55 26-Mar-2012 Jesse Wilson <jessewilson@google.com> Transform static values eagerly rather than on use.

Apparently there is some situations where a single static value
may be referenced by multiple sites. Not transforming them eagerly
lead to oversized dex files (and could crash the merge).

Change-Id: I4ac5b9cd621b0fff1e5ba247c9590aa0d562cd65
o/DexBuffer.java
erge/DexMerger.java
erge/IndexMap.java
5094108bb410a24a89580d4c64b3440bc13e8110 11-Mar-2012 Charlie Groves <charlie.groves@gmail.com> Compact merged dexes on their byte aligned size

Previously, if a merged dex had too much free space, the compaction step
would subtract the unused space from the section sizes generated by
adding the merged dexes section sizes. The merged sizes weren't 4-byte
aligned, which meant if a section had been bumped in size for the
boundary, the compaction would fail when loading into a section eg
'Section limit 3665072 exceeded by string data'.

This gets the compacted section size from the actual used space instead
of from the non-aligned estimate, so everything fits.

Change-Id: I1aee1abd721ec21998bb3ea78f6f424e7421b614
o/DexBuffer.java
erge/DexMerger.java
4dfe64e94f153ccd8db56bea7b8cdfb02e5bba08 12-Jan-2012 Jesse Wilson <jessewilson@google.com> Provide detail when methods or fields exceed the limit.

Here's what the new message looks like:

trouble writing output: Too many fields: 88304; max is 65536. By package:
10 dalvik.annotation
278 dalvik.bytecode
81 dalvik.system
94 dalvik.system.profiler
111 java.awt.font
12 java.beans
322 java.io
519 java.lang
20 java.lang.annotation
13 java.lang.ref
72 java.lang.reflect
72 java.math
...

Change-Id: Ieea7efb178522d9ac3cb10c5a6cfb453be3fd72d
ex/file/MemberIdsSection.java
op/cst/CstType.java
ab35b50311951feea3782151dd5422ee944685c2 05-Jan-2012 Elliott Hughes <enh@google.com> Remove unsupported experimental opcodes.

External developers were starting to try to get themselves into trouble with
this stuff...

Change-Id: I2b03bfeaa8c98b6a994bc7924fc8dcf4e4d4f6cb
ex/code/Dops.java
ex/code/InsnFormat.java
ex/code/form/Form32s.java
ex/code/form/Form33x.java
ex/code/form/Form41c.java
ex/code/form/Form52c.java
ex/code/form/Form5rc.java
o/OpcodeInfo.java
o/Opcodes.java
o/instructions/DecodedInstruction.java
o/instructions/InstructionCodec.java
1609c0c6ef135b56c156b5f915ed646eb400965b 04-Jan-2012 Jesse Wilson <jessewilson@google.com> Remove dexmaker code from dx.

This now lives as a standalone project:
http://code.google.com/p/dexmaker/

Change-Id: I4f7abff9399d6827082c9af78a015562fdbcdbb3
en/BinaryOp.java
en/Code.java
en/Comparison.java
en/Constants.java
en/DexCacheException.java
en/DexGenerator.java
en/FieldId.java
en/Label.java
en/Local.java
en/MethodId.java
en/ProxyBuilder.java
en/Type.java
en/TypeList.java
26f957278b34144a3f90989ccddb0102fc1fdd62 16-Dec-2011 Hugo Hudson <hugohudson@google.com> Introduces ProxyBuilder and tests.

- ProxyBuilder is to concrete classes what java.lang.reflect.Proxy is to
interfaces.
- Uses a builder pattern to make specifying of the various (optional)
parameters easier.
- Creates a concrete subclass of the supplied input class whose
implementation delegates to the given invocation handler.
- Also provides a fix for the Code#loadConstant method to allow loading
null values.

Change-Id: I3ca6a98b91c64466df03120bc85f095365250aca
en/Code.java
en/DexCacheException.java
en/ProxyBuilder.java
f8fec55f4689b0c54529b2bbf4e25b0c7cfbbe1e 16-Dec-2011 Hugo Hudson <hugohudson@google.com> Merge "DexGenerator: allow specifying dex cache dir."
7adb0bfc638ba2f6ce896975ee49c889e73bad44 30-Nov-2011 Hugo Hudson <hugohudson@google.com> DexGenerator: allow specifying dex cache dir.

- Switches DexGenerator to not use extended opcodes. This allows us to
write suitable files for earlier versions of Android.
- Allows caller to specify optimised dex directory. This allows us to
get around /data/dalvik-cache not being world-writeable.
- Allows caller to specify optimised dex files cache dir. This allows
us to skip the requirement of being able to write to /sdcard.

Change-Id: I2cae2e187ccf5b20b98763cb7eb791383a7d5a59
en/DexGenerator.java
95f4f019d106a2bb6f9e14e25616f865e8e821ef 12-Dec-2011 Brian Carlstrom <bdc@google.com> DexOptions should default targetApiLevel to API_NO_EXTENDED_OPCODES

Bug: 5738782

(cherry picked from commit b14b69728337cf5808eed4d5652fb9d5be33dff0)

Change-Id: I51991c85c74b41fa51556b369a3724ba9dd0c090
ex/DexOptions.java
2797a6d4c7c14c574661414fd448bafcbf4d4ac5 13-Dec-2011 Jesse Wilson <jessewilson@google.com> Merge "Don't throw an AssertionError on invalid input."
2cdb0f99380a09f494977d1799e21e2a79d40a65 13-Dec-2011 Jesse Wilson <jessewilson@google.com> Don't throw an AssertionError on invalid input.

Throwing an AssertionError prevents tools like FindUsages from
recovering.

Bug: http://b/5470168
Change-Id: I6ae99bd29e25f868a739548266cedf85d0b26e90
o/instructions/DecodedInstruction.java
4cd7b39876bcec03bb1d0c2afa61cbdb7d119eba 09-Dec-2011 Jesse Wilson <jessewilson@google.com> Remove dx's copy of JUnit.

Instead, use JUnit the same way other code uses JUnit: by depending
on the copy in external. There is no longer a top-level option in
dx to run JUnit tests on itself.

There are two failing tests in dx/junit-tests. Both of these are in
the recently created DexGeneratorTest; I intend to fix these in another
change.

Bug: http://b/2286423
Change-Id: I3a173a0302c7ccc81be3b5a2a4d766000d1c242b
ommand/Main.java
sa/_tests/_DomFront.java
til/_tests/_BitIntSet.java
til/_tests/_Bits.java
til/_tests/_IntList.java
til/_tests/_ListIntSet.java
0083c42a76583417303d5795ab60e3653d326c74 18-Nov-2011 Jesse Wilson <jessewilson@google.com> Fix DexMerger to emit dex files without extended op codes.

Certain tools in our tool chain don't like these.

Change-Id: Iaaff85c1b634f647d0105c36f403b2e03aaf0ca7
ex/TableOfContents.java
9f0f8b6c64cdff79989be28fff70db39f412de90 17-Nov-2011 Jesse Wilson <jessewilson@google.com> Be humane when there are more methods or fields than Dalvik can handle.

Previously our errors would look like this:
trouble writing output: opcode == null
Or this:
trouble writing output: No expanded opcode for 7f9c1af3

Now our errors look like this:
trouble writing output: Too many methods: 86922; max is 65536

Bug: http://code.google.com/p/android/issues/detail?id=20814

Change-Id: I2d9dc55e188a6ac1661b74af2194b18019859a29
ex/file/MemberIdsSection.java
fc785c7597c477af84b273c8f191f33339f7735e 19-Oct-2011 Jesse Wilson <jessewilson@google.com> Provide debugging info should extended opcode lookup fail.

Bug: http://code.google.com/p/android/issues/detail?id=20814
Change-Id: Iedaf07721c29dd3d24827c3f7a953b7371c9735d
ex/code/OutputFinisher.java
9c236131409ecb0afd0c14185ed9bcead6f8b02d 02-Sep-2011 jeffhao <jeffhao@google.com> Merge "Dx reg allocator fix for accidental long/double clobbering."
83a8a3b50e274b4f01a4c81a63940c58f939b934 31-Aug-2011 Jesse Wilson <jessewilson@google.com> Fix a corner-case dex merging bug.

When doing a null merge (merging a dex file with an empty file) word-alignment
means that the output may be two bytes longer than the input. Always include the
rounded-up length in the bytes allocated to a section.

com.android.dx.util.DexException: Section limit 669894 exceeded by type list
at com.android.dx.io.DexBuffer$Section.ensureCapacity(DexBuffer.java:541)
at com.android.dx.io.DexBuffer$Section.writeShort(DexBuffer.java:574)
at com.android.dx.io.DexBuffer$Section.writeTypeList(DexBuffer.java:636)
at com.android.dx.merge.DexMerger$3.write(DexMerger.java:439)
at com.android.dx.merge.DexMerger$3.write(DexMerger.java:424)
at com.android.dx.merge.DexMerger$IdMerger.mergeUnsorted(DexMerger.java:321)

Change-Id: I67b81ba8c837b0307e313f4012a051b022b25db2
o/DexBuffer.java
7debb9113af41a38a6f5ecbda1a2c28c5e5a17af 27-Aug-2011 jeffhao <jeffhao@google.com> Dx reg allocator fix for accidental long/double clobbering.

Addresses this bug: http://b/issue?id=5215643.

Change-Id: I82613c38b0a6247d071aa6c5cc90bf8b60d5d84b
sa/back/FirstFitLocalCombiningAllocator.java
36db01eeaa04e3af3401c5bd6a399d3fb7b040e3 23-Aug-2011 jeffhao <jeffhao@google.com> Removed parsing and output for unused --target-api switch in dx.

This is cherry-picked from dalvik-dev.

Change-Id: I74627e4c261e086e8c2c7cf38591cd3e9f5707e6
ommand/Main.java
ommand/dexer/Main.java
a6264bd14e66bd05f98d0b1b98ee9e044b93faf9 19-Aug-2011 Jesse Wilson <jessewilson@google.com> Permit code size to grow when merging dex files.

The throws clauses use variable-length encodings (sleb and uleb)
which will have different lengths when the number of types grows.

Bug: http://b/5127963
Change-Id: I50598a807596955e458d4ec87a730e62e12168d9
erge/DexMerger.java
9910d7e004c7452a6a1b934f19dc87bb4d61d8bc 14-Jul-2011 Raphael <raphael@google.com> resolved conflicts for merge of 72b7c617 to master

Change-Id: I8c3a32d9ee0dea08cca79031cda870141aacdb17
72b7c6179a6ab44b60735f9c4411faa5fce9649d 12-Jul-2011 Raphael <raphael@google.com> resolved conflicts for merge of c3ff6a0b to honeycomb-plus-aosp

Change-Id: I6b9cfdc27b2654bd832cfd06678a173449f992bc
1e4c4bebc1feb4b68155e9c2e7e6f2c056ef8e3b 12-Jul-2011 Raphael Moll <ralf@android.com> Dex for Windows: Support paths with spaces.

1- Change the format of the command line parsed by dx.jar.
Parameters with values are usually specified with one
single argument e.g.
--output=/some/path with spaces
That breaks for a variety of reasons on windows, so the first
step is to allow a new 2-parameter form:
--output "/some/path with spaces"

2- The next step is fixing the way the dx.bat wrapper
extracts the -J parameters to be able to cope with
arguments that contain spaces.

SDK bugs: 4567, 18388

Change-Id: Ia837e7307998c0bf41ae39abb36abebfc27da104
ommand/dexer/Main.java
a7ab2182266fb9ea1e4e8d1347fc6d6da35760d4 16-Jun-2011 Elliott Hughes <enh@google.com> Fix unbundled apps on pre-ICS devices.

Change-Id: I4aa58b5395423ec2f05be3dcb1783d0e35eabb2c
ommand/Main.java
ommand/dexer/Main.java
9fdbd91288a237eb58e18e4de9c729c3c268c318 25-May-2011 Dan Bornstein <danfuzz@android.com> Update dex file magic number.

Even though the dex format was technically resilient with respect to
the addition of new opcodes, consensus is that the errors one sees
when trying to use a new dex file on an old build were sufficiently
inscrutable that it was worth the effort to update the version number
embedded in the dex format magic.

This change updates dx to produce the new version number when extended
opcodes are enabled (which is the default, but may be overridden by
targeting an older API level).

This also updates the vm to recognize and accept both the new current
version number as well as the immediately previous one. Note: It won't
reject an old-version file if it happens to use the new opcodes; that
would just be a gratuitous and pointless failure.

Bug: 4364986
Change-Id: If8febbb0b91c1719df4247bf69c511251362d91f
ommand/dexer/Main.java
ex/DexFormat.java
ex/DexOptions.java
ex/TableOfContents.java
ex/code/Dops.java
ex/file/DexFile.java
ex/file/HeaderItem.java
en/DexGenerator.java
092412605d5d500456e9fff475c90691e668b914 24-May-2011 Elliott Hughes <enh@google.com> Minor documentation changes.

Change-Id: I487f915a55158e59533cd70cb030f127979864a8
f/direct/DirectClassFile.java
152881b77838bc2f01e06db260695af40c10991e 29-Apr-2011 jeffhao <jeffhao@google.com> Merge "Bugfix for constant propagation of float/double division/modulo." into dalvik-dev
a5c2841940fa668710652ae1588985feb6d57913 29-Apr-2011 jeffhao <jeffhao@google.com> Bugfix for constant propagation of float/double division/modulo.

Change-Id: I2887749d9aa7739e79e4aac976957f5a422d2217
sa/SCCP.java
1c7c32e2ff5d9f6a3c0319e9d0088261f2cccb2b 29-Apr-2011 Elliott Hughes <enh@google.com> Enhance FindUsages to treat its strings as regular expressions.

So we can look for, say, 'Ljava/nio/(Char|Short)Buffer;' 'allocate(Direct)?'.

Change-Id: Ia17daa67c3d6ca5e7831bd8448a21251861a834e
ommand/findusages/FindUsages.java
ommand/findusages/Main.java
o/FieldId.java
o/MethodId.java
erge/TypeList.java
200b0df27a42f01d1270c866876e3f492c25bd41 26-Apr-2011 jeffhao <jeffhao@google.com> Bug fix for SCCP improperly handling phis with some constant sources.

Change-Id: Ifa9424f822aac1e88267e02696b7ff0c18227dd0
sa/SCCP.java
333201833d506a3accdeac6ceb7caba8d4b95797 13-Apr-2011 Jesse Wilson <jessewilson@google.com> Combine CstUtf8 and CstString.

The only benefit we were seeing is that one wrapped its toHuman
in quotes, the other didn't.

It was far too easy to use the wrong one. We had code defending
against that in NameValuePair and CstArray.

Change-Id: Ib2e6a1596b97decced37952d46e1831b7bcd0d5d
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/InnerClassList.java
f/code/BasicBlocker.java
f/code/ConcreteMethod.java
f/code/LocalVariableList.java
f/code/RopperMachine.java
f/code/Simulator.java
f/cst/ConstantPoolParser.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/DirectClassFile.java
f/direct/MemberListParser.java
f/direct/StdAttributeFactory.java
f/iface/ClassFile.java
f/iface/Member.java
f/iface/StdMember.java
ommand/dexer/Main.java
ex/cf/AttributeTranslator.java
ex/cf/CfTranslator.java
ex/code/InsnFormat.java
ex/code/LocalList.java
ex/code/OutputFinisher.java
ex/code/RopToDop.java
ex/file/AnnotationItem.java
ex/file/AnnotationUtils.java
ex/file/ClassDefItem.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/HeaderItem.java
ex/file/ProtoIdItem.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/ValueEncoder.java
en/DexGenerator.java
en/FieldId.java
en/MethodId.java
op/annotation/Annotation.java
op/annotation/NameValuePair.java
op/code/Insn.java
op/code/LocalItem.java
op/code/RegisterSpec.java
op/code/RegisterSpecSet.java
op/code/SourcePosition.java
op/code/ThrowingCstInsn.java
op/cst/CstArray.java
op/cst/CstFieldRef.java
op/cst/CstMemberRef.java
op/cst/CstNat.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/TypedConstant.java
sa/ConstCollector.java
sa/EscapeAnalysis.java
eba7057935e122d8a9234154ea97e3fa32452a4f 19-Apr-2011 Jesse Wilson <jessewilson@google.com> Change Type, Method and Field to be IDs rather than values.

This makes it possible to declare constants for types like
void and int.

http://code.google.com/p/android/issues/detail?id=6322

Change-Id: Ic0b6e7d9b89aba40457c3015b75ab24c413a6f33
ex/code/OutputFinisher.java
en/Canonicalizer.java
en/Code.java
en/Constants.java
en/DexGenerator.java
en/Field.java
en/FieldId.java
en/Local.java
en/Method.java
en/MethodId.java
en/Type.java
61ad16e4b825585bcdeb32a5a7f76cf523199241 16-Apr-2011 Jesse Wilson <jessewilson@google.com> Support catch blocks.

Add support for throw calls. This is awkwardly named throwValue
because 'throw' is a keyword. Better names very welcome.

Add support for unused parameters.

Add support for float, double and long comparisons.

Add support for array operations.

Change-Id: I48380fca06c13175cd13b4e3613a4ba63902ed33
http://code.google.com/p/android/issues/detail?id=6322
en/Code.java
en/Label.java
en/Local.java
en/Method.java
en/TypeList.java
da2a9cbd9df97adab3053c9831279052e490e3ac 15-Apr-2011 Jesse Wilson <jessewilson@google.com> Return Code instances from Method.declare.

Add type cast, and instanceof.
Add a unit test for recursive method calls.
Add return type checking.
Improve documentation on BinaryOp.

Change-Id: Ib85ed81be90756793067913efe86e1e442483f76
http://code.google.com/p/android/issues/detail?id=6322
en/BinaryOp.java
en/Code.java
en/DexGenerator.java
en/Field.java
en/Local.java
en/Method.java
en/Type.java
b665fb24d785e27480cc9b8debcf9edf4ac65d2c 15-Apr-2011 Jesse Wilson <jessewilson@google.com> Don't require a dalvikvm to build.

Change-Id: I362820131580dfd1c6fc1eb45d0264723730f865
http://code.google.com/p/android/issues/detail?id=6322
en/DexGenerator.java
376e9e5a71761ed687ce107f72f42b2ba93825f1 15-Apr-2011 Jesse Wilson <jessewilson@google.com> Merge "Bare-bones dex code generator." into dalvik-dev
ed0fe6c2f310f8c2cc28c35c2b473d8de36db8a4 14-Apr-2011 Jesse Wilson <jessewilson@google.com> Bare-bones dex code generator.

This is functional but incomplete. In particular, the following
are still coming:
- instructions for cast/instanceof/arrays/float comparison/try/catch
- debug information
- annotations

The API is also incomplete. When this is done I'm going to remove
the type parameters to see if that's a net win. I suspect it will
be because generics currently hurt the ability to do assignments
between unknown types - you can't currently assign from Label<?> to
Label<?>, for example.

I'm anticipating changes to the way Code instances are created.
In the current API these are created without an attached method and
later attached to a method with Method.declare(). This doesn't work
very well, particularly since the code blocks don't know how many
parameters they take, whether they're static, or what their return
type is. I'm tempted to make declare() return a writable Code instance,
or to simply combine the Code and Method classes.

This code can benefit from more error detection. It's currently quite
easy to do bad things with labels: use them on the wrong Code instance,
reuse them, don't use them, etc. Better error checking is due here.

Change-Id: I4fe20552f2c571e41bedba6ff9db6686688d97ee
http://code.google.com/p/android/issues/detail?id=6322
f/code/ConcreteMethod.java
ex/code/OutputFinisher.java
en/BinaryOp.java
en/Canonicalizer.java
en/Code.java
en/Comparison.java
en/Constants.java
en/DexGenerator.java
en/Field.java
en/Label.java
en/Local.java
en/Method.java
en/Type.java
en/TypeList.java
op/code/BasicBlock.java
op/code/Rops.java
op/type/Prototype.java
op/type/Type.java
sa/LiteralOpUpgrader.java
56ff6fe7f312dab76c365e5b482a6c32e44caaf7 11-Apr-2011 jeffhao <jeffhao@google.com> Dx block dumper no longer fails on abstract and native methods.

Change-Id: I3bad07a1621c0ef4bc495816b2438cab9401a828
ommand/dump/BlockDumper.java
ommand/dump/SsaDumper.java
224fa21f414340325cb5e33897177aef9eb5069f 09-Apr-2011 jeffhao <jeffhao@google.com> Updated dx to emit rsub instructions whenever it can.

Change-Id: I148c03fdc19dde8aece448e288d3c963490c9d0f
op/code/PlainInsn.java
1800713d172abd729e4eea04b1bf2110d4e5fd1a 08-Apr-2011 jeffhao <jeffhao@google.com> Bug fix for rsubs being improperly generated.

This will miss some opportunities to generate rsubs, and has been marked
by a TODO note where code needs to be added.

Change-Id: I6dd2c7a5bb82294ee5f88ba41191e473133ed847
op/code/Insn.java
op/code/PlainInsn.java
sa/NormalSsaInsn.java
afe002d1474d7c2ef2ac80de32f21f1949af2a41 07-Apr-2011 Dan Bornstein <danfuzz@android.com> Update the interpretation of --target-api.

Change-Id: I4ab158384d09470d84097d944ae1ddadeb2ad045
ommand/dexer/Main.java
38b61748553bd387bc36b6bd82a8667b6c5f5934 24-Mar-2011 jeffhao <jeffhao@google.com> Various dx fixes to make it preserve locals and debug info.

The SCCP pass checks if a register has associated local info before
attepting to prune branches or replace values with constants. Also, the
register allocator reserves a register for each local in a method. This
could be later improved by only reserving registers for the lengths of
their lifetimes as specified by the local info table.

Change-Id: I654ac014a9aac530f1db0db7d5cdef7535ff49bf
sa/LiteralOpUpgrader.java
sa/SCCP.java
sa/back/FirstFitLocalCombiningAllocator.java
f54258b98c9ab941881625e5509bb902088a99e6 24-Mar-2011 Jesse Wilson <jessewilson@google.com> Merge "Use PrintWriter rather than PrintStream in dex analysis tools." into dalvik-dev
6bf7f30e6968d9917eb4d0ca2280df96a8096134 24-Mar-2011 Jesse Wilson <jessewilson@google.com> Use PrintWriter rather than PrintStream in dex analysis tools.

Writers make it easier to create strings, useful when these
tools are used as building blocks for other tools.

Change-Id: I8eac49719b130551df216f42eaafb942203da0d0
ommand/findusages/FindUsages.java
ommand/findusages/Main.java
ommand/grep/Grep.java
ommand/grep/Main.java
09dc1b7301e8b03fc6772b022d21afe9cb077d89 22-Mar-2011 Dan Bornstein <danfuzz@android.com> Make sure both options objects get created.

Previously, the new DexOptions object would only get created when
calling dx as a command directly, but not when it was used as a
library (via a call to Main.run()).

Change-Id: Ie4f37ff9140539a4f2c7af50228ac6eaf6bebe05
ommand/dexer/Main.java
a346a60f5fcc8572ee67c79a596349604f696a39 21-Mar-2011 Dan Bornstein <danfuzz@android.com> Update version number.

Change-Id: Id000377c913927e56a7e9e1732ff24f52bc25970
ersion.java
9f655606b10fdbf2c9e240a42c78f0eb4798acaf 21-Mar-2011 Dan Bornstein <danfuzz@android.com> Clarify the comments some more.

Change-Id: I39e10b20e38f1792efa5dc4458c5cf0e8614f731
o/Opcodes.java
18fde740e929347510f08b0b5faccd2bac1d4c22 21-Mar-2011 Dan Bornstein <danfuzz@android.com> Clarify / correct comments.

Change-Id: I67861a0253a97a462be42cbd1b3c7ac02f8e5352
o/Opcodes.java
f4955a1a2eb1c06aafc9e314b221c448d15623d9 17-Mar-2011 Dan Bornstein <danfuzz@android.com> Add opcode-emission backward compatibility.

This makes it so that when you pass dx --target-api=N, where N is an
API level representing Honeycomb or earlier, dx will not emit any of
the new extended opcodes.

N is currently baked into the code as 12 or larger being
post-Honeycomb, but it is subject to change if there are more revs of
the API under the Honeycomb umbrella (which wouldn't be surprising).

Bug: 4094709
Change-Id: Iaf5177f179b22586bcf806ecb53de20b6e989777
ex/code/Dops.java
o/Opcodes.java
fafd21d56ba27f2a8629a6684209e86a37a65ac1 17-Mar-2011 jeffhao <jeffhao@google.com> Merge "Register allocator uses single reg for each local when possible." into dalvik-dev
09d308b04b7c4fd3ed83a8f8f4c07be67a25478c 17-Mar-2011 Jesse Wilson <jessewilson@google.com> Add support for pre-dexed libraries to dx.

http://b/4090053

Change-Id: Ifb8b9230939cb2a72a767128f79cbfbd042e95a6
ommand/dexer/Main.java
ommand/findusages/Main.java
ommand/grep/Main.java
o/DexBuffer.java
o/DexIndexPrinter.java
erge/CollisionPolicy.java
erge/DexMerger.java
2e31a719118f7b6c8d6c987d27532c29530cc9c8 17-Mar-2011 jeffhao <jeffhao@google.com> Register allocator uses single reg for each local when possible.

Changes the register allocator to try much harder to map all SSA regs
associated with a local variable to the same register. Also, the
register allocator won't try to reuse parameter space for locals
like it used to, which would often lead to many unnecessary moves.

Change-Id: Ie012072015993204ef4b3f4e74a0eb94fdb10bc1
sa/back/FirstFitLocalCombiningAllocator.java
d2b1c42f8834a2bd6120dca9502b97913372719d 17-Mar-2011 Jesse Wilson <jessewilson@google.com> Merge "Don't emit multiple copies of annotations when merging dex files." into dalvik-dev
bd3dba4346223593ac6033a3d2a7d8ec6f20738b 16-Mar-2011 Jesse Wilson <jessewilson@google.com> Don't emit multiple copies of annotations when merging dex files.

This change requires all annotations to be loaded into memory
so they can be sorted. There does not appear to be a required
order to the annotations in .dex files. Loading annotations also
requires loading encoded values, which makes this into a large
refactoring.

Change-Id: Ib7e2656c595018be4e9936eb84a22f1c1de56750
http://b/4090053
ommand/findusages/FindUsages.java
ex/file/DebugInfoDecoder.java
o/Annotation.java
o/Code.java
o/DexBuffer.java
o/EncodedValue.java
o/EncodedValueReader.java
o/FieldId.java
o/MethodId.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
erge/IndexMap.java
til/ByteArrayAnnotatedOutput.java
til/ByteArrayByteInput.java
til/ByteInput.java
til/ByteOutput.java
til/Leb128Utils.java
til/Mutf8.java
til/Output.java
3dfda9ad1964510e4a7948a240b30cd710e86341 17-Mar-2011 Dan Bornstein <danfuzz@android.com> Add --target-api=N option to dx.

This change adds the option and plumbs it into where it
needs to go, but doesn't add any code to take action on it.
That will come in a follow-up.

Bug: 4094709
Change-Id: I9c796e176e125b0bcee18af56d9e6da802dfa081
ommand/dexer/Main.java
ex/DexOptions.java
ex/cf/CfTranslator.java
ex/code/Dops.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/RopTranslator.java
0ebdfc22385095c75fbced79edc1d1e75b504213 15-Mar-2011 Jesse Wilson <jessewilson@google.com> Fix bugs in instruction parsing for incremental dx.

Change-Id: I9557e835e846d42689786833395eecdbbbe6174c
http://b/3447216
o/instructions/InstructionCodec.java
erge/DexMerger.java
66fd70afb7f73bbe35ac83ddfaa6c6161d7ef84d 12-Mar-2011 Jesse Wilson <jessewilson@google.com> Merge "Fix bugs in incremental dx." into dalvik-dev
d1e1668224cde06bbe5ad8953c7fb86d1d0d40e4 11-Mar-2011 Jesse Wilson <jessewilson@google.com> Fix bugs in incremental dx.

The compaction code used to merge a dex with itself. This caused
problems because annotations would be duplicated. Now the dex is
merged with an empty dex. I've changed the section default from
-1 to 0 to make the empty dex trivial to construct.

It also had a correctness problem where we were using the wrong
offsets when merging indexed values. Move the offsets out of the
loop so they aren't reset.

Change-Id: Ibcf24de8f96c2c525ca2e2ac44550239e3cf689e
http://b/3447216
ex/TableOfContents.java
o/DexBuffer.java
erge/DexMerger.java
erge/IndexMap.java
c31f795aef67a0d6af9abe4610db5ecae8d30c19 12-Mar-2011 jeffhao <jeffhao@google.com> Verifier allows certain errors so they can fail at runtime.

Specifically, this relaxes array typing in the absense of local variable
info.

Change-Id: I1b1aeb64a0842be3cffe70c02418444457abe972
f/code/BaseMachine.java
f/code/ExecutionStack.java
f/code/Machine.java
f/code/Simulator.java
87508f44a0ace550ae397ab83fc2a0fe1967259f 08-Mar-2011 Jesse Wilson <jessewilson@google.com> Merge "Permit dx to build resource-only dex files." into dalvik-dev
d2b3f499be6f5b1d4076b1244be3d1501d178315 08-Mar-2011 Jesse Wilson <jessewilson@google.com> Permit dx to build resource-only dex files.

Previously it would build a .jar file containing a classes.dex
that itself contained no classes.

Change-Id: I9c36a5dcdd17d2821be15f87656d72ef0048c113
ommand/dexer/Main.java
ex/file/DexFile.java
ae38a1e705253b53abf1beff7dc3467d52c58f32 08-Mar-2011 Jesse Wilson <jessewilson@google.com> Add a tool to grep the strings in a dex file.

Change-Id: I21b8537518718350def2f847e9c76ae4154bd4d6
http://b/4026001
ommand/grep/Grep.java
ommand/grep/Main.java
o/EncodedValueReader.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
cfb32121210a260fab1c010e134738d1e32c567e 03-Mar-2011 Dan Bornstein <danfuzz@android.com> Let dx generate the new extended instructions.

Bug: 2557227
Change-Id: I8ca2479cbc76de6bf3bd746bad8ceb99b732d8c5
ex/code/InsnFormat.java
b6f966024be7d6dd260735c9e541e23572f26f37 28-Feb-2011 jeffhao <jeffhao@google.com> Improved register allocation for check-cast instructions.

Check-cast instructions that don't use the same register for source and
destination no longer use an intermediate register due to expansion.
This saves a move instruction and, in some cases, a register.

Change-Id: Ib704fe51ec172e05efbff708e8b63004457cc8cb
sa/back/FirstFitLocalCombiningAllocator.java
1acb3f560b45df68d5acdcb2759de1f78ef5da7c 24-Feb-2011 jeffhao <jeffhao@google.com> Changed dx register allocator to place more phis and reuse locals.

This change makes the register allocator try to place all phis earlier,
by using whichever register is most common among its sources and result.

In addition, the code tries much harder to reuse registers originally
reserved for locals if they are no longer live. This leads to fewer
registers in many methods.

Change-Id: I5f69320686184f784384f5cf3a1d9c97e44ec19d
sa/back/FirstFitLocalCombiningAllocator.java
20d269ea2a9e8d41b298134f3937c6d959288b53 19-Feb-2011 Jesse Wilson <jessewilson@google.com> Retain annotations when merging dex files.

This change has one major limitation: it doesn't deduplicate
equal annotation directories or annotation sets across dex
files. That will result in unnecessarily large dex files.

Change-Id: If63273d16eba1d989c6b5695d102b378d4047119
http://b/3447216
ex/TableOfContents.java
o/DexBuffer.java
erge/DexMerger.java
erge/IndexMap.java
e29f5a2f4229e1f5927580e355c20b15c5fb4820 18-Feb-2011 Jesse Wilson <jessewilson@google.com> Merge "Return unsigned shorts in ShortArrayCodeInput." into dalvik-dev
5b1ea45fb79277b8dbe770eca437012896ac34c8 18-Feb-2011 Jesse Wilson <jessewilson@google.com> Return unsigned shorts in ShortArrayCodeInput.

Follow up to I9a77541b994f184da0e389840e5cac728ad6c072
http://b/3447216

Change-Id: I0746ab58aa765d83274931a95ecea0b56c3581d7
o/instructions/ShortArrayCodeInput.java
d375ef167d9f8202d97e7b09cd8fb3bb322f7c16 17-Feb-2011 jeffhao <jeffhao@google.com> Merge "Fix for complex jsr nesting causing NullPointerException." into dalvik-dev
4ceb6bc262c780c456c4d40222a2d0a56eaec02a 16-Feb-2011 Jesse Wilson <jessewilson@google.com> Emit compact ouput .dex files.

Change-Id: I69ca23b53a542db7e7a18d819795e795bf0822c0
http://b/3447216
ex/TableOfContents.java
o/DexBuffer.java
erge/DexMerger.java
6b386bfb92ef6efe8f963270fc5a4b756fca225e 15-Feb-2011 jeffhao <jeffhao@google.com> Fix for complex jsr nesting causing NullPointerException.

Happens when one jsr calls another that ultimates throws an exception.
The subroutine inliner assumes the return block of the first jsr is
reachable when it's not, causing access to a null field. Fixed by
checking the field for null before accessing it.

Change-Id: Id1fb376c9f14ffebc77cdbd253a713eb6d949c1f
f/code/BytecodeArray.java
f/code/Ropper.java
cdef3ed061e2a045d956ea613556a67f9ac6e9d0 15-Feb-2011 Jesse Wilson <jessewilson@google.com> Deduplicate type lists on merged .dex files.

Change-Id: Ic089fecebb66544dfdb422421cce47a6f203a31a
http://b/3447216
o/ClassDef.java
o/DexBuffer.java
o/ProtoId.java
erge/DexMerger.java
erge/IndexMap.java
erge/TypeList.java
a25fcb3f819d2251e81acb9a9757cce65e4b4ba9 15-Feb-2011 Jesse Wilson <jessewilson@google.com> Merge "Fix some bugs in the new dx instruction code." into dalvik-dev
1bbb3378b108329c7ab75713fe9507b7ffc7f885 15-Feb-2011 Jesse Wilson <jessewilson@google.com> Fix some bugs in the new dx instruction code.

http://b/3447216

Change-Id: I9a77541b994f184da0e389840e5cac728ad6c072
o/instructions/DecodedInstruction.java
o/instructions/InstructionCodec.java
o/instructions/ShortArrayCodeInput.java
erge/InstructionTransformer.java
dda78f6b9b6823fb4dc4eb7aada45123e5d95b24 12-Feb-2011 jeffhao <jeffhao@google.com> Fix to allow SCCP to correctly propagate division and remainer ops.

Also updated expected values for the const collector test.

Change-Id: Iedcf17d776c60cb6174f7a7c9f75be84d2c38020
sa/SCCP.java
95e34fe4357c34da3bfb39404b18e8dc2664ad50 10-Feb-2011 jeffhao <jeffhao@google.com> Reverting SCCP change to division because the system doesn't start.

Temporarily reverting change to allow the system to boot while the
root cause is determined.

Change-Id: Ife1fb6fc99fead9eb72fff8415969fc4955ff7cd
sa/SCCP.java
e1c3a8e2203881759efec3538cc654937de1d817 10-Feb-2011 jeffhao <jeffhao@google.com> Added support for integer division to SCCP.

Division generates a result that must be fetched with a
move-result-pseudo instruction. SCCP originally had no way of tying the
division with the result it generates. This change should allow proper
constant propagation when division of integers is involved.

Change-Id: Ib7c5d2dd26eea3ab6545b613a540f0161a8e1642
sa/LiteralOpUpgrader.java
sa/SCCP.java
b75d1ca580c6a6c7ebdc813dff2855205063fc46 08-Feb-2011 jeffhao <jeffhao@google.com> SCCP propagates more constants and prunes unexecuted paths from branches.

The SCCP pass now more aggressively propagates constant values through
the code. Combined with changes to the LiteralOpUpgrader, instructions
with known constant results will be replaced with a simple const
instruction.

In addition, the SCCP pass can now find branches with constant conditions
and remove the branch path that never ends up being executed. Because of
the way finally blocks end up being replicated, this tends to prune away
error handling when no exception occurs, and hard code error handling
when an exception happens.

Change-Id: I6f3330151ec387c8a1e7ce098ff6cdb8d0ce5606
op/code/LocalVariableInfo.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/LiteralOpUpgrader.java
sa/Optimizer.java
sa/PhiInsn.java
sa/SCCP.java
sa/back/SsaToRop.java
dc520adfdcf0f0e9190cdb90605c42a7cc8fa98f 07-Feb-2011 Dan Bornstein <danfuzz@android.com> Fix dex processing when no output file is specified.

This case is mainly exercised in test code.

Change-Id: Ifbcbec3f001cae925090796ce8ed69f6a986384c
ommand/dexer/Main.java
7baa3b69f87348aa2f4f16375a66be59965e8dd4 05-Feb-2011 Dan Bornstein <danfuzz@android.com> Move DexException to dx.util.

Change-Id: I86bf83bc3adcc55eb8bbeac2fc28822cb5f2d2b9
ex/DexException.java
ex/TableOfContents.java
o/CodeReader.java
o/DexBuffer.java
o/instructions/DecodedInstruction.java
o/instructions/InstructionCodec.java
erge/InstructionTransformer.java
til/DexException.java
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
ommand/findusages/FindUsages.java
o/AddressMap.java
o/BaseCodeCursor.java
o/CodeCursor.java
o/CodeInput.java
o/CodeOutput.java
o/CodeReader.java
o/DecodedInstruction.java
o/FillArrayDataPayloadDecodedInstruction.java
o/FiveRegisterDecodedInstruction.java
o/FourRegisterDecodedInstruction.java
o/InstructionCodec.java
o/OneRegisterDecodedInstruction.java
o/OpcodeInfo.java
o/PackedSwitchPayloadDecodedInstruction.java
o/RegisterRangeDecodedInstruction.java
o/ShortArrayCodeInput.java
o/ShortArrayCodeOutput.java
o/SparseSwitchPayloadDecodedInstruction.java
o/ThreeRegisterDecodedInstruction.java
o/TwoRegisterDecodedInstruction.java
o/ZeroRegisterDecodedInstruction.java
o/instructions/AddressMap.java
o/instructions/BaseCodeCursor.java
o/instructions/CodeCursor.java
o/instructions/CodeInput.java
o/instructions/CodeOutput.java
o/instructions/DecodedInstruction.java
o/instructions/FillArrayDataPayloadDecodedInstruction.java
o/instructions/FiveRegisterDecodedInstruction.java
o/instructions/FourRegisterDecodedInstruction.java
o/instructions/InstructionCodec.java
o/instructions/OneRegisterDecodedInstruction.java
o/instructions/PackedSwitchPayloadDecodedInstruction.java
o/instructions/RegisterRangeDecodedInstruction.java
o/instructions/ShortArrayCodeInput.java
o/instructions/ShortArrayCodeOutput.java
o/instructions/SparseSwitchPayloadDecodedInstruction.java
o/instructions/ThreeRegisterDecodedInstruction.java
o/instructions/TwoRegisterDecodedInstruction.java
o/instructions/ZeroRegisterDecodedInstruction.java
erge/InstructionTransformer.java
d63837a6a16a19e3ae943cdfad52b6f6c8d04a22 04-Feb-2011 Dan Bornstein <danfuzz@android.com> Clean up targets and data payloads.

In particular:
* Fix target calculation to be properly relative when encoding.
* Add data payload variants of DecodedInstruction, and en/decode using them.
* Remove the uninterpreted data member from the base DecodedInstruction.

This change introduces the concept of an "address map" that is built
up while reading or writing code, which is used when en/decoding
switch data payload instructions, so that they can decode targets into
absolute addresses and encode targets into relative addresses. The
deal is that the relative addresses encoded in these payload
instructions are relative to the address of the dependant switch
instruction and not the address of the payload instruction.

Change-Id: I43cb014f1af75a31bbf0b757e4854a9dc865eab7
o/AddressMap.java
o/BaseCodeCursor.java
o/CodeCursor.java
o/CodeInput.java
o/CodeOutput.java
o/DecodedInstruction.java
o/FillArrayDataPayloadDecodedInstruction.java
o/FiveRegisterDecodedInstruction.java
o/FourRegisterDecodedInstruction.java
o/InstructionCodec.java
o/OneRegisterDecodedInstruction.java
o/PackedSwitchPayloadDecodedInstruction.java
o/RegisterRangeDecodedInstruction.java
o/ShortArrayCodeInput.java
o/ShortArrayCodeOutput.java
o/SparseSwitchPayloadDecodedInstruction.java
o/ThreeRegisterDecodedInstruction.java
o/TwoRegisterDecodedInstruction.java
o/ZeroRegisterDecodedInstruction.java
a5a7c167cdd9e821573e04c0e15e7623e5ec58fb 04-Feb-2011 Dan Bornstein <danfuzz@android.com> Merge "Make some "argument shape" be represented by subclassing." into dalvik-dev
740fce415cf1a982e9b035604f432eed378fbd05 03-Feb-2011 Dan Bornstein <danfuzz@android.com> Make some "argument shape" be represented by subclassing.

In particular, this splits out subclasses for each possible fixed
register count as well as one for register ranges. A follow-up patch
will introduce explicit DecodedInstruction subclasses for payload data
instructions, which is actually the original motivation for this
change, though this change makes InstructionCodec get cleaner in most
of the decoders (at the expense of one decoder that gets a bit
uglier). C'est la guerre.

Change-Id: Ib22280ba86c9d087c396845bf94266d3e2894db5
o/DecodedInstruction.java
o/FiveRegisterDecodedInstruction.java
o/FourRegisterDecodedInstruction.java
o/InstructionCodec.java
o/OneRegisterDecodedInstruction.java
o/RegisterRangeDecodedInstruction.java
o/ThreeRegisterDecodedInstruction.java
o/TwoRegisterDecodedInstruction.java
o/ZeroRegisterDecodedInstruction.java
ac551941ff90aa59facdc857c506440d62dd9da0 03-Feb-2011 jeffhao <jeffhao@google.com> Merge "Fixed SCCP to properly propagate reverse subtraction." into dalvik-dev
e9176c9b9a812dc2444c82676149d5dca3231174 03-Feb-2011 jeffhao <jeffhao@google.com> Fixed SCCP to properly propagate reverse subtraction.

Change-Id: If9c83d2f9ce5de466e6c7b4108bda54d2d025dd6
sa/SCCP.java
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
o/CodeReader.java
o/IndexType.java
o/OpcodeInfo.java
17cae2df2191566bf17783cb591c9800b1efb07d 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Simplify string transformation.

Also, check for index jumboization across the board.

Change-Id: I7a5a15f80155b7061b8bc6e15ffa315873ad1626
o/CodeReader.java
erge/InstructionTransformer.java
86f38347e3aa34c146ccba141bb091b340b7791a 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Add range checking to DecodedInstruction.

This fixes some cases where encoding would have silently truncated values.
There may be some other lurking cases, and the new methods in this patch
are meant to be used prophylactically as necessary.

Change-Id: I57372d679e36c53975e0d2af246bbab76fcac7c9
ex/DexException.java
o/DecodedInstruction.java
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
ommand/findusages/FindUsages.java
ex/code/Dop.java
ex/code/Dops.java
o/CodeReader.java
o/OpcodeInfo.java
erge/InstructionTransformer.java
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
ommand/findusages/FindUsages.java
o/CodeInput.java
o/CodeReader.java
o/DecodedInstruction.java
o/ShortArrayCodeInput.java
o/ShortArrayCodeOutput.java
erge/InstructionTransformer.java
0c6b7eb528615d1bf92cc1e83a70c52718efa417 02-Feb-2011 Dan Bornstein <danfuzz@android.com> Clarify cursor().

Change-Id: I417b495fe524c6feaa2ec6a4e2cd6726012c8d18
o/CodeInput.java
32dd826ad1742993cf0627448cd083a5021d71bb 01-Feb-2011 Dan Bornstein <danfuzz@android.com> More progress on instruction coding.

* Redefine the target to be an absolute, not relative, offset.
* Add a cursor to the CodeInput API.
* Recognize payload opcodes as valid.
* Add codecs for the payload instructions.

Change-Id: I77f8e5a9e2b6b72f6a1f5ecc2eb4d701edd66837
o/CodeInput.java
o/CodeOutput.java
o/DecodedInstruction.java
o/InstructionCodec.java
o/OpcodeInfo.java
o/Opcodes.java
o/ShortArrayCodeInput.java
e803b3098d50159b550df1d672dc6d155fd44f2c 01-Feb-2011 Dan Bornstein <danfuzz@android.com> Merge "Add more direct encode() and decode() methods." into dalvik-dev
16c26e7c49691226285744fe08b7e38b541c56f7 01-Feb-2011 jeffhao <jeffhao@google.com> Merge "Changed reg allocator to try mapping phi sources/result to the same reg." into dalvik-dev
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
o/CodeReader.java
o/DecodedInstruction.java
o/OpcodeInfo.java
o/Opcodes.java
19cefdcde26ea31d06cef031032b2ef78013d976 01-Feb-2011 Dan Bornstein <danfuzz@android.com> Add ShortArrayCodeInput.

This is analogous to ByteArrayInputStream, and is hopefully useful
as-is to be the impedence matcher between CodeReader and InstructionCodec.

I also modified CodeInput's methods to throw EOFException, implementing
ShortArrayCodeInput to throw it in the expected cases.

Change-Id: Id46366590ed5a2607bc6672d040f9d11fa8a445d
Bonus: Fixed a comment in BytecodeArray that I happened to notice.
f/code/BytecodeArray.java
o/CodeInput.java
o/CodeOutput.java
o/InstructionCodec.java
o/ShortArrayCodeInput.java
7ba91291bb6ce64691398a8751656207e8e3e98d 30-Jan-2011 Dan Bornstein <danfuzz@android.com> Move dx.dex.code.DalvOps -> dx.io.Opcodes.

This breaks a nascent circular dependency, keeping dx.io the lower layer.

Bonus: While I was in the territory, I clarified the data payload
opcodes, including adding explicit constants for them.

Change-Id: I8655064ebc3b5713cbb4a6c83bcc90984393701f
ex/code/ArrayData.java
ex/code/DalvInsnList.java
ex/code/DalvOps.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/OddSpacer.java
ex/code/OutputFinisher.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SwitchData.java
ex/code/form/SpecialFormat.java
o/DecodedInstruction.java
o/InstructionCodec.java
o/OpcodeInfo.java
o/Opcodes.java
3c5df37a2df7368eb274eb097e9cfa2ccc7fffb6 26-Jan-2011 Dan Bornstein <danfuzz@android.com> Basic facility to read/write bytecode.

These classes are meant for reading and writing bytecode at the lowest
possible level, in particular without layering any interpretation of
the instructions beyond understanding the instruction formats. (For
example, constant indices remain numbers and aren't tied to objects
representing constants.)

This patch represents a work-in-progress that compiles but is as yet
not hooked up to anything else. Hooking it all up will happen in
one or more follow-on patches.

Change-Id: Ifd3b3ff0925dc9dc3d82e507dc1be83cb560031d
o/CodeInput.java
o/CodeOutput.java
o/DecodedInstruction.java
o/IndexType.java
o/InstructionCodec.java
o/OpcodeInfo.java
6ca2505711b24a91385c6bf46dbef5c404dcf65f 29-Jan-2011 jeffhao <jeffhao@google.com> Changed reg allocator to try mapping phi sources/result to the same reg.

The current registor allocator is pretty greedy in how it chooses to
allocate registers. This change makes it attempt to try to map the
sources and result of a phi to the same register if one of them already
has a mapping and that mapping is compatible with the others. This saves
on some register shuffling when the original greedy method got unlucky.

Change-Id: I8afa430ce2ba8d034a9c0452a247d5943bc9cf37
ex/code/RopTranslator.java
sa/back/FirstFitLocalCombiningAllocator.java
4596322b12a72cdeea8deba1242d9b74da5ba12a 25-Jan-2011 jeffhao <jeffhao@google.com> Allow dx to properly generate sub-const and rsub-const insns.

Dx can now handle instructions of the form "reg - const" by converting
it into an equivalent add-const with negative constant. Also, dx can
handle instructions of the form "const - reg" by creating an rsub-const
instruction, which was previously unused.

Change-Id: I67d869b5e14b65f6bbd1daae8bf0c662296af5de
f/code/RopperMachine.java
ex/code/RopToDop.java
op/code/DexTranslationAdvice.java
d0900d13fb7bb1706aff5205af7e2d6517335bee 21-Jan-2011 jeffhao <jeffhao@google.com> Made handling of sim exceptions nicer.

Change-Id: I089512c046d90ea37da4a33433edc4ec308a628d
ommand/dexer/Main.java
25e0b5b03043e84feb90e3b270c5a11aa7b1e42c 19-Jan-2011 Jesse Wilson <jessewilson@google.com> Merge "Add an undocumented --incremental option to dx." into dalvik-dev
dc86cd9edc8b80953c8b698a83cdaebf6825d798 18-Jan-2011 Jesse Wilson <jessewilson@google.com> Add an undocumented --incremental option to dx.

Change-Id: I48879b2f724e9b92c99c669803f9c8de01487327
f/direct/ClassPathOpener.java
ommand/annotool/AnnotationLister.java
ommand/dexer/Main.java
ommand/findusages/FindUsages.java
ommand/findusages/Main.java
ex/DexFormat.java
o/DexBuffer.java
erge/DexMerger.java
til/FileUtils.java
639e44fb5dca8f14da8dacd3e591c3dad2dd44a2 18-Jan-2011 jeffhao <jeffhao@google.com> Merge "Optimized dx instruction expansion to only generate necessary moves." into dalvik-dev
dd79e4e11fa20d6677b70ce6618a8653a1f3520d 17-Jan-2011 jeffhao <jeffhao@google.com> Optimized dx instruction expansion to only generate necessary moves.

When an instruction's fields do not fit into an instruction format, dx
expands the instruction. Before, this would always use new registers for
sources and destination, generating moves for each. However, some of
these moves would be unnecessary if an original register already fit
into the instruction format. This change checks to see if the original
register fits before using a new register and generating a new move.

Change-Id: I17c6722cf4053573bf913a28d631386f2c3a733d
ex/code/DalvInsn.java
ex/code/InsnFormat.java
ex/code/OutputFinisher.java
ex/code/RopTranslator.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32s.java
ex/code/form/Form32x.java
ex/code/form/Form33x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form41c.java
ex/code/form/Form51l.java
ex/code/form/Form52c.java
ex/code/form/Form5rc.java
op/code/RegisterSpecList.java
sa/back/SsaToRop.java
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
ommand/Main.java
ommand/findusages/FindUsages.java
ommand/findusages/Main.java
o/ClassData.java
o/ClassDef.java
o/Code.java
o/CodeReader.java
o/DexBuffer.java
o/DexIndexPrinter.java
o/FieldId.java
o/MethodId.java
o/ProtoId.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
erge/InstructionTransformer.java
dc8ad6cbf19b62d8c50527a0a38fe82b937370f1 15-Jan-2011 Jesse Wilson <jessewilson@google.com> Improve the interface for reading Dex files.

I'm planning on making this code reusable for grepping
dex files.

Change-Id: Iebf545ed6d6a4eb347ccc4a39fe40c02d75d69e4
ex/DexException.java
ex/TableOfContents.java
o/ClassDef.java
o/DexBuffer.java
o/DexHasher.java
o/DexIndexPrinter.java
o/FieldId.java
o/MethodId.java
o/ProtoId.java
erge/DexHasher.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
erge/FieldId.java
erge/IndexMap.java
erge/InstructionTransformer.java
erge/MethodId.java
erge/ProtoId.java
erge/SortableType.java
rint/DexIndexPrinter.java
til/DexReader.java
til/DexWriter.java
dfc5e8e159e7df3efa47d553b7725be22839665d 14-Jan-2011 Jesse Wilson <jessewilson@google.com> Read Dex files from a byte[] rather than a RandomAccessFile.

This improves time to merge a trivial file with core.dex from
3.8 seconds to 0.8 seconds.

Also fixing read method names to be consistent with the spec.

Change-Id: I9033bcb497afe7a0d73e00cca14fa046b53a62bf
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/DebugInfoEncoder.java
ex/file/EncodedField.java
ex/file/EncodedMethod.java
ex/file/StringDataItem.java
ex/file/ValueEncoder.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
til/ByteArrayAnnotatedOutput.java
til/DexReader.java
til/DexWriter.java
til/Mutf8.java
til/Output.java
5a31bab5cef310b202efae550366ee3cb96a8b82 14-Jan-2011 Jesse Wilson <jessewilson@google.com> Merge "New tool merge two dex files into one." into dalvik-dev
081c7142b29ccd6e1744b26e097b6a4d7c12f2bd 04-Jan-2011 Jesse Wilson <jessewilson@google.com> New tool merge two dex files into one.

This code isn't yet ready for general use, but I have booted a device
using a core.jar from the product of a merge. In particular, I still
need to better size the output dex.

The motivation is to support incremental builds in dx. Given a
"--incremental" flag, dx would create a dex file containing only those
classes newer than the target .dex. Then it would merge that small
.dex with the current .dex. Hopefully this yields a nice speedup
over dexing everything.

It would also be possible to use this to do parallel builds. We would
manually partition the input files, dx them, and then merge the result
together.

Change-Id: I8997fb3c8bfe73b64ef38a7cb3d6456fbe799d0f
ex/DexException.java
ex/DexFormat.java
ex/SizeOf.java
ex/TableOfContents.java
ex/file/ClassDefItem.java
ex/file/DebugInfoDecoder.java
ex/file/HeaderItem.java
ex/file/MemberIdItem.java
ex/file/ProtoIdItem.java
ex/file/StringIdItem.java
ex/file/TypeIdItem.java
erge/DexHasher.java
erge/DexMerger.java
erge/EncodedValueTransformer.java
erge/FieldId.java
erge/IndexMap.java
erge/InstructionTransformer.java
erge/MethodId.java
erge/ProtoId.java
erge/SortableType.java
rint/DexIndexPrinter.java
til/ByteArrayAnnotatedOutput.java
til/DexReader.java
til/DexWriter.java
til/Leb128Utils.java
til/Mutf8.java
til/Uint.java
til/Unsigned.java
71eee1f0c2eb514585fdbee16730c9c2209e8f68 04-Jan-2011 jeffhao <jeffhao@google.com> Added vm support for new jumbo opcodes.

This enables jumbo opcodes by default, and they will get used by the
current build without modification. Support has been added for arm, x86,
and the portable interpreter. x86-atom support is on the TODO list. This
commit also includes a test for the new jumbo opcodes.

Change-Id: Ic3f1b41b51645861c5196f76aaf0e96e727ea537
ex/code/InsnFormat.java
b676cbaf93848fd434feb6ddb2bd7270dd91e73f 14-Dec-2010 jeffhao <jeffhao@google.com> Swapped order of registers for jumbo format 5rc to match documentation.

Change-Id: I3da544e9d71c2f4460847928cfa1df54d6c8d42e
ex/code/form/Form5rc.java
9028bfd131e42a58255699d1471c914d58893c61 13-Dec-2010 jeffhao <jeffhao@google.com> Adding javax.sip to the dx blacklist.

Change-Id: I5be068821862ccf073cb758e60b686f46a3c97c1
ommand/dexer/Main.java
a914f8aeb0729989ad0a3d5dfa8ddcfa6cf0df07 22-Nov-2010 jeffhao <jeffhao@google.com> Fixed identification of objects in the Constant Collector.

The constant collector was improperly identifying constant objects,
keying off the move-result-pseudo instruction that gets the result
instead of the const-string/class instruction that generates the
result. The new code fixes this, so that the following block of code
detects that the const-string/class instruction can throw and will
properly ignore objects. Before, since move-result-pseudo can't throw,
it would skip past that block and try to collect the object anyway.

Change-Id: Ia0a8b07cbe5ece8f586581b86e8507d29a2b9e02
sa/ConstCollector.java
675b642510ed79e8a7a3f23126dfac7679fd65b9 20-Nov-2010 Dan Bornstein <danfuzz@android.com> Say kNumDalvikInstructions when appropriate.

In particular, use it instead of just saying 256, and similarly for
255. The number of opcodes will be changing soon.

Change-Id: Icc77120c2673968dddd6b4003f717245d46e4159
op/code/RegOps.java
82901ca4f92ec9e4c47089395a395a619086deb5 19-Nov-2010 Dan Bornstein <danfuzz@android.com> Kill off InsnFormat.nextUp().

This method used to be used during instruction selection, but hasn't
been used since the bytecode.txt file got updated to include format
chains.

Change-Id: Iee827c8b8008a88d56326aecf249299fe92101e1
ex/code/InsnFormat.java
ex/code/form/Form10t.java
ex/code/form/Form10x.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form20t.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32s.java
ex/code/form/Form32x.java
ex/code/form/Form33x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form41c.java
ex/code/form/Form51l.java
ex/code/form/Form52c.java
ex/code/form/Form5rc.java
ex/code/form/SpecialFormat.java
d05e4fd966e8b3eaabd006dcdd76a42900110f12 09-Nov-2010 jeffhao <jeffhao@google.com> Added info for parallel dx switch "num-threads" to help message.

Change-Id: I7fa31ab7160956c135ab95f8411ad359f616403d
ommand/Main.java
de73f8ed3def229f8a5fc065c8955ec87d28e1e7 09-Nov-2010 Dan Bornstein <danfuzz@android.com> Add const-class/jumbo.

I neglected to include this one in my original list of new opcodes.

Change-Id: Ia59b4b2f21516d851f0398361eb5db1cb413aaab
ex/code/DalvOps.java
ex/code/Dops.java
737fac2604600f92a47156a7f15a1f008996a7df 09-Nov-2010 Dan Bornstein <danfuzz@android.com> Add the new jumbo opcodes to dx...almost.

This change adds the new opcodes while simultaneously preventing
them from actually being emitted, the prevention being controlled
by a new flag in InsnFormat.

Empirically speaking, we already have latent demand for the new
opcodes -- specifically because they allow for wider register
references than their wee companions -- and so we can't actually
enable their generation until the VM is prepared to execute them.

If you're wondering why dx without the new opcodes doesn't crap out on
the register references in question, it's because there's code in dx
which will expand an instruction that has non-fitting register
references into a sequence of two or more instructions, where it
shuffles values into and out of usable registers before and/or after
the instruction. When we turn on the jumbo opcodes, at least some
of these register shuffles will immediately get to go away.

Change-Id: I3f921ab07efa4944d7526fa48534d69f508ac249
ex/code/DalvOps.java
ex/code/Dops.java
ex/code/InsnFormat.java
ex/code/form/Form32s.java
ex/code/form/Form33x.java
ex/code/form/Form41c.java
ex/code/form/Form52c.java
ex/code/form/Form5rc.java
25f7980a51488db2ebcd7822c83c3f4b25a2a730 08-Nov-2010 Dan Bornstein <danfuzz@android.com> Another bit of cleanup.

Making it a little easier to have more than 256 opcodes.

Change-Id: I050050f2b6078407dde4d4f214dec2c1a331000c
ex/code/DalvOps.java
ex/code/Dop.java
380dc65454b24ee89274ed26b1188386ece7ccdc 04-Nov-2010 Dan Bornstein <danfuzz@android.com> Use the static opcode chains in dx.

This removes the need to iterate over all possible opcodes looking for
family/format matches whenever the need arises to rewrite an
instruction with a new opcode. This should speed dx up at least a
little, though I don't know if it will be measurable. It's certainly
cleaner and a bit simpler, though.

Change-Id: I779f19cb1249d30f6886faf76670ae37d5dfc402
ex/code/Dops.java
ex/code/OutputFinisher.java
ec85aa98842a86cb68664de8149f8ff495babe79 04-Nov-2010 Dan Bornstein <danfuzz@android.com> Start including the "next opcode" in Dop instances.

Nothing's using it yet, though. Coming soon!

Change-Id: Ide34647fce6ad55fe52c8f6012145b724c134799
ex/code/DalvOps.java
ex/code/Dop.java
ex/code/Dops.java
12209c24903959d41f887c05e6a04e0b08367463 04-Nov-2010 Dan Bornstein <danfuzz@android.com> More prep work for new opcodes.

The opcode-gen script now expects there to be up to 65536 opcodes, and
it generates opcode chain information. The chaining info isn't used
yet, but eventually it will get hooked into the instruction selection
logic in dx, meaning that dx will no longer have to do relatively
slower opcode searches; the right "next" opcode will have been
staticly generated and compiled in.

I also added a helpful generated comment in RopToDop, which indicates
which opcodes are the ones that *won't* be found by chaining, that is,
which ones are the starts of chains. This is left as a comment and not
code, though, since there are lots of quirks with how these get hooked
up. I hope to make this cleaner at some point, but today's not the day
for it.

Change-Id: I11da833cc57b383733743114c0f3e0e64903982d
ex/code/RopToDop.java
e49178a6a7aba223ec27d45d0355a19959bb7f3c 04-Nov-2010 Dan Bornstein <danfuzz@android.com> Line width / spacing tweak.

Change-Id: Idf9c4f56b24e2b150c519f8ed140650183b47a88
ex/code/Dops.java
ccf5cff3faefcf1d44d0ebc141a1f7e7dcee3c62 01-Nov-2010 Dan Bornstein <danfuzz@android.com> Always dump blocks in label order.

This removes some cases of spurious test failure. Also did some
minor whitespace and commenting cleanup while I was in the territory.

Change-Id: I6b8f6d0c340625c31bde78394e77abf429367af3
ommand/dump/BlockDumper.java
til/IntList.java
til/LabeledList.java
893ea594be06711902de7a484c0eecb910356f42 29-Oct-2010 Dan Bornstein <danfuzz@android.com> A bunch of minor cleanups.

I'm reacquainting myself with this code, and figured I might as well
do some of that nit-picky code convention tweakage while I was there.
The only non-whitespace non-comment changes I made were to change the
scope of a couple of methods to be more appropriate.

Change-Id: I550978ed0f5b9ccec938faef7c00d09532832ee4
ommand/dump/BlockDumper.java
op/code/BasicBlockList.java
til/LabeledList.java
ae5bf3dbf425adf20bf6d4ac1786639aa216aeb0 28-Oct-2010 Dan Bornstein <danfuzz@android.com> Up the version number.

Change-Id: Ibf1e0471d1991c0b9ef7df847b427a3aead6fd4d
ersion.java
3d0823c03df73acc786940489dcdd5b8e0d7cefe 28-Oct-2010 Dan Bornstein <danfuzz@android.com> Fix propagation of constants.

In particular, when constructing a rop instruction for a move, if
the source has a known constant value, make the target end up also
having that value.

Change-Id: If172337889134e4a682bb0d8eb4e07ca284ac80e
f/code/BaseMachine.java
f/code/RopperMachine.java
op/code/RegisterSpec.java
590f78fc4b6e3268149c5eacb7c8b7dd33497f44 22-Oct-2010 jeffhao <jeffhao@google.com> Added multi-threaded support to processing of class files in dx.

Change-Id: Ideb54c414073a9651b21ce0697e6444fa80f146d
ommand/dexer/Main.java
op/code/RegisterSpec.java
op/cst/CstType.java
op/type/Prototype.java
op/type/Type.java
9c907e0f7dd74ef351d0116783e088bb9ed68bdb 27-Oct-2010 Dan Bornstein <danfuzz@android.com> The failure of dx test 105 wasn't actually spurious. Fixed the code.

In particular, for array load and store instructions, dx was being too
aggressive about letting the contents of the stack override the
implied type expected by the instructions. This led to cases where dx
would emit code instead of reporting an error.

The failure on the array load side of things implied that there also
needed to be a new regression test on the store side, since the
existing array store test didn't catch this. So, I added that too in
this change.

Finally, I took this opportunity to do minor whitespace-type cleanups
in a couple of related files that I opened during the course of the
investigation.

Change-Id: I72c644f66afb1108ae43a129ac81b010d072155a
f/code/BytecodeArray.java
f/code/Simulator.java
op/type/Type.java
9f7f6a92ebec8dd12e310901301d857e2ee323da 26-Oct-2010 Dan Bornstein <danfuzz@android.com> Implement the new instruction formats.

I also refactored some of the old code in the process, to minimize
duplication, and I also did a minor cleanup of the format spec.

Change-Id: Ib07ea4ade52aa6ec4fa69000798e0cfb8f10c3a9
ex/code/InsnFormat.java
ex/code/form/Form21c.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form31c.java
ex/code/form/Form32s.java
ex/code/form/Form32x.java
ex/code/form/Form33x.java
ex/code/form/Form3rc.java
ex/code/form/Form41c.java
ex/code/form/Form52c.java
ex/code/form/Form5rc.java
0bc9fdeeea3c08f66e34bcc90401b334f75e30e7 25-Oct-2010 Dan Bornstein <danfuzz@android.com> A little instruction format housecleaning and prep work.

Change-Id: Iea9d79d23515090f75cdc32c2123dbfb56e27d3c
ex/code/InsnFormat.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form51l.java
85dc40d2a0cb19792bf3ee6f6c57fed08eb91ea4 27-Sep-2010 Dan Bornstein <danfuzz@android.com> Take another tilt at the "--core-library" messaging windmill.

This time, I added a note about what appears to be the most common
inadvertent triggering, and I point people at JarJar as a possible
solution when the core class inclusion was intentional.

Change-Id: I2d576df0b8944882838cbb6e2b050d59434a238b
ommand/dexer/Main.java
351d37d93c8e2e8fe2e7534f28ff8eac122a92fb 25-Jun-2010 Dan Bornstein <danfuzz@android.com> Refix whitespace removal that I clobbered in my recent merge.

Change-Id: I99048fc98cd7145f18744e1a4fc1a3317dc7c064
ex/cf/AttributeTranslator.java
a854f9525e4c58edef73e52bb8f4df4c553a34fb 25-Jun-2010 Dan Bornstein <danfuzz@android.com> resolved conflicts for merge of 4728a4c3 to dalvik-dev

Change-Id: Id598e32befb55cd99ccf8ff45e50a0de864b7f13
ec022295682131fd8ebd4619343060fd3554319b 24-Jun-2010 Dan Bornstein <danfuzz@android.com> Updated the warning about old-style inner class metadata to reflect
the current understanding of the situation.

The change affects diagnostic output but doesn't change anything about
dex file production, per se. I also added a new test each for dx and
the vm, checking that the warning gets emitted and demonstrating the
effect (respectively).

Though it's a pretty minor change, I bumped up the version number of dx.

Added bonus: Wrapped a couple of too-long lines that I happened to notice.

Bug: 2171430
Change-Id: If6afa4ba88dca9b0e6d88603e0a5fc2e36358115
ersion.java
ex/cf/AttributeTranslator.java
e31ed7e916d212840dd5639afa01938bea58b2b8 10-Jun-2010 jeffhao <jeffhao@google.com> Added escape analysis and scalar replacement of arrays in dx.

Change-Id: Ic7a0e8042860af8ee167444f0b9f92198b1c28b2
sa/DomFront.java
sa/EscapeAnalysis.java
sa/Optimizer.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/back/SsaToRop.java
de75089fb7216d19e9c22cce4dc62a49513477d3 09-Jun-2010 Carl Shapiro <cshapiro@google.com> Remove trailing whitespace.

Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
f/attrib/AttAnnotationDefault.java
f/attrib/AttCode.java
f/attrib/AttConstantValue.java
f/attrib/AttEnclosingMethod.java
f/attrib/AttExceptions.java
f/attrib/AttInnerClasses.java
f/attrib/AttLineNumberTable.java
f/attrib/AttLocalVariableTable.java
f/attrib/AttLocalVariableTypeTable.java
f/attrib/AttRuntimeInvisibleAnnotations.java
f/attrib/AttRuntimeInvisibleParameterAnnotations.java
f/attrib/AttRuntimeVisibleAnnotations.java
f/attrib/AttRuntimeVisibleParameterAnnotations.java
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/BaseAnnotations.java
f/attrib/BaseAttribute.java
f/attrib/BaseLocalVariables.java
f/attrib/BaseParameterAnnotations.java
f/attrib/RawAttribute.java
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlock.java
f/code/ByteCatchList.java
f/code/ByteOps.java
f/code/BytecodeArray.java
f/code/ConcreteMethod.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LineNumberList.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/Merger.java
f/code/ReturnAddress.java
f/code/RopperMachine.java
f/code/Simulator.java
f/code/SwitchList.java
f/code/ValueAwareMachine.java
f/cst/ConstantPoolParser.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/FieldListParser.java
f/direct/MemberListParser.java
f/direct/MethodListParser.java
f/direct/StdAttributeFactory.java
f/iface/ClassFile.java
f/iface/StdAttributeList.java
f/iface/StdField.java
f/iface/StdFieldList.java
f/iface/StdMember.java
f/iface/StdMethod.java
f/iface/StdMethodList.java
ommand/Main.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dexer/Main.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/SsaDumper.java
ex/cf/AttributeTranslator.java
ex/cf/CfOptions.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/code/ArrayData.java
ex/code/BlockAddresses.java
ex/code/CatchBuilder.java
ex/code/CatchHandlerList.java
ex/code/CatchTable.java
ex/code/CodeAddress.java
ex/code/CstInsn.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/FixedSizeInsn.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalEnd.java
ex/code/LocalSnapshot.java
ex/code/LocalStart.java
ex/code/OddSpacer.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/PositionList.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SimpleInsn.java
ex/code/StdCatchBuilder.java
ex/code/SwitchData.java
ex/code/TargetInsn.java
ex/code/VariableSizeInsn.java
ex/code/ZeroSizeInsn.java
ex/code/form/Form22c.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationSetRefItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldAnnotationStruct.java
ex/file/FieldIdItem.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/IdItem.java
ex/file/IndexedItem.java
ex/file/Item.java
ex/file/ItemType.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodAnnotationStruct.java
ex/file/MethodIdItem.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
op/annotation/Annotation.java
op/annotation/AnnotationVisibility.java
op/annotation/Annotations.java
op/annotation/AnnotationsList.java
op/annotation/NameValuePair.java
op/code/AccessFlags.java
op/code/BasicBlock.java
op/code/BasicBlockList.java
op/code/ConservativeTranslationAdvice.java
op/code/CstInsn.java
op/code/Exceptions.java
op/code/FillArrayDataInsn.java
op/code/Insn.java
op/code/InsnList.java
op/code/LocalItem.java
op/code/LocalVariableExtractor.java
op/code/LocalVariableInfo.java
op/code/PlainCstInsn.java
op/code/PlainInsn.java
op/code/RegOps.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RegisterSpecSet.java
op/code/Rop.java
op/code/RopMethod.java
op/code/Rops.java
op/code/SourcePosition.java
op/code/SwitchInsn.java
op/code/ThrowingCstInsn.java
op/code/ThrowingInsn.java
op/cst/Constant.java
op/cst/CstAnnotation.java
op/cst/CstArray.java
op/cst/CstBaseMethodRef.java
op/cst/CstBoolean.java
op/cst/CstByte.java
op/cst/CstChar.java
op/cst/CstDouble.java
op/cst/CstEnumRef.java
op/cst/CstFieldRef.java
op/cst/CstFloat.java
op/cst/CstInteger.java
op/cst/CstInterfaceMethodRef.java
op/cst/CstKnownNull.java
op/cst/CstLiteral32.java
op/cst/CstLiteral64.java
op/cst/CstLiteralBits.java
op/cst/CstLong.java
op/cst/CstMemberRef.java
op/cst/CstMethodRef.java
op/cst/CstNat.java
op/cst/CstShort.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/StdConstantPool.java
op/cst/TypedConstant.java
op/cst/Zeroes.java
op/type/Prototype.java
op/type/StdTypeList.java
op/type/Type.java
op/type/TypeBearer.java
op/type/TypeList.java
sa/BasicRegisterMapper.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/Dominators.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/PhiTypeResolver.java
sa/RegisterMapper.java
sa/SCCP.java
sa/SsaInsn.java
sa/back/IdenticalBlockCombiner.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
til/AnnotatedOutput.java
til/BitIntSet.java
til/Bits.java
til/ByteArray.java
til/ByteArrayAnnotatedOutput.java
til/FileUtils.java
til/FixedSizeList.java
til/Hex.java
til/HexParser.java
til/IndentingWriter.java
til/IntList.java
til/LabeledList.java
til/Leb128Utils.java
til/ListIntSet.java
til/Output.java
til/TwoColumnOutput.java
til/Writers.java
til/_tests/_ListIntSet.java
4751c150542ec282f6c6d58984974edec6c0a045 04-May-2010 Jesse Wilson <jessewilson@google.com> Fixing bulk reads in ByteArray.MyInputStream

This has never worked properly, but it didn't matter until recently
because neither the JDK's nor early Dalvik's DataInputStream was
exercising it. But in 2.0, Dalvik's DataInputStream prefers bulk
reads, which exercises this code when run on-device.

http://code.google.com/p/android/issues/detail?id=8115

The problem was that System.arraycopy call didn't include the start
offset in the call.
til/ByteArray.java
508a92917e983723cd94915592d837a114b69110 04-May-2010 Jesse Wilson <jessewilson@google.com> Fixing bulk reads in ByteArray.MyInputStream

This has never worked properly, but it didn't matter until recently
because neither the JDK's nor early Dalvik's DataInputStream was
exercising it. But in 2.0, Dalvik's DataInputStream prefers bulk
reads, which exercises this code when run on-device.

http://code.google.com/p/android/issues/detail?id=8115

The problem was that System.arraycopy call didn't include the start
offset in the call.
til/ByteArray.java
02f3081cc41387cf2d221a663493cd7458e0f796 23-Feb-2010 jeffhao <jeffhao@google.com> Fixed bug 2438465, prevented blocks with move-result from being combined.
sa/back/IdenticalBlockCombiner.java
b0d01b0178081c98b8cdb2fba2d84f275a0c595e 23-Feb-2010 jeffhao <jeffhao@google.com> Fixed bug 2438465, prevented blocks with move-result from being combined.
sa/back/IdenticalBlockCombiner.java
2859440d31dcb5de958d32a6012c1f8b3c509344 11-Dec-2009 Dan Bornstein <danfuzz@android.com> am c51439a5: Fix a bug where, in static synchronized methods that had no other uses of registers (no locals, no parameters, no method calls with arguments), v0 would be used both to hold the object being synchronized on and to hold a caught exception.

Merge commit 'c51439a513d4cc3c2be4a7cce7b3e9ae480fd5c2' into eclair-mr2-plus-aosp

* commit 'c51439a513d4cc3c2be4a7cce7b3e9ae480fd5c2':
Fix a bug where, in static synchronized methods that had no other uses
c51439a513d4cc3c2be4a7cce7b3e9ae480fd5c2 10-Dec-2009 Dan Bornstein <danfuzz@android.com> Fix a bug where, in static synchronized methods that had no other uses
of registers (no locals, no parameters, no method calls with arguments),
v0 would be used both to hold the object being synchronized on and to hold
a caught exception.

The result was code that, if an exception was thrown through it, would
in turn throw an IllegalMonitorStateException, as the vm would be
asked to monitor-exit the exception object and not the monitor-entered
class.

Dx test 062 has a couple new cases to cover this case as well as the
parallel instance method case (not that the latter was problematic,
but I like the symmetry).
f/code/Ropper.java
78199efa7615ac896c9a116737bb87f3724ead0b 10-Dec-2009 Dan Bornstein <danfuzz@android.com> am 39c5899d: Preflight cleanup of Ropper.java for style, whitespace, etc., before doing some more drastic modifications. Also, bumped up the version number, rather than making changes first and then forgetting that important detail.

Merge commit '39c5899d0359c386815f5f72991a3a2573135dbd' into eclair-mr2-plus-aosp

* commit '39c5899d0359c386815f5f72991a3a2573135dbd':
Preflight cleanup of Ropper.java for style, whitespace, etc., before doing
39c5899d0359c386815f5f72991a3a2573135dbd 10-Dec-2009 Dan Bornstein <danfuzz@android.com> Preflight cleanup of Ropper.java for style, whitespace, etc., before doing
some more drastic modifications. Also, bumped up the version number, rather
than making changes first and then forgetting that important detail.
ersion.java
f/code/Ropper.java
92f4f58df944fd10c77e3d39d200c38c1491a941 15-Sep-2009 Jean-Baptiste Queru <jbq@google.com> merge from open-source master
6d84d361b3c83f1baf9ab23e3f81098702698e37 31-Aug-2009 Alexey Tarasov <tarasov@dodologics.com> Typo fix in javadoc

spec -> otherSpec
ex/code/LocalList.java
30d4c4a0e63f5bd6f1887bb987d7836ea091144e 30-Aug-2009 Alexey Tarasov <tarasov@dodologics.com> Cosmetic change: cst -> type in javadoc @param
f/code/BytecodeArray.java
fe70e8b62f34c595918374aac8494202023f08d3 07-Jul-2009 Jean-Baptiste Queru <jbq@google.com> Merge commit 'c1b54205471ea7824c87e53e0d9e6d4c30518007' into merge_korg_master
43c5658262370beac0b13286d6d7d1b330113e62 19-Jun-2009 Marco Nelissen <marcone@google.com> Replace an iterator with a traditional for loop, to reduce object allocations and memory usage.
sa/SsaBasicBlock.java
f58a5f30d1f0613e9e2dd3a24e6057f970258dae 09-Jun-2009 Dan Bornstein <danfuzz@android.com> At least mostly-fix internal issue #1898095 / public issue #2868.

The problem is that Scala code may have two variables with the same
name that are simultaneously active, and dx didn't expect that ever to
be the case. The fix is simply to catch another case where a local
variable might be considered to become superfluous due to having an
empty extent. However, this is really more of a workaround, as the
result will be that such code when attached to a debugger will only
show one of the two (or more) same-named variables as being active at
any given time.

The thing that prevents a more satisfactory solution is that the
optimization code can end up "splitting up" a single local into
multiple registers, and the only way we have to track them is by
name/type. So, even without Scala's rules, it was already possible to
find a same-named local in multiple registers, but with the status
quo, finding that really meant that a local was moving from one
register to another. The local variable table code handles that case
by automatically "ending" variables that appear to move, and the Scala
case looks just like that.

In the long run, we probably want to have a way to tag local variables
that isn't just name/type, but that will have to come later.

(As a bonus, I did some minor renaming for clarity while I was in the
territory.)
ex/code/LocalList.java
ex/file/DebugInfoEncoder.java
ac5e0e7a30c3a086f5f07f99cd02ef9943356e0c 04-Jun-2009 Ben Gruver <jesusfreke@jesusfreke.com> dx incorrectly writes registers as a signed leb128 in the dex debug info

This has no functional effect, because reading the signed leb128 value
as an unsignedleb128 still produces the same value. But the encoding is
1 byte longer in some cases.
ex/file/DebugInfoEncoder.java
4b4413ab3d8de5805276cfcde3d7f535d9f64e85 18-May-2009 Dan Bornstein <danfuzz@android.com> Fix up the last handful of FindBugs complaints.

And again, also do a bit of whitespace cleanup.
ommand/dump/BlockDumper.java
ex/code/LocalList.java
sa/ConstCollector.java
sa/DomFront.java
sa/PhiInsn.java
sa/SsaRenamer.java
sa/back/SsaToRop.java
til/ByteArray.java
55423dcd081e30c4fc27b997f127db7b00f1b981 15-May-2009 Dan Bornstein <danfuzz@android.com> Fix a bunch of little problems noticed by FindBugs, and cleaned up some
spacing issues that I happened to notice along the way.
f/code/BasicBlocker.java
f/code/LocalVariableList.java
f/code/Ropper.java
ommand/dexer/Main.java
ex/cf/OptimizerOptions.java
ex/code/ArrayData.java
ex/code/StdCatchBuilder.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/CodeItem.java
ex/file/OffsettedItem.java
ex/file/ValueEncoder.java
op/code/LocalVariableExtractor.java
op/code/RegisterSpec.java
sa/SCCP.java
sa/SsaConverter.java
sa/back/RegisterAllocator.java
til/BitIntSet.java
til/IntIterator.java
til/Leb128Utils.java
til/ListIntSet.java
64986d4f1b50a5f3a12e05eb179ae9ad555814e7 05-May-2009 Dan Bornstein <danfuzz@android.com> A foolish consistency is the hobgoblin of little minds.
-- Ralph Waldo Emerson
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaRenamer.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/LivenessAnalyzer.java
41aecd0a6bfea1e9a6713014b2b3d56fec8c552c 04-May-2009 Dan Bornstein <danfuzz@android.com> Tweaks, Mostly grep-based, to better conform to the coding guidelines.
f/code/LocalsArraySet.java
f/code/Ropper.java
f/direct/ClassPathOpener.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dump/SsaDumper.java
ex/file/DebugInfoEncoder.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/SCCP.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/LivenessAnalyzer.java
d3190a0566518c28656cf5e6f41a8e8697775e26 02-May-2009 Dan Bornstein <danfuzz@android.com> Clean up a couple more files.

As usual, I did this while browsing the SSA code in an attempt to
understand what's going on with the weird local register assignment
issue.
sa/SsaMethod.java
sa/back/RegisterAllocator.java
d24414a5d1780ce25179f3467b228f9a53863fb4 17-Apr-2009 Dan Bornstein <danfuzz@android.com> Fix issue #1794388.

In particular, when encountering a known-null being used as an array,
always emit an instruction that's compatible with the element type
expected/encountered in context. This will sometimes lead to
surprising instruction choices, such as "aget-byte" when the original
source used a boolean[], but in all of these cases the output is valid
and behaves correctly, where "correctly" in this case means (a)
passing verification, and (b) throwing a NullPointerException if ever
executed.

The test case (dx test #111) reflects unsurprising expectations and
so needs updating, which I will do in a follow-up to this patch.

I know this makes me an awful git user, but I fixed some comments and
whitespace while I was in the territory and *didn't* turn these into
separate commits.
ersion.java
f/code/RopperMachine.java
f/code/Simulator.java
f/code/ValueAwareMachine.java
op/code/Rops.java
f7c7608d758bf7e30875f379858cc765a17d6d49 15-Apr-2009 Dan Bornstein <danfuzz@android.com> Made a few more tweaks as I'm reading over the SSA code.
sa/SsaMethod.java
sa/back/SsaToRop.java
de1ab3724b284ab053322db7ff723f54d7826c96 31-Mar-2009 Dan Bornstein <> AI 143732: Tweaks, in response to public critique.

Automated import of CL 143732
ommand/dexer/Main.java
291fe153ba3b64dfb0472f1f53cee59c53f5da04 30-Mar-2009 Dan Bornstein <> AI 143492: Another crank of the --core-library wheel.

Automated import of CL 143492
ommand/dexer/Main.java
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import //branches/master/...@140412
ersion.java
f/attrib/AttAnnotationDefault.java
f/attrib/AttCode.java
f/attrib/AttConstantValue.java
f/attrib/AttDeprecated.java
f/attrib/AttEnclosingMethod.java
f/attrib/AttExceptions.java
f/attrib/AttInnerClasses.java
f/attrib/AttLineNumberTable.java
f/attrib/AttLocalVariableTable.java
f/attrib/AttLocalVariableTypeTable.java
f/attrib/AttRuntimeInvisibleAnnotations.java
f/attrib/AttRuntimeInvisibleParameterAnnotations.java
f/attrib/AttRuntimeVisibleAnnotations.java
f/attrib/AttRuntimeVisibleParameterAnnotations.java
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/AttSynthetic.java
f/attrib/BaseAnnotations.java
f/attrib/BaseAttribute.java
f/attrib/BaseLocalVariables.java
f/attrib/BaseParameterAnnotations.java
f/attrib/InnerClassList.java
f/attrib/RawAttribute.java
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlock.java
f/code/ByteBlockList.java
f/code/ByteCatchList.java
f/code/ByteOps.java
f/code/BytecodeArray.java
f/code/ConcreteMethod.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LineNumberList.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/Merger.java
f/code/OneLocalsArray.java
f/code/ReturnAddress.java
f/code/Ropper.java
f/code/RopperMachine.java
f/code/Simulator.java
f/code/SwitchList.java
f/code/ValueAwareMachine.java
f/cst/ConstantPoolParser.java
f/cst/ConstantTags.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/AttributeListParser.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/FieldListParser.java
f/direct/MemberListParser.java
f/direct/MethodListParser.java
f/direct/StdAttributeFactory.java
f/iface/Attribute.java
f/iface/AttributeList.java
f/iface/ClassFile.java
f/iface/Field.java
f/iface/FieldList.java
f/iface/Member.java
f/iface/Method.java
f/iface/MethodList.java
f/iface/ParseObserver.java
f/iface/StdAttributeList.java
f/iface/StdField.java
f/iface/StdFieldList.java
f/iface/StdMember.java
f/iface/StdMethod.java
f/iface/StdMethodList.java
ommand/DxConsole.java
ommand/Main.java
ommand/annotool/AnnotationLister.java
ommand/dexer/Main.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/ClassDumper.java
ommand/dump/DotDumper.java
ommand/dump/Main.java
ommand/dump/SsaDumper.java
ex/cf/AttributeTranslator.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/code/ArrayData.java
ex/code/BlockAddresses.java
ex/code/CatchBuilder.java
ex/code/CatchHandlerList.java
ex/code/CatchTable.java
ex/code/CodeAddress.java
ex/code/CstInsn.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/FixedSizeInsn.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalEnd.java
ex/code/LocalList.java
ex/code/LocalSnapshot.java
ex/code/LocalStart.java
ex/code/OddSpacer.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/PositionList.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SimpleInsn.java
ex/code/StdCatchBuilder.java
ex/code/SwitchData.java
ex/code/TargetInsn.java
ex/code/VariableSizeInsn.java
ex/code/ZeroSizeInsn.java
ex/code/form/Form10t.java
ex/code/form/Form10x.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form20t.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form51l.java
ex/code/form/SpecialFormat.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationSetRefItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoConstants.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldAnnotationStruct.java
ex/file/FieldIdItem.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/IdItem.java
ex/file/IndexedItem.java
ex/file/Item.java
ex/file/ItemType.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodAnnotationStruct.java
ex/file/MethodIdItem.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
op/annotation/Annotation.java
op/annotation/AnnotationVisibility.java
op/annotation/Annotations.java
op/annotation/AnnotationsList.java
op/annotation/NameValuePair.java
op/code/AccessFlags.java
op/code/BasicBlock.java
op/code/BasicBlockList.java
op/code/ConservativeTranslationAdvice.java
op/code/CstInsn.java
op/code/DexTranslationAdvice.java
op/code/Exceptions.java
op/code/FillArrayDataInsn.java
op/code/Insn.java
op/code/InsnList.java
op/code/LocalItem.java
op/code/LocalVariableExtractor.java
op/code/LocalVariableInfo.java
op/code/PlainCstInsn.java
op/code/PlainInsn.java
op/code/RegOps.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RegisterSpecSet.java
op/code/Rop.java
op/code/RopMethod.java
op/code/Rops.java
op/code/SourcePosition.java
op/code/SwitchInsn.java
op/code/ThrowingCstInsn.java
op/code/ThrowingInsn.java
op/code/TranslationAdvice.java
op/cst/Constant.java
op/cst/ConstantPool.java
op/cst/CstAnnotation.java
op/cst/CstArray.java
op/cst/CstBaseMethodRef.java
op/cst/CstBoolean.java
op/cst/CstByte.java
op/cst/CstChar.java
op/cst/CstDouble.java
op/cst/CstEnumRef.java
op/cst/CstFieldRef.java
op/cst/CstFloat.java
op/cst/CstInteger.java
op/cst/CstInterfaceMethodRef.java
op/cst/CstKnownNull.java
op/cst/CstLiteral32.java
op/cst/CstLiteral64.java
op/cst/CstLiteralBits.java
op/cst/CstLong.java
op/cst/CstMemberRef.java
op/cst/CstMethodRef.java
op/cst/CstNat.java
op/cst/CstShort.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/StdConstantPool.java
op/cst/TypedConstant.java
op/cst/Zeroes.java
op/package-info.java
op/type/Prototype.java
op/type/StdTypeList.java
op/type/Type.java
op/type/TypeBearer.java
op/type/TypeList.java
sa/BasicRegisterMapper.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/Dominators.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/LocalVariableExtractor.java
sa/LocalVariableInfo.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/RegisterMapper.java
sa/SetFactory.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaInsn.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/_tests/_DomFront.java
sa/back/FirstFitAllocator.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/IdenticalBlockCombiner.java
sa/back/InterferenceGraph.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
sa/package-info.java
til/AnnotatedOutput.java
til/BitIntSet.java
til/Bits.java
til/ByteArray.java
til/ByteArrayAnnotatedOutput.java
til/ExceptionWithContext.java
til/FileUtils.java
til/FixedSizeList.java
til/Hex.java
til/HexParser.java
til/IndentingWriter.java
til/IntList.java
til/IntSet.java
til/LabeledItem.java
til/LabeledList.java
til/MutabilityControl.java
til/Output.java
til/ToHuman.java
til/TwoColumnOutput.java
til/Writers.java
til/_tests/_Bits.java
til/_tests/_IntList.java
f6c387128427e121477c1b32ad35cdcaa5101ba3 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ersion.java
f/attrib/AttAnnotationDefault.java
f/attrib/AttCode.java
f/attrib/AttConstantValue.java
f/attrib/AttDeprecated.java
f/attrib/AttEnclosingMethod.java
f/attrib/AttExceptions.java
f/attrib/AttInnerClasses.java
f/attrib/AttLineNumberTable.java
f/attrib/AttLocalVariableTable.java
f/attrib/AttLocalVariableTypeTable.java
f/attrib/AttRuntimeInvisibleAnnotations.java
f/attrib/AttRuntimeInvisibleParameterAnnotations.java
f/attrib/AttRuntimeVisibleAnnotations.java
f/attrib/AttRuntimeVisibleParameterAnnotations.java
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/AttSynthetic.java
f/attrib/BaseAnnotations.java
f/attrib/BaseAttribute.java
f/attrib/BaseLocalVariables.java
f/attrib/BaseParameterAnnotations.java
f/attrib/InnerClassList.java
f/attrib/RawAttribute.java
f/attrib/package.html
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlock.java
f/code/ByteBlockList.java
f/code/ByteCatchList.java
f/code/ByteOps.java
f/code/BytecodeArray.java
f/code/ConcreteMethod.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LineNumberList.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/Merger.java
f/code/OneLocalsArray.java
f/code/ReturnAddress.java
f/code/Ropper.java
f/code/RopperMachine.java
f/code/SimException.java
f/code/Simulator.java
f/code/SwitchList.java
f/code/ValueAwareMachine.java
f/code/package.html
f/cst/ConstantPoolParser.java
f/cst/ConstantTags.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/AttributeListParser.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/FieldListParser.java
f/direct/MemberListParser.java
f/direct/MethodListParser.java
f/direct/StdAttributeFactory.java
f/direct/package.html
f/iface/Attribute.java
f/iface/AttributeList.java
f/iface/ClassFile.java
f/iface/Field.java
f/iface/FieldList.java
f/iface/Member.java
f/iface/Method.java
f/iface/MethodList.java
f/iface/ParseException.java
f/iface/ParseObserver.java
f/iface/StdAttributeList.java
f/iface/StdField.java
f/iface/StdFieldList.java
f/iface/StdMember.java
f/iface/StdMethod.java
f/iface/StdMethodList.java
f/iface/package.html
ommand/DxConsole.java
ommand/Main.java
ommand/UsageException.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dexer/Main.java
ommand/dump/Args.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/ClassDumper.java
ommand/dump/DotDumper.java
ommand/dump/Main.java
ommand/dump/SsaDumper.java
ex/cf/AttributeTranslator.java
ex/cf/CfOptions.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/cf/package.html
ex/code/ArrayData.java
ex/code/BlockAddresses.java
ex/code/CatchBuilder.java
ex/code/CatchHandlerList.java
ex/code/CatchTable.java
ex/code/CodeAddress.java
ex/code/CstInsn.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/DalvOps.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/FixedSizeInsn.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalEnd.java
ex/code/LocalList.java
ex/code/LocalSnapshot.java
ex/code/LocalStart.java
ex/code/OddSpacer.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/PositionList.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SimpleInsn.java
ex/code/StdCatchBuilder.java
ex/code/SwitchData.java
ex/code/TargetInsn.java
ex/code/VariableSizeInsn.java
ex/code/ZeroSizeInsn.java
ex/code/form/Form10t.java
ex/code/form/Form10x.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form20t.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form51l.java
ex/code/form/SpecialFormat.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationSetRefItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoConstants.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldAnnotationStruct.java
ex/file/FieldIdItem.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/IdItem.java
ex/file/IndexedItem.java
ex/file/Item.java
ex/file/ItemType.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodAnnotationStruct.java
ex/file/MethodIdItem.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
op/annotation/Annotation.java
op/annotation/AnnotationVisibility.java
op/annotation/Annotations.java
op/annotation/AnnotationsList.java
op/annotation/NameValuePair.java
op/code/AccessFlags.java
op/code/BasicBlock.java
op/code/BasicBlockList.java
op/code/ConservativeTranslationAdvice.java
op/code/CstInsn.java
op/code/DexTranslationAdvice.java
op/code/Exceptions.java
op/code/FillArrayDataInsn.java
op/code/Insn.java
op/code/InsnList.java
op/code/LocalItem.java
op/code/LocalVariableExtractor.java
op/code/LocalVariableInfo.java
op/code/PlainCstInsn.java
op/code/PlainInsn.java
op/code/RegOps.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RegisterSpecSet.java
op/code/Rop.java
op/code/RopMethod.java
op/code/Rops.java
op/code/SourcePosition.java
op/code/SwitchInsn.java
op/code/ThrowingCstInsn.java
op/code/ThrowingInsn.java
op/code/TranslationAdvice.java
op/code/package.html
op/cst/Constant.java
op/cst/ConstantPool.java
op/cst/CstAnnotation.java
op/cst/CstArray.java
op/cst/CstBaseMethodRef.java
op/cst/CstBoolean.java
op/cst/CstByte.java
op/cst/CstChar.java
op/cst/CstDouble.java
op/cst/CstEnumRef.java
op/cst/CstFieldRef.java
op/cst/CstFloat.java
op/cst/CstInteger.java
op/cst/CstInterfaceMethodRef.java
op/cst/CstKnownNull.java
op/cst/CstLiteral32.java
op/cst/CstLiteral64.java
op/cst/CstLiteralBits.java
op/cst/CstLong.java
op/cst/CstMemberRef.java
op/cst/CstMethodRef.java
op/cst/CstNat.java
op/cst/CstShort.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/StdConstantPool.java
op/cst/TypedConstant.java
op/cst/Zeroes.java
op/cst/package.html
op/package-info.java
op/type/Prototype.java
op/type/StdTypeList.java
op/type/Type.java
op/type/TypeBearer.java
op/type/TypeList.java
op/type/package.html
sa/BasicRegisterMapper.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/Dominators.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/LocalVariableExtractor.java
sa/LocalVariableInfo.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/PhiTypeResolver.java
sa/RegisterMapper.java
sa/SCCP.java
sa/SetFactory.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaInsn.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/_tests/_DomFront.java
sa/back/FirstFitAllocator.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/IdenticalBlockCombiner.java
sa/back/InterferenceGraph.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
sa/package-info.java
til/AnnotatedOutput.java
til/BitIntSet.java
til/Bits.java
til/ByteArray.java
til/ByteArrayAnnotatedOutput.java
til/ExceptionWithContext.java
til/FileUtils.java
til/FixedSizeList.java
til/Hex.java
til/HexParser.java
til/IndentingWriter.java
til/IntIterator.java
til/IntList.java
til/IntSet.java
til/LabeledItem.java
til/LabeledList.java
til/Leb128Utils.java
til/ListIntSet.java
til/MutabilityControl.java
til/MutabilityException.java
til/Output.java
til/ToHuman.java
til/TwoColumnOutput.java
til/Warning.java
til/Writers.java
til/_tests/_BitIntSet.java
til/_tests/_Bits.java
til/_tests/_IntList.java
til/_tests/_ListIntSet.java
til/package.html
f72d5de56a522ac3be03873bdde26f23a5eeeb3c 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ersion.java
f/attrib/AttAnnotationDefault.java
f/attrib/AttCode.java
f/attrib/AttConstantValue.java
f/attrib/AttDeprecated.java
f/attrib/AttEnclosingMethod.java
f/attrib/AttExceptions.java
f/attrib/AttInnerClasses.java
f/attrib/AttLineNumberTable.java
f/attrib/AttLocalVariableTable.java
f/attrib/AttLocalVariableTypeTable.java
f/attrib/AttRuntimeInvisibleAnnotations.java
f/attrib/AttRuntimeInvisibleParameterAnnotations.java
f/attrib/AttRuntimeVisibleAnnotations.java
f/attrib/AttRuntimeVisibleParameterAnnotations.java
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/AttSynthetic.java
f/attrib/BaseAnnotations.java
f/attrib/BaseAttribute.java
f/attrib/BaseLocalVariables.java
f/attrib/BaseParameterAnnotations.java
f/attrib/InnerClassList.java
f/attrib/RawAttribute.java
f/attrib/package.html
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlock.java
f/code/ByteBlockList.java
f/code/ByteCatchList.java
f/code/ByteOps.java
f/code/BytecodeArray.java
f/code/ConcreteMethod.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LineNumberList.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/Merger.java
f/code/OneLocalsArray.java
f/code/ReturnAddress.java
f/code/Ropper.java
f/code/RopperMachine.java
f/code/SimException.java
f/code/Simulator.java
f/code/SwitchList.java
f/code/ValueAwareMachine.java
f/code/package.html
f/cst/ConstantPoolParser.java
f/cst/ConstantTags.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/AttributeListParser.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/FieldListParser.java
f/direct/MemberListParser.java
f/direct/MethodListParser.java
f/direct/StdAttributeFactory.java
f/direct/package.html
f/iface/Attribute.java
f/iface/AttributeList.java
f/iface/ClassFile.java
f/iface/Field.java
f/iface/FieldList.java
f/iface/Member.java
f/iface/Method.java
f/iface/MethodList.java
f/iface/ParseException.java
f/iface/ParseObserver.java
f/iface/StdAttributeList.java
f/iface/StdField.java
f/iface/StdFieldList.java
f/iface/StdMember.java
f/iface/StdMethod.java
f/iface/StdMethodList.java
f/iface/package.html
ommand/DxConsole.java
ommand/Main.java
ommand/UsageException.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dexer/Main.java
ommand/dump/Args.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/ClassDumper.java
ommand/dump/DotDumper.java
ommand/dump/Main.java
ommand/dump/SsaDumper.java
ex/cf/AttributeTranslator.java
ex/cf/CfOptions.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/cf/package.html
ex/code/ArrayData.java
ex/code/BlockAddresses.java
ex/code/CatchBuilder.java
ex/code/CatchHandlerList.java
ex/code/CatchTable.java
ex/code/CodeAddress.java
ex/code/CstInsn.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/DalvOps.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/FixedSizeInsn.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalEnd.java
ex/code/LocalList.java
ex/code/LocalSnapshot.java
ex/code/LocalStart.java
ex/code/OddSpacer.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/PositionList.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SimpleInsn.java
ex/code/StdCatchBuilder.java
ex/code/SwitchData.java
ex/code/TargetInsn.java
ex/code/VariableSizeInsn.java
ex/code/ZeroSizeInsn.java
ex/code/form/Form10t.java
ex/code/form/Form10x.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form20t.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form51l.java
ex/code/form/SpecialFormat.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationSetRefItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoConstants.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldAnnotationStruct.java
ex/file/FieldIdItem.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/IdItem.java
ex/file/IndexedItem.java
ex/file/Item.java
ex/file/ItemType.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodAnnotationStruct.java
ex/file/MethodIdItem.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
op/annotation/Annotation.java
op/annotation/AnnotationVisibility.java
op/annotation/Annotations.java
op/annotation/AnnotationsList.java
op/annotation/NameValuePair.java
op/code/AccessFlags.java
op/code/BasicBlock.java
op/code/BasicBlockList.java
op/code/ConservativeTranslationAdvice.java
op/code/CstInsn.java
op/code/DexTranslationAdvice.java
op/code/Exceptions.java
op/code/FillArrayDataInsn.java
op/code/Insn.java
op/code/InsnList.java
op/code/LocalItem.java
op/code/LocalVariableExtractor.java
op/code/LocalVariableInfo.java
op/code/PlainCstInsn.java
op/code/PlainInsn.java
op/code/RegOps.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RegisterSpecSet.java
op/code/Rop.java
op/code/RopMethod.java
op/code/Rops.java
op/code/SourcePosition.java
op/code/SwitchInsn.java
op/code/ThrowingCstInsn.java
op/code/ThrowingInsn.java
op/code/TranslationAdvice.java
op/code/package.html
op/cst/Constant.java
op/cst/ConstantPool.java
op/cst/CstAnnotation.java
op/cst/CstArray.java
op/cst/CstBaseMethodRef.java
op/cst/CstBoolean.java
op/cst/CstByte.java
op/cst/CstChar.java
op/cst/CstDouble.java
op/cst/CstEnumRef.java
op/cst/CstFieldRef.java
op/cst/CstFloat.java
op/cst/CstInteger.java
op/cst/CstInterfaceMethodRef.java
op/cst/CstKnownNull.java
op/cst/CstLiteral32.java
op/cst/CstLiteral64.java
op/cst/CstLiteralBits.java
op/cst/CstLong.java
op/cst/CstMemberRef.java
op/cst/CstMethodRef.java
op/cst/CstNat.java
op/cst/CstShort.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/StdConstantPool.java
op/cst/TypedConstant.java
op/cst/Zeroes.java
op/cst/package.html
op/package-info.java
op/type/Prototype.java
op/type/StdTypeList.java
op/type/Type.java
op/type/TypeBearer.java
op/type/TypeList.java
op/type/package.html
sa/BasicRegisterMapper.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/Dominators.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/LocalVariableExtractor.java
sa/LocalVariableInfo.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/PhiTypeResolver.java
sa/RegisterMapper.java
sa/SCCP.java
sa/SetFactory.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaInsn.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/_tests/_DomFront.java
sa/back/FirstFitAllocator.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/IdenticalBlockCombiner.java
sa/back/InterferenceGraph.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
sa/package-info.java
til/AnnotatedOutput.java
til/BitIntSet.java
til/Bits.java
til/ByteArray.java
til/ByteArrayAnnotatedOutput.java
til/ExceptionWithContext.java
til/FileUtils.java
til/FixedSizeList.java
til/Hex.java
til/HexParser.java
til/IndentingWriter.java
til/IntIterator.java
til/IntList.java
til/IntSet.java
til/LabeledItem.java
til/LabeledList.java
til/Leb128Utils.java
til/ListIntSet.java
til/MutabilityControl.java
til/MutabilityException.java
til/Output.java
til/ToHuman.java
til/TwoColumnOutput.java
til/Warning.java
til/Writers.java
til/_tests/_BitIntSet.java
til/_tests/_Bits.java
til/_tests/_IntList.java
til/_tests/_ListIntSet.java
til/package.html
31e30105703263782efd450d356cd67ea01af3b7 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
ex/code/LocalEnd.java
ex/code/LocalList.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
op/code/LocalItem.java
op/code/RegisterSpec.java
op/code/RegisterSpecSet.java
6dcac3deb3c19dc634470eb30b2daedf2b201bd4 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
ex/code/LocalEnd.java
ex/code/LocalList.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
op/code/LocalItem.java
op/code/RegisterSpec.java
op/code/RegisterSpecSet.java
077f9d75d9701778830742b9c2afad4742635b58 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
ex/code/LocalEnd.java
ex/code/LocalIntroduction.java
ex/code/LocalList.java
ex/code/LocalSnapshot.java
ex/code/LocalStart.java
ex/code/OutputFinisher.java
ex/code/RopTranslator.java
446b11cd80658706d77d58996670b8eead3683a4 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
ersion.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
89c1feb0a69a7707b271086e749975b3f7acacf7 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
ex/code/CatchBuilder.java
ex/code/RopTranslator.java
ex/code/StdCatchBuilder.java
2ad60cfc28e14ee8f0bb038720836a4696c478ad 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
ersion.java
f/attrib/AttAnnotationDefault.java
f/attrib/AttCode.java
f/attrib/AttConstantValue.java
f/attrib/AttDeprecated.java
f/attrib/AttEnclosingMethod.java
f/attrib/AttExceptions.java
f/attrib/AttInnerClasses.java
f/attrib/AttLineNumberTable.java
f/attrib/AttLocalVariableTable.java
f/attrib/AttLocalVariableTypeTable.java
f/attrib/AttRuntimeInvisibleAnnotations.java
f/attrib/AttRuntimeInvisibleParameterAnnotations.java
f/attrib/AttRuntimeVisibleAnnotations.java
f/attrib/AttRuntimeVisibleParameterAnnotations.java
f/attrib/AttSignature.java
f/attrib/AttSourceFile.java
f/attrib/AttSynthetic.java
f/attrib/BaseAnnotations.java
f/attrib/BaseAttribute.java
f/attrib/BaseLocalVariables.java
f/attrib/BaseParameterAnnotations.java
f/attrib/InnerClassList.java
f/attrib/RawAttribute.java
f/attrib/package.html
f/code/BaseMachine.java
f/code/BasicBlocker.java
f/code/ByteBlock.java
f/code/ByteBlockList.java
f/code/ByteCatchList.java
f/code/ByteOps.java
f/code/BytecodeArray.java
f/code/ConcreteMethod.java
f/code/ExecutionStack.java
f/code/Frame.java
f/code/LineNumberList.java
f/code/LocalVariableList.java
f/code/LocalsArray.java
f/code/LocalsArraySet.java
f/code/Machine.java
f/code/Merger.java
f/code/OneLocalsArray.java
f/code/ReturnAddress.java
f/code/Ropper.java
f/code/RopperMachine.java
f/code/SimException.java
f/code/Simulator.java
f/code/SwitchList.java
f/code/ValueAwareMachine.java
f/code/package.html
f/cst/ConstantPoolParser.java
f/cst/ConstantTags.java
f/direct/AnnotationParser.java
f/direct/AttributeFactory.java
f/direct/AttributeListParser.java
f/direct/ClassPathOpener.java
f/direct/CodeObserver.java
f/direct/DirectClassFile.java
f/direct/FieldListParser.java
f/direct/MemberListParser.java
f/direct/MethodListParser.java
f/direct/StdAttributeFactory.java
f/direct/package.html
f/iface/Attribute.java
f/iface/AttributeList.java
f/iface/ClassFile.java
f/iface/Field.java
f/iface/FieldList.java
f/iface/Member.java
f/iface/Method.java
f/iface/MethodList.java
f/iface/ParseException.java
f/iface/ParseObserver.java
f/iface/StdAttributeList.java
f/iface/StdField.java
f/iface/StdFieldList.java
f/iface/StdMember.java
f/iface/StdMethod.java
f/iface/StdMethodList.java
f/iface/package.html
ommand/DxConsole.java
ommand/Main.java
ommand/UsageException.java
ommand/annotool/AnnotationLister.java
ommand/annotool/Main.java
ommand/dexer/Main.java
ommand/dump/Args.java
ommand/dump/BaseDumper.java
ommand/dump/BlockDumper.java
ommand/dump/ClassDumper.java
ommand/dump/DotDumper.java
ommand/dump/Main.java
ommand/dump/SsaDumper.java
ex/cf/AttributeTranslator.java
ex/cf/CfOptions.java
ex/cf/CfTranslator.java
ex/cf/CodeStatistics.java
ex/cf/OptimizerOptions.java
ex/cf/package.html
ex/code/ArrayData.java
ex/code/BlockAddresses.java
ex/code/CatchBuilder.java
ex/code/CatchHandlerList.java
ex/code/CatchTable.java
ex/code/CodeAddress.java
ex/code/CstInsn.java
ex/code/DalvCode.java
ex/code/DalvInsn.java
ex/code/DalvInsnList.java
ex/code/DalvOps.java
ex/code/Dop.java
ex/code/Dops.java
ex/code/FixedSizeInsn.java
ex/code/HighRegisterPrefix.java
ex/code/InsnFormat.java
ex/code/LocalIntroduction.java
ex/code/LocalList.java
ex/code/LocalSnapshot.java
ex/code/OddSpacer.java
ex/code/OutputCollector.java
ex/code/OutputFinisher.java
ex/code/PositionList.java
ex/code/RopToDop.java
ex/code/RopTranslator.java
ex/code/SimpleInsn.java
ex/code/SwitchData.java
ex/code/TargetInsn.java
ex/code/VariableSizeInsn.java
ex/code/ZeroSizeInsn.java
ex/code/form/Form10t.java
ex/code/form/Form10x.java
ex/code/form/Form11n.java
ex/code/form/Form11x.java
ex/code/form/Form12x.java
ex/code/form/Form20t.java
ex/code/form/Form21c.java
ex/code/form/Form21h.java
ex/code/form/Form21s.java
ex/code/form/Form21t.java
ex/code/form/Form22b.java
ex/code/form/Form22c.java
ex/code/form/Form22s.java
ex/code/form/Form22t.java
ex/code/form/Form22x.java
ex/code/form/Form23x.java
ex/code/form/Form30t.java
ex/code/form/Form31c.java
ex/code/form/Form31i.java
ex/code/form/Form31t.java
ex/code/form/Form32x.java
ex/code/form/Form35c.java
ex/code/form/Form3rc.java
ex/code/form/Form51l.java
ex/code/form/SpecialFormat.java
ex/file/AnnotationItem.java
ex/file/AnnotationSetItem.java
ex/file/AnnotationSetRefItem.java
ex/file/AnnotationUtils.java
ex/file/AnnotationsDirectoryItem.java
ex/file/CatchStructs.java
ex/file/ClassDataItem.java
ex/file/ClassDefItem.java
ex/file/ClassDefsSection.java
ex/file/CodeItem.java
ex/file/DebugInfoConstants.java
ex/file/DebugInfoDecoder.java
ex/file/DebugInfoEncoder.java
ex/file/DebugInfoItem.java
ex/file/DexFile.java
ex/file/EncodedArrayItem.java
ex/file/EncodedField.java
ex/file/EncodedMember.java
ex/file/EncodedMethod.java
ex/file/FieldAnnotationStruct.java
ex/file/FieldIdItem.java
ex/file/FieldIdsSection.java
ex/file/HeaderItem.java
ex/file/HeaderSection.java
ex/file/IdItem.java
ex/file/IndexedItem.java
ex/file/Item.java
ex/file/ItemType.java
ex/file/MapItem.java
ex/file/MemberIdItem.java
ex/file/MemberIdsSection.java
ex/file/MethodAnnotationStruct.java
ex/file/MethodIdItem.java
ex/file/MethodIdsSection.java
ex/file/MixedItemSection.java
ex/file/OffsettedItem.java
ex/file/ParameterAnnotationStruct.java
ex/file/ProtoIdItem.java
ex/file/ProtoIdsSection.java
ex/file/Section.java
ex/file/Statistics.java
ex/file/StringDataItem.java
ex/file/StringIdItem.java
ex/file/StringIdsSection.java
ex/file/TypeIdItem.java
ex/file/TypeIdsSection.java
ex/file/TypeListItem.java
ex/file/UniformItemSection.java
ex/file/UniformListItem.java
ex/file/ValueEncoder.java
op/annotation/Annotation.java
op/annotation/AnnotationVisibility.java
op/annotation/Annotations.java
op/annotation/AnnotationsList.java
op/annotation/NameValuePair.java
op/code/AccessFlags.java
op/code/BasicBlock.java
op/code/BasicBlockList.java
op/code/ConservativeTranslationAdvice.java
op/code/CstInsn.java
op/code/DexTranslationAdvice.java
op/code/Exceptions.java
op/code/FillArrayDataInsn.java
op/code/Insn.java
op/code/InsnList.java
op/code/LocalItem.java
op/code/LocalVariableExtractor.java
op/code/LocalVariableInfo.java
op/code/PlainCstInsn.java
op/code/PlainInsn.java
op/code/RegOps.java
op/code/RegisterSpec.java
op/code/RegisterSpecList.java
op/code/RegisterSpecSet.java
op/code/Rop.java
op/code/RopMethod.java
op/code/Rops.java
op/code/SourcePosition.java
op/code/SwitchInsn.java
op/code/ThrowingCstInsn.java
op/code/ThrowingInsn.java
op/code/TranslationAdvice.java
op/code/package.html
op/cst/Constant.java
op/cst/ConstantPool.java
op/cst/CstAnnotation.java
op/cst/CstArray.java
op/cst/CstBaseMethodRef.java
op/cst/CstBoolean.java
op/cst/CstByte.java
op/cst/CstChar.java
op/cst/CstDouble.java
op/cst/CstEnumRef.java
op/cst/CstFieldRef.java
op/cst/CstFloat.java
op/cst/CstInteger.java
op/cst/CstInterfaceMethodRef.java
op/cst/CstKnownNull.java
op/cst/CstLiteral32.java
op/cst/CstLiteral64.java
op/cst/CstLiteralBits.java
op/cst/CstLong.java
op/cst/CstMemberRef.java
op/cst/CstMethodRef.java
op/cst/CstNat.java
op/cst/CstShort.java
op/cst/CstString.java
op/cst/CstType.java
op/cst/CstUtf8.java
op/cst/StdConstantPool.java
op/cst/TypedConstant.java
op/cst/Zeroes.java
op/cst/package.html
op/package-info.java
op/type/Prototype.java
op/type/StdTypeList.java
op/type/Type.java
op/type/TypeBearer.java
op/type/TypeList.java
op/type/package.html
sa/BasicRegisterMapper.java
sa/ConstCollector.java
sa/DeadCodeRemover.java
sa/DomFront.java
sa/Dominators.java
sa/InterferenceRegisterMapper.java
sa/LiteralOpUpgrader.java
sa/LocalVariableExtractor.java
sa/LocalVariableInfo.java
sa/MoveParamCombiner.java
sa/NormalSsaInsn.java
sa/Optimizer.java
sa/PhiInsn.java
sa/PhiTypeResolver.java
sa/RegisterMapper.java
sa/SCCP.java
sa/SetFactory.java
sa/SsaBasicBlock.java
sa/SsaConverter.java
sa/SsaInsn.java
sa/SsaMethod.java
sa/SsaRenamer.java
sa/_tests/_DomFront.java
sa/back/FirstFitAllocator.java
sa/back/FirstFitLocalCombiningAllocator.java
sa/back/IdenticalBlockCombiner.java
sa/back/InterferenceGraph.java
sa/back/LivenessAnalyzer.java
sa/back/NullRegisterAllocator.java
sa/back/RegisterAllocator.java
sa/back/SsaToRop.java
sa/package-info.java
til/AnnotatedOutput.java
til/BitIntSet.java
til/Bits.java
til/ByteArray.java
til/ByteArrayAnnotatedOutput.java
til/ExceptionWithContext.java
til/FileUtils.java
til/FixedSizeList.java
til/Hex.java
til/HexParser.java
til/IndentingWriter.java
til/IntIterator.java
til/IntList.java
til/IntSet.java
til/LabeledItem.java
til/LabeledList.java
til/Leb128Utils.java
til/ListIntSet.java
til/MutabilityControl.java
til/MutabilityException.java
til/Output.java
til/ToHuman.java
til/TwoColumnOutput.java
til/Warning.java
til/Writers.java
til/_tests/_BitIntSet.java
til/_tests/_Bits.java
til/_tests/_IntList.java
til/_tests/_ListIntSet.java
til/package.html