summaryrefslogtreecommitdiffstats
path: root/compiler/dex/pass_me.h
Commit message (Collapse)AuthorAgeFilesLines
* ART: Pass Options should be strings instead of integersJean-Philippe Halimi2015-02-031-12/+69
| | | | | | | | | This patch modifies the pass options to handle string values as well as integers. This will allow for more verbose pass customization. Change-Id: Iaf9507ceaae2cef317a23f0783404bacfdcad023 Signed-off-by: Jean-Philippe Halimi <jean-philippe.halimi@intel.com>
* Clean up pass driverMathieu Chartier2015-01-281-9/+10
| | | | | | | | | | | | Added pass manager to hold the state which used to be in global variables. Static variables caused issues with Runtime.exit since they are destroyed by the global destructors while threads are still executing. Bug: 17950037 Change-Id: Ie0e4546dc9e48909c8df996a5c135be682d50044
* ART: Some Quick cleanupAndreas Gampe2015-01-261-12/+3
| | | | | | | | | | Make several fields const in CompilationUnit. May benefit some Mir2Lir code that repeats tests, and in general immutability is good. Remove compiler_internals.h and refactor some other headers to reduce overly broad imports (and thus forced recompiles on changes). Change-Id: I898405907c68923581373b5981d8a85d2e5d185a
* Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.Ian Rogers2014-11-031-15/+17
| | | | | | | | | | | Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
* Quick: In GVN, apply modifications early if outside loop.Vladimir Marko2014-10-171-1/+0
| | | | | | | | | | | | | To improve GVN performance, apply modifications to blocks outside loops during the initial convergence phase. During the post processing phase, apply modifications only to the blocks belonging to loops. Also clean up the check whether to run the LVN and add the capability to limit the maximum number of nested loops we allow the GVN to process. Change-Id: Ie7f1254f91a442397c06a325d5d314d8f58e5012
* Merge "ART: Added dirty flag to optimizations"Ian Rogers2014-08-271-1/+2
|\
| * ART: Added dirty flag to optimizationsJean Christophe Beyler2014-08-261-1/+2
| | | | | | | | | | | | | | | | - Added a dirty flag to the PassMEDataHolder and use it to determine if we want to perform the post-optimization passes or not. Change-Id: I59a85f5198f9224d5fe8893397bfaf68a978d8f1 Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
* | ART: Add capability for a pass to have optionsRazvan A Lupusoru2014-08-261-0/+67
|/ | | | | | | | | | | | | | | | | | | | | This patch adds capability to have pass options. These are needed when a pass has multiple flags that can be tweaked. The user is now allowed to pass those options via command line. Since passes are treated as singletons and they are immutable, the overridden options provided by user are set on the compilation unit. Doing this way also allows a selectivity system to tweak the option per compilation instead of doing it globally (due to the single pass existing). The following command line flags have been added: --print-pass-options - This prints all passes that have options along with their defaults. --pass-options= - This is used to pass the overridden options in format of PassName:PassOption:PassOptionSetting Change-Id: Ib5156f5d2ff51a0c64c4ea0fa050bd2170663417 Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com> Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
* Rewrite topological sort order and improve GVN.Vladimir Marko2014-07-231-0/+1
| | | | | | | | | | | | | | | | | | | | | Rewrite the topological sort order to include a full loop before the blocks that go after the loop. Add a new iterator class LoopRepeatingTopologicalSortIterator that differs from the RepeatingTopologicalSortIterator by repeating only loops and repeating them early. It returns to the loop head if the head needs recalculation when we reach the end of the loop. In GVN, use the new loop-repeating topological sort iterator and for a loop head merge only the preceding blocks' LVNs if we're not currently recalculating this loop. Also fix LocalValueNumbering::InPlaceIntersectMaps() which was keeping only the last element of the intersection, avoid some unnecessary processing during LVN merge and add some missing braces to MIRGraph::InferTypeAndSize(). Bug: 16398693 Change-Id: I4e10d4acb626a5b8a28ec0de106a7b37f9cbca32
* ART: PassMEDataHolder should have a data fieldJean Christophe Beyler2014-06-141-0/+1
| | | | | | | | | For passes that would like to pass data around while working, let them actually allocate it if need be in the Start, use it during the Worker, and potentially free it during the End. Change-Id: I03238ef17158f7e2615d6defe5d7f15432c8a511 Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
* ART: Setting up cleanupJean Christophe Beyler2014-05-301-1/+4
| | | | | | | | | | | | | | - Moved code around to actually have the clean-up code in a PassDriver format. This allows us to better control what is being called after an optimization It also allows the use of a centralized pass system for both optimizations and cleanup. Change-Id: I9d21e9bb9ee663739722f440d82adf04f73e380c Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com> Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com> Signed-off-by: Yixin Shou <yixin.shou@intel.com> Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com> Signed-off-by: Udayan Banerji <udayan.banerji@intel.com>
* ART: Topological Sort Traversal ImplementationJean Christophe Beyler2014-05-221-0/+2
| | | | | | | | | | | | | - Added a topological sort implementation for traversal. - Useful for traversals that require traversing the predecessors first. - Added a function to BasicBlock to detect if it is an exception block. Change-Id: I573da1768a635c6fd0259573dbb46b112132e129 Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com> Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com> Signed-off-by: Yixin Shou <yixin.shou@intel.com> Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com> Signed-off-by: Udayan Banerji <udayan.banerji@intel.com>
* ART: Pass driver generalizationJames C Scott2014-05-221-0/+101
- Generalizing Pass Driver. - Migrating ME Pass Driver to use the new generalized Pass Driver. There will be some more changes after in the compiler code to generalize it a bit more by separating what is being done by the optimizing passes and post-pass cleanups. Change-Id: I140a70e88483d7c3991b7d336bd593b2613ae194 Signed-off-by: James C Scott <james.c.scott@intel.com>