77ce6430af2709432b22344ed656edd8ec80581b |
|
10-May-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix another case of live_in at irreducible loop entry. GVN was implicitly extending the liveness of an instruction across an irreducible loop. Fix this problem by clearing the value set at loop entries that contain an irreducible loop. bug:28252896 Change-Id: I68823cb88dceb4c2b4545286ba54fd0c958a48b0
|
a2bbdc3d475e3c116f14d70eadfac2b963ec8abc |
|
14-Apr-2016 |
David Brazdil <dbrazdil@google.com> |
ART: Save a bit of memory in production LICM LICM uses a bit vector to DCHECK that inner loops are visited before outer loops. Allocate the bit vector only if kIsDebugBuild. Bug: 28173563 Change-Id: Ic2641607ebe55ad8974de2ebe03973f0bf182e42 (cherry picked from commit aa680e89cf35ac3af7d3344d7960ba2f055e16d8)
|
f6a35de9eeefb20f6446f1b4815b4dcb0161d09c |
|
21-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Fix register allocator validation memory usage. Also attribute ArenaBitVector allocations to appropriate passes. This was used to track down the source of the excessive memory alloactions. Bug: 27690481 Change-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100
|
38e9e8046ea2196284bdb4638771c31108a30a4a |
|
18-Feb-2016 |
Jean-Philippe Halimi <jean-philippe.halimi@intel.com> |
Add statistics support for some optimizations This patch adds support for the --dump-stats facility with some optimizations and fixes all build issues introduced by the patch: I68751b119a030952a11057cb651a3c63e87e73ea (which got reverted) Change-Id: I5af1f2a8cced0a1a55c2bb4d8c88e6f0a24ec879 Signed-off-by: Jean-Philippe Halimi <jean-philippe.halimi@intel.com>
|
15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc |
|
05-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement irreducible loop support in optimizing. So we don't fallback to the interpreter in the presence of irreducible loops. Implications: - A loop pre-header does not necessarily dominate a loop header. - Non-constant redundant phis will be kept in loop headers, to satisfy our linear scan register allocation algorithm. - while-graph optimizations, such as gvn, licm, lse, and dce need to know when they are dealing with irreducible loops. Change-Id: I2cea8934ce0b40162d215353497c7f77d6c9137e
|
73be1e8f8609708f6624bb297c9628de44fd8b6f |
|
17-Sep-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Inline monomorphic calls. Change-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f
|
e34648dec914453f7e8b6c517dd272823319cd6d |
|
23-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Add stats support for existing optimizations" Breaks the build. Please ensure your changes build. This reverts commit 06241b1b07fb031b7d2cf55f4b78d3444d07cc2d. Change-Id: I68b18f99a9882719bf6654d3313531a7965b8483
|
06241b1b07fb031b7d2cf55f4b78d3444d07cc2d |
|
03-Sep-2015 |
Jean-Philippe Halimi <jean-philippe.halimi@intel.com> |
Add stats support for existing optimizations This patch adds support for the --dump-stats facility with existing optimizations. Change-Id: I68751b119a030952a11057cb651a3c63e87e73ea Signed-off-by: Jean-Philippe Halimi <jean-philippe.halimi@intel.com>
|
771e5cc519665ce0cc76985bb4803f0dd50c3b40 |
|
29-Oct-2015 |
David Brazdil <dbrazdil@google.com> |
Revert "ART: Enable more passes under try/catch" BCE does not set TryCatchInformation when creating new blocks. Will be fixed with DynamicBCE CL. This reverts commit 39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8. Change-Id: I76ae707ac132bb1a4a9f64f4916ffcd786ef730c
|
39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8 |
|
26-Oct-2015 |
David Brazdil <dbrazdil@google.com> |
ART: Enable more passes under try/catch LICM, BCE, LSE are all safe under try/catch. Inliner and DCE need updating and will be enabled in follow-up CLs. Change-Id: I86db5f811257d5e765fea91666a2a2af0fb24ec3
|
fa6b93c4b69e6d7ddfa2a4ed0aff01b0608c5a3a |
|
15-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag arena allocations in HGraph. Replace GrowableArray with ArenaVector in HGraph and related classes HEnvironment, HLoopInformation, HInvoke and HPhi, and tag allocations with new arena allocation types. Change-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d
|
854a02b1b488327f80c544ca1119b386b8715c26 |
|
15-Jul-2015 |
Aart Bik <ajcbik@google.com> |
Improved side effect analysis (field/array write/read). Rationale: Types (int, float etc.) and access type (field vs. array) can be used to disambiguate write/read side-effects analysis. This directly improves e.g. dead code elimination and licm. Change-Id: I371f6909a3f42bda13190a03f04c4a867bde1d06
|
0a23d74dc2751440822960eab218be4cb8843647 |
|
07-May-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add a parent environment to HEnvironment. This code has no functionality change. It adds a placeholder for chaining inlined frames. Change-Id: I5ec57335af76ee406052345b947aad98a6a4423a
|
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
|
82091dad38f3e5bfaf3b6984c9ab73069fb68310 |
|
26-Jan-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement LICM in optimizing compiler. Change-Id: I9c8afb0a58ef45e568576015473cbfd5f011c242
|