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
|