1abb4191a2e56d8dbf518efcaeefb266c1acdf2b |
|
17-Feb-2015 |
David Brazdil <dbrazdil@google.com> |
Optimizing: Speed up HInstruction use removal Similarly to a previous commit on HEnvironment use removal, this patch adds links from instructions to their respective inputs' use lists for contant-time removal at the cost of doubling the size of input lists (from one pointer per entry to two). Manual testing shows that this significantly reduces the time required to transform HGraph to SSA form for some huge methods. Change-Id: I8dc3e4b0c48a50ac1481eb55c31093b99f4dc29f
|
d6138ef1ea13d07ae555542f8898b30d89e9ac9a |
|
18-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Ensure the graph is correctly typed. We used to be forgiving because of HIntConstant(0) also being used for null. We now create a special HNullConstant for such uses. Also, we need to run the dead phi elimination twice during ssa building to ensure the correctness. Change-Id: If479efa3680d3358800aebb1cca692fa2d94f6e5
|
ed59619b370ef23ffbb25d1d01f615e60a9262b6 |
|
23-Jan-2015 |
David Brazdil <dbrazdil@google.com> |
Optimizing: Speed up HEnvironment use removal Removal of use records from HEnvironment vregs involved iterating over potentially large linked lists which made compilation of huge methods very slow. This patch turns use lists into doubly-linked lists, stores pointers to the relevant nodes inside HEnvironment and subsequently turns the removals into constant-time operations. Change-Id: I0e1d4d782fd624e7b8075af75d4adf0a0634a1ee
|
3159674c0863f53cfbc1913d493550221ac47f02 |
|
24-Nov-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix a bug in the type analysis phase of optimizing. Dex code can lead to the creation of a phi with one float input and one integer input. Since the SSA builder trusts the verifier, it assumes that the integer input must be converted to float. However, when the register is not used afterwards, the verifier hasn't ensured that. Therefore, the compiler must remove the phi prior to doing type propagation. Change-Id: Idcd51c4dccce827c59d1f2b253bc1c919bc07df5
|
277ccbd200ea43590dfc06a93ae184a765327ad0 |
|
04-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: More warnings Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general, and -Wunused-but-set-parameter for GCC builds. Change-Id: I81bbdd762213444673c65d85edae594a523836e5
|
102cbed1e52b7c5f09458b44903fe97bb3e14d5f |
|
15-Oct-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement register allocator for floating point registers. Also: - Fix misuses of emitting the rex prefix in the x86_64 assembler. - Fix movaps code generation in the x86_64 assembler. Change-Id: Ib6dcf6e7c4a9c43368cfc46b02ba50f69ae69cbe
|
6b879ddc0959df1cec871f0d41f11cce35a11716 |
|
22-Sep-2014 |
Roland Levillain <rpl@google.com> |
Add loop- and phi-related checks in the optimizing compiler. - Ensure the pre-header block is first in the list of predecessors of a loop header. - Ensure the loop header has only two predecessors and that only the second one is the back edge. - Ensure there is only one back edge per loop. - Ensure the first input of a phi is not itself. - Ensure the number of phi inputs is the same as the number of its predecessors. - Ensure phi input at index I either comes from the Ith predecessor or from a block that dominates this predecessor. Change-Id: I4db5c68cfbc9b74d2d03125753d0143ece625378
|
604c6e4764edb2fd244e9f47626868cda5644a7a |
|
17-Sep-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Ensure the first predecessor of a loop is the pre header. Note that the check in ssa_phi_elimination.cc was very defensive: it does not affect the outcome of the algorithm whether the loop phi takes itself as the first input. It makes things consistent to always have the pre header as first input. Change-Id: Ic86248c1f38af67f7432782f6deefae1f4bf1ab6
|
3946844c34ad965515f677084b07d663d70ad1b8 |
|
02-Sep-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Runtime support for the new stack maps for the opt compiler. Now most of the methods supported by the compiler can be optimized, instead of using the baseline. Change-Id: I80ab36a34913fa4e7dd576c7bf55af63594dc1fa
|
3ac17fcce8773388512ce72cb491b202872ca1c1 |
|
07-Aug-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix SsaDeadPhiElimination in the presence of dependent phis. This fixes the problem of having a dead loop phi taking as back-edge input a phi that also has this loop phi as input. Walking backwards does not solve the problem because the loop phi will be visited last. Most of the time, dex removes dead locals like this. Change-Id: I797198cf9c15f8faa6585cca157810e23aaa4940
|
7dc206a53a42a658f52d5cb0b7e79b47da370c9b |
|
11-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add two phi pruning phases. Change-Id: Ic4f05e3df96970d78a6938b27cdf9b58ef3849b9
|