summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
AgeCommit message (Collapse)Author
2015-09-29Use dominance information for null optimization in write barrier.Nicolas Geoffray
Change-Id: I8b57dafcd321c9afa1bbfc6a0674cbea15cbf10c
2015-09-17Revert "Support unresolved fields in optimizing"Calin Juravle
breaks debuggable tests. This reverts commit 23a8e35481face09183a24b9d11e505597c75ebb. Change-Id: I8e60b5c8f48525975f25d19e5e8066c1c94bd2e5
2015-09-17Support unresolved fields in optimizingCalin Juravle
Change-Id: I9941fa5fcb6ef0a7a253c7a0b479a44a0210aad4
2015-09-17Support unresolved methods in OptimizingCalin Juravle
Change-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1
2015-09-16Optimizing: Tag arena allocations in HGraph.Vladimir Marko
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
2015-09-08Optimizing: Tag basic block allocations with their source.Vladimir Marko
Replace GrowableArray with ArenaVector in HBasicBlock and, to track the source of allocations, assign one new and two Quick's arena allocation types to these vectors. Rename kArenaAllocSuccessor to kArenaAllocSuccessors. Bug: 23736311 Change-Id: Ib52e51698890675bde61f007fe6039338cf1a025
2015-09-03Revert "Optimizing: Tag basic block allocations with their source."Vladimir Marko
Reverting so that we can have more discussion about the STL API. This reverts commit 91e11c0c840193c6822e66846020b6647de243d5. Change-Id: I187fe52f2c16b6e7c5c9d49c42921eb6c7063dba
2015-09-03Optimizing: Tag basic block allocations with their source.Vladimir Marko
Replace GrowableArray with ArenaVector in HBasicBlock and, to track the source of allocations, assign one new and two Quick's arena allocation types to these vectors. Rename kArenaAllocSuccessor to kArenaAllocSuccessors. Bug: 23736311 Change-Id: I984aef6e615ae2380a532f5c6726af21015f43f5
2015-07-29Merge "Revert "Revert "Revert "Revert "Use the object class as top in ↵Calin Juravle
reference type propagation"""""
2015-07-29Merge "Revert "Revert "Revert "Revert "Fixes and improvements in ↵Calin Juravle
ReferenceTypePropagation"""""
2015-07-29Revert "Revert "Revert "Revert "Use the object class as top in reference ↵Calin Juravle
type propagation"""" This reverts commit b734808d0c93af98ec4e3539fdb0a8c0787263b0. Change-Id: Ifd925f166761bcb9be2268ff0fc9fa3a72f00c6f
2015-07-29Run intrinsics on inlined code.Scott Wakeling
Fixes any prior intrinsics recognition being lost if the containing code block is inlined. Change-Id: I6c89973545af97a4fe2444a9bd6efcc12d0d1b10
2015-07-28Revert "Revert "Revert "Revert "Fixes and improvements in ↵Calin Juravle
ReferenceTypePropagation"""" This reverts commit e344a8070d4549d513413c06767abf8a2c5e9709. Change-Id: I400fab0e02ce3c11376cc1f3ae9c7cf2c82ffcc1
2015-07-28Revert "Revert "Revert "Fixes and improvements in ReferenceTypePropagation"""Calin Juravle
This reverts commit 00e3b38be4b280d6d7a7e843cd336ffbd2ba4365. Change-Id: I4dbadb2d7312a410f1c56283f063dd82156cf702
2015-07-27Revert "Revert "Fixes and improvements in ReferenceTypePropagation""Calin Juravle
This reverts commit 9b0096ba77e7e61bc2dcbbf954831dcae54a6c27. Change-Id: I824f16e800ca32e646577d5e1e0d593887ccead1
2015-07-22Merge "Revert "Fixes and improvements in ReferenceTypePropagation""Calin Juravle
2015-07-22Merge "Revert "Use the object class as top in reference type propagation""Calin Juravle
2015-07-22Revert "Use the object class as top in reference type propagation"Calin Juravle
This reverts commit 3fabec7a25d151b26ba7de13615bbead0dd615a6. Change-Id: Id8614f6b6e3e0e4c9caeb9f771e4c145d9fec64f
2015-07-22Revert "Fixes and improvements in ReferenceTypePropagation"Calin Juravle
This reverts commit b0d5fc0ac139da4aaa1440263416b9bde05630b0. Change-Id: Iea8adfc0bd4cb7ee2b292278b8bac80a259acbd1
2015-07-22Merge "Use the object class as top in reference type propagation"Calin Juravle
2015-07-22Merge "Fixes and improvements in ReferenceTypePropagation"Calin Juravle
2015-07-21Use the object class as top in reference type propagationCalin Juravle
This properly types all instructions, making it safe to query the type at any time. This also moves a few functions from class.h to class-inl.h to please gcc linker when compiling for target. Change-Id: I6b7ce965c10834c994b95529ab65a548515b4406
2015-07-21Fixes and improvements in ReferenceTypePropagationCalin Juravle
- Bound object types after a CheckCast. This increases the precision of (inlining) generic operations. - Make sure that the BoundType is exact when the class is final. - Make sure that we don't duplicate BoundTypes when we run the analysis more than once. Change-Id: Ic22b610766fae101f942c0d753ddcac32ac1844a
2015-07-15ART: Build SSA form when try/catch is presentDavid Brazdil
This patch implements support for try/catch in the SsaBuilder. Values of locals are propagated from throwing sites inside try blocks to their respective catch blocks and phis ("catch phis") are created when necessary. Change-Id: I0736565c2c4ff3f9f0924b6e3a785a50023f875a
2015-07-08Revert "Revert "ART: Ignore try blocks with no throwing instructions""David Brazdil
The original CL broke libcore tests because monitor-exit instructions did not have any side-effects and got removed by DCE once not labelled throwing any more. This reverts commit efe374d7c25c1d48945a9198d96469de99e0c1bd. Change-Id: I624c0f91676d9baaada6f33be9d7091f68d57535
2015-07-08Revert "ART: Ignore try blocks with no throwing instructions"David Brazdil
Turns out monitor-exit *can* throw... Need to investigate This reverts commit 8f8ee680bec71a28d9d7b7538e8c7ca100a18184. Change-Id: I8b42690918833c917b6a7fc3ceea932b7c1a6f15
2015-07-08ART: Ignore try blocks with no throwing instructionsDavid Brazdil
In order to avoid complex removal of redundant exceptional edges in the SSA builder, this patch modified the graph builder to consider blocks without throwing instructions as not in a try block, even if covered by a TryItem. In some corner cases, this may generate more TryBoundaries than necessary, but those can be removed once the SSA form is built. Change-Id: I158c4542b2c1964a8dd532f82e921b9cb1997e1e
2015-07-01Don't print signatures to avoid spaces.Nicolas Geoffray
Change-Id: I64340fbd08282acb0eb4142d17d37e69bba507cf
2015-07-01Merge "ART: Changes to try-catch in GraphBuilder"David Brazdil
2015-07-01ART: Changes to try-catch in GraphBuilderDavid Brazdil
This patch adds an additional case into the insertion algorithm for HTryBoundary inside HGraphBuilder in order to better handle catch blocks covered by a TryItem. Building SSA form also required to stop combining HTryBoundaries for neighbouring TryItems because it was not clear which exception handlers belong to which try block. Change-Id: Ic68bd6ef98fee784609fa593cb08dca1f00a15e0
2015-07-01Emit method name at invokes in the graph visualizer.Nicolas Geoffray
Change-Id: I832f823463569724fca9c38cd70d9dd552f15b3a
2015-06-29Revert "Revert "Do not update the type of something we already know.""Nicolas Geoffray
This reverts commit 63107a804ce17db9789051e1fe310d99d1dae1cb. bug:22116987 Change-Id: I49a376a5bd2073a69babe122ec0d26e5d2f82461
2015-06-29Revert "Do not update the type of something we already know."Calin Juravle
This reverts commit 30eb58c548bee08468f68eb140a74a51dd7d9b43. Change-Id: Icd959e868160fc3ee7031dd2927554ac5b21d40f
2015-06-29Do not update the type of something we already know.Nicolas Geoffray
This is both an optimization to avoid unneeded nodes, and correctness to avoid replacing the second input of `HInstanceOf` and `HCheckCast` to something that is not `HLoadClass`. bug:22116987 Change-Id: I4907197a9002883d7cae8265a9642512b6201396
2015-06-26Revert "Revert "ART: Implement try/catch blocks in Builder""David Brazdil
This patch enables the GraphBuilder to generate blocks and edges which represent the exceptional control flow when try/catch blocks are present in the code. Actual compilation is still delegated to Quick and Baseline ignores the additional code. To represent the relationship between try and catch blocks, Builder splits the edges which enter/exit a try block and links the newly created blocks to the corresponding exception handlers. This layout will later enable the SsaBuilder to correctly infer the dominators of the catch blocks and to produce the appropriate reverse post ordering. It will not, however, allow for building the complete SSA form of the catch blocks and consequently optimizing such blocks. To this end, a new TryBoundary control-flow instruction is introduced. Codegen treats it the same as a Goto but it allows for additional successors (the handlers). This reverts commit 3e18738bd338e9f8363b26bc895f38c0ec682824. Change-Id: I4f5ea961848a0b83d8db3673763861633e9bfcfb
2015-06-26Revert "ART: Implement try/catch blocks in Builder"David Brazdil
Causes OutOfMemory issues, need to investigate. This reverts commit 0b5c7d1994b76090afcc825e737f2b8c546da2f8. Change-Id: I263e6cc4df5f9a56ad2ce44e18932ca51d7e349f
2015-06-25ART: Implement try/catch blocks in BuilderDavid Brazdil
This patch enables the GraphBuilder to generate blocks and edges which represent the exceptional control flow when try/catch blocks are present in the code. Actual compilation is still delegated to Quick and Baseline ignores the additional code. To represent the relationship between try and catch blocks, Builder splits the edges which enter/exit a try block and links the newly created blocks to the corresponding exception handlers. This layout will later enable the SsaBuilder to correctly infer the dominators of the catch blocks and to produce the appropriate reverse post ordering. It will not, however, allow for building the complete SSA form of the catch blocks and consequently optimizing such blocks. To this end, a new TryBoundary control-flow instruction is introduced. Codegen treats it the same as a Goto but it allows for additional successors (the handlers). Change-Id: I415b985596d5bebb7b1bb358a46e08b7b04bb53a
2015-06-23ART: Fix GraphVisualizer dlopen crashDavid Brazdil
The HGraphVisualizer used to crash if it failed to dlopen the libart(d)-disassembler.so. This patch fixes that. Bug: 22001285 Change-Id: Ibe9b9af17a77e22e3571c886f77918e9491b7827
2015-06-22Opt compiler: Add disassembly to the '.cfg' output.Alexandre Rames
This is automatically added to the '.cfg' output when using the usual `--dump-cfg` option. Change-Id: I864bfc3a8299c042e72e451cc7730ad8271e4deb
2015-06-19Verifier: check an aput, even if we know it will fail.Nicolas Geoffray
bug:21867457 Change-Id: I01e333d858995d0e1e083a50cf8d460a86381f2c
2015-06-17Fix bug in optimizing around instanceof.Nicolas Geoffray
We were too aggressive when removing instanceof. We should not remove it when there is one of the two static types that is an interface. Change-Id: I1fd80915b99b094f7b4393e7adb2b160201b30d5
2015-05-29Support for inlining methods that call/throw.Nicolas Geoffray
Mostly fixes here and there to make it working. Change-Id: I1b535e895105d78b65634636d675b818551f783e
2015-05-20Add tests for InstanceOf's and CheckCast's MustDoNullCheckGuillaume "Vermeille" Sanchez
Change-Id: I6a2b9293d91d27193625f5c61b0b64733a0c0d82
2015-05-20Remove unnecessary clinit checksCalin Juravle
Bug: 20852802 Change-Id: Ia6db8017ac22d45456845704a69ddffcc6917f4e
2015-05-20Merge "Revert "Add test for Change-Id: ↵Calin Juravle
Ied0412a01922b40a3f5d89bed49707498582abc1""
2015-05-20Revert "Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1"Calin Juravle
This reverts commit 0f675d8d70934762a5ed70f0734bd19eecfe9680. The test name is too long... Change-Id: I4496501e73dcf6424e9c58b331e3d3b241aa7917
2015-05-20Merge "Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1"Calin Juravle
2015-05-20Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1Guillaume "Vermeille" Sanchez
Change-Id: I3e9cbd0f5ba55f9044ddc7c7bec67b5193b90e75
2015-05-18ART: Mark constructor 'explicit'David Brazdil
Fixes a cpp-lint error. Change-Id: Ibd2c84a6f171a5ddb9aa1a3b9e23c1e5a30537f0
2015-05-18ART: Revert change to LiveRange::DumpDavid Brazdil
Changes back the LiveRange printing format to "[start,end)" for better clarity. However, it removes the space after comma due to b/1189305 and prints the "ranges" attribute with curly brackets to improve readability. This is a resubmission of CL Ic83025fa78d6f1edb5e0e39d66160182b0198ab8 which fixes a compilation issue on target. Bug: 21189305 Change-Id: Ic232c02ba19a710ead67793a039f99c0345353c7