2cebb24bfc3247d3e9be138a3350106737455918 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Replace NULL with nullptr Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
|
6d340c4f16f374e05f4205e5a27de1174abcaf2a |
|
03-Mar-2015 |
David Brazdil <dbrazdil@google.com> |
ART: Faster implementation of GVN's hash table The basic hash table in Optimizing's GVN pass does not scale for larger methods and quickly becomes a bottleneck. This patch provides a different implementation, focusing on the following: (1) Proper buckets with chaining for near constant-time lookup. (2) Bucket inheritance for faster cloning. A clone does not actually copy the entries until a first change is made. (3) Table resizing for better load management. Done during cloning. (4) Kill() and IntersectWith() applied only on impure instructions. This is achieved by splitting (im)pure entries between even- and odd-indexed buckets. Benchmarks show that this optimization speeds up GVN by ~10%, which translates to a rougly 2% change in the overall compilation time. Change-Id: Ib4058359701d990194cfd49c6ee46ac2372f090c
|
dc5ac731f6369b53b42f1cee3404f3b3384cec34 |
|
25-Feb-2015 |
Mingyao Yang <mingyao@google.com> |
Opt compiler: enhance gvn for commutative ops. Change-Id: I415b50d58b30cab4ec38077be22373eb9598ec40
|
433be7f82e4c3433da718a739f9e738410727ca3 |
|
23-Feb-2015 |
David Brazdil <dbrazdil@google.com> |
Optimizing: Remove redundant hash set copy in GVN During the GVN analysis, a basic block inherits the set of movable instructions from its dominator. If the block is the only successor of the dominating block, there is no need for cloning of the parent set (a very expensive operation). Change-Id: I59e033b9e9e093984dc8e903e3a7be1cb3645cc2
|
827eedbfa882496407375f22b08243a38a5bd53b |
|
26-Jan-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Move code around and address growable_array comment. - Move SideEffectsAnalysis to its own file. - Move most of gvn.h to gvn.cc. - Don't call Resize in GrowableArray constructor, but just set num_used directly. Change-Id: I1f1291207945d678d3c99cc0ec1ec155bcae82f6
|
86dde1658a1951c251dd5c6ff21ecc5c281879a6 |
|
26-Jan-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Introduce a SideEffectsAnalysis class. LICM also needs the side effects information of loops, so move the GVN::ComputeSideEffects method into its own analysis class. Change-Id: I810c8230a0eb6b9b536e8f808e17a3a4ad72f7db
|
dbca6fae9d09160f45bf8d3512f15cdd9558975b |
|
27-Nov-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix a bug in GVN. When a predecessor block was killing instructions in a set, we were not taking into account side effects of blocks between the dominator to this predecessor. Implementation now intersects the copied set of the dominator with the predecessors to take these side effects into account. Change-Id: If297439cc4e50cee91e9fffd028216a3e49e19ef
|
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
|
d31cf3d55a0847c018c4eaa2b349b8eea509de64 |
|
08-Sep-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
First optimization in new compiler: simple GVN. Change-Id: Ibe0efa4e84fd020a53ded310a92e0b4363f91b12
|