summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/nodes.cc
Commit message (Collapse)AuthorAgeFilesLines
* Fix some bugs in graph construction/simplification methods.Nicolas Geoffray2014-06-091-7/+12
| | | | | | | | Also fix a brano during SSA construction. The code should not have been commented out. Added a test to cover what the code intends. Change-Id: Ia00ae79dcf75eb0d412f07649d73e7f94dbfb6f0
* Add a linear scan register allocator to the optimizing compiler.Nicolas Geoffray2014-05-261-0/+1
| | | | | | | | | | | | This is a "by-the-book" implementation. It currently only deals with allocating registers, with no hint optimizations. The changes remaining to make it functional are: - Allocate spill slots. - Resolution and placements of Move instructions. - Connect it to the code generator. Change-Id: Ie0b2f6ba1b98da85425be721ce4afecd6b4012a4
* Import Dart's parallel move resolver.Nicolas Geoffray2014-05-231-0/+11
| | | | | | | | | | And write a few tests while at it. A parallel move resolver will be needed for performing multiple moves that are conceptually parallel, for example moves at a block exit that branches to a block with phi nodes. Change-Id: Ib95b247b4fc3f2c2fcab3b8c8d032abbd6104cd7
* Add a compilation tracing mechanism to the new compiler.Nicolas Geoffray2014-05-141-4/+4
| | | | | | Code mostly imported from: https://android-review.googlesource.com/#/c/81653/. Change-Id: I150fe942be0fb270e03fabb19032180f7a065d13
* Add loop recognition and CFG simplifications in new compiler.Nicolas Geoffray2014-05-131-46/+163
| | | | | | | | | We do three simplifications: - Split critical edges, for code generation from SSA (new). - Ensure one back edge per loop, to simplify loop recognition (new). - Ensure only one pre header for a loop, to simplify SSA creation (existing). Change-Id: I9bfccd4b236a00486a261078627b091c8a68be33
* Build live-in, live-out and kill sets for each block.Nicolas Geoffray2014-05-071-13/+11
| | | | | | | This information will be used when computing live ranges of instructions. Change-Id: I345ee833c1ccb4a8e725c7976453f6d58d350d74
* Add a Transform to SSA phase to the optimizing compiler.Nicolas Geoffray2014-04-281-7/+160
| | | | Change-Id: Ia9700756a0396d797a00b529896487d52c989329
* Fix lint error, and Makefile that could be confused with local files.Nicolas Geoffray2014-03-181-1/+1
| | | | Change-Id: I780cc0d6593eadd6f82e1126d7ad445894af666c
* Plug new optimizing compiler in compilation pipeline.Nicolas Geoffray2014-03-181-25/+26
| | | | | | Also rename accessors to ART's conventions. Change-Id: I344807055b98aa4b27215704ec362191464acecc
* More code generation for the optimizing compiler.Nicolas Geoffray2014-03-131-0/+1
| | | | | | | | | - Add HReturn instruction - Generate code for locals/if/return - Setup infrastructure for register allocation. Currently emulate a stack. Change-Id: Ib28c2dba80f6c526177ed9a7b09c0689ac8122fb
* Add register support to the optimizing compiler.Nicolas Geoffray2014-03-101-0/+4
| | | | | | Also make if take an input and build the use list for instructions. Change-Id: I1938cee7dce5bd4c66b259fa2b431d2c79b3cf82
* Add codegen support to the optimizing compiler.Nicolas Geoffray2014-03-041-5/+5
| | | | Change-Id: I9aae76908ff1d6e64fb71a6718fc1426b67a5c28
* Add conditional branches, and build dominator tree.Nicolas Geoffray2014-02-261-0/+97
| | | | Change-Id: I4b151a07b72692961235a1419b54b6b45cf54e63
* Re-apply: Initial check-in of an optimizing compiler.Nicolas Geoffray2014-02-191-0/+60
| | | | | | | | | The classes and the names are very much inspired by V8/Dart. It currently only supports the RETURN_VOID dex instruction, and there is a pretty printer to check if the building of the graph is correct. Change-Id: I28e125dfee86ae6ec9b3fec6aa1859523b92a893
* Revert "Initial check-in of an optimizing compiler."Nicolas Geoffray2014-02-191-60/+0
| | | | | | | | g++ warnings turned into errors. This reverts commit 68a5fefa90f03fdf5a238ac85c9439c6b03eae96. Change-Id: I09bb95d9cc13764ca8a266c41af04801a34b9fd0
* Initial check-in of an optimizing compiler.Nicolas Geoffray2014-02-191-0/+60
The classes and the names are very much inspired by V8/Dart. It currently only supports the RETURN_VOID dex instruction, and there is a pretty printer to check if the building of the graph is correct. Change-Id: Id5ef1b317ab997010d4e3888e456c26bef1ab9c0