History log of /dalvik/dx/src/com/android/dx/dex/code/RopTranslator.java
Revision Date Author Comments
c4d4ef4faee171d690171fbf09e6ebfdb23783af 20-Dec-2017 Orion Hodson <oth@google.com> dx: Extend descriptors used for signature polymorphic methods

Refines the descriptor applied to signature polymorphic methods with
new code points for VarHandle set methods and compareAndSet
methods.

Bug: 65872996
Test: art/tools/buildbot --host -j32 && dx/dalvik/tests/run-all-tests
Change-Id: I89d93f234c7bc6cbaae88d6627c4d47f01ec7f83
9dbd802c8c96c3a66873bc600bc7d1374a1d08e5 31-Aug-2017 Orion Hodson <oth@google.com> dx: Minor code clean-up

A few automated code clean-ups:
- Insert missing @Override annotations.
- Make fields final where possible.
- Use StringBuilder rather StringBuffer for local use.
- Clean-up imports.

Bug: 65231722
Test: dx/tests/run-all-tests
Change-Id: I49810f1d43cb53ad32636a66eda2fadc538ba249
cdef1ee858fde291205f3da685b2720227d2d42f 22-Feb-2017 Orion Hodson <oth@google.com> DX: Add support for invoke-polymorphic.

This change identifies virtual calls to signature polymorphic methods
and converts the instruction from invoke-virtual to invoke-polymorphic.

Enabled if --min-sdk-version >= 26.

Bug: 30550796,33191712
Test: dx/tests/run-test 132-invoke-polymorphic
Change-Id: I6771d43982f1b72db030b0c77285bb8e04f918b9
d0c62c2a778d1c9148077c869f6313723f57eddc 13-May-2014 mikaelpeltier <mikaelpeltier@google.com> Align 64-bit registers on even dalvik registers

The following alignments are done during register allocation
- Align 64-bit registers that are not parameters by modifying the method
giving the next free register to take into account alignment constraints.
- Align the first register of a range to maximize the number of 64-bit
registers that will be aligned into the range.

The following alignments are done during instruction massaging
- Mov instructions inserted to transfer registers which are not compatible
with the selected instruction will use even registers for 64-bit registers
- Insert the right number of registers during instruction massaging in order
not to break alignment done by the register allocator
- Align parameters to maximize the number of 64-bit register aligned.

Change-Id: Iaac6d7038f33699e9d9897b95d923297c72e20c6
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
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
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
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
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
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
de75089fb7216d19e9c22cce4dc62a49513477d3 09-Jun-2010 Carl Shapiro <cshapiro@google.com> Remove trailing whitespace.

Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import //branches/master/...@140412
f6c387128427e121477c1b32ad35cdcaa5101ba3 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
f72d5de56a522ac3be03873bdde26f23a5eeeb3c 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
077f9d75d9701778830742b9c2afad4742635b58 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
89c1feb0a69a7707b271086e749975b3f7acacf7 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
2ad60cfc28e14ee8f0bb038720836a4696c478ad 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution