summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm.cc
Commit message (Collapse)AuthorAgeFilesLines
* Plug code generator into liveness analysis.Nicolas Geoffray2014-06-101-3/+14
| | | | | | Also implement spill slot support. Change-Id: If5e28811e9fbbf3842a258772c633318a2f4fafc
* Add a linear scan register allocator to the optimizing compiler.Nicolas Geoffray2014-05-261-0/+8
| | | | | | | | | | | | 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/+8
| | | | | | | | | | 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
* Force inlining on trivial accessors.Ian Rogers2014-04-291-0/+2
| | | | | | | | | Make volatility for GetFieldObject a template parameter. Move some trivial mirror::String routines to a -inl.h. Bug: 14285442 Change-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92
* Setup policies for register allocation.Nicolas Geoffray2014-04-291-32/+121
| | | | Change-Id: I857e77530fca3e2fb872fc142a916af1b48400dc
* Add a Transform to SSA phase to the optimizing compiler.Nicolas Geoffray2014-04-281-1/+9
| | | | Change-Id: Ia9700756a0396d797a00b529896487d52c989329
* Code cleanup in preparation for x64 backend.Nicolas Geoffray2014-04-171-106/+53
| | | | | | | | | - Use InvokeDexCallingConventionVisitor for setting up HParameterValues - Use kVregSize instead of kX86WordSize when dealing with virtual registers. Change-Id: Ia520223010194c70a3ff0ed659077f55cec4e7d8
* Simplify HInvokeStatic code generation.Nicolas Geoffray2014-04-171-43/+60
| | | | | | | | | | | HPushArgument is not needed for now (but might be when we start optimizing). Also, calling convention for 64bits backend will require to know more about the argument than the argument's index. Therefore currently let HInvokeStatic setup the arguments, which is possible because arguments of a calls are virtual registers and not instructions. Change-Id: I8753ed6083aa083c5180ab53b436dc8de4f1fe31
* Long support in optimizing compiler.Nicolas Geoffray2014-04-161-81/+416
| | | | | | | | | - Add stack locations to the Location class. - Change logic of parameter passing/setup by setting the location of such instructions the ones for the calling convention. Change-Id: I4730ad58732813dcb9c238f44f55dfc0baa18799
* Test control flow instruction with optimizing compiler.Nicolas Geoffray2014-04-081-1/+12
| | | | | | Add support for basic instructions to implement these tests. Change-Id: I3870bf9301599043b3511522bb49dc6364c9b4c0
* Add support for taking parameters in optimizing compiler.Nicolas Geoffray2014-04-071-9/+74
| | | | | | | - Fix stack layout to mimic Quick's. - Implement some sub operations. Change-Id: I8cf75a4d29b662381a64f02c0bc61d859482fc4e
* Use target-specific word instead of runtime word.Nicolas Geoffray2014-04-041-7/+7
| | | | Change-Id: Ia11dc3cc520a1a5c7bd017013e5699af9570ce91
* Add support for new-instance and invoke-direct.Nicolas Geoffray2014-04-041-1/+33
| | | | Change-Id: I2daed646904f7711972a7da15d88be7573426932
* Support passing arguments to invoke-static* instructions.Nicolas Geoffray2014-04-031-32/+70
| | | | | | | | | - Stop using the frame pointer for accessing locals. - Stop emulating a stack when doing code generation. Instead, rely on dex register model, where instructions only reference registers. Change-Id: Id51bd7d33ac430cb87a53c9f4b0c864eeb1006f9
* Add support for adding two integers in optimizing compiler.Nicolas Geoffray2014-03-311-0/+28
| | | | Change-Id: I5524e193cd07f2692a57c6b4f8069904471b2928
* Add support for invoke-static in optimizing compiler.Nicolas Geoffray2014-03-311-3/+51
| | | | | | | Support is limited to calls without parameters and returning void. For simplicity, we currently follow the Quick ABI. Change-Id: I54805161141b7eac5959f1cae0dc138dd0b2e8a5
* Plug new optimizing compiler in compilation pipeline.Nicolas Geoffray2014-03-181-46/+46
| | | | | | Also rename accessors to ART's conventions. Change-Id: I344807055b98aa4b27215704ec362191464acecc
* More code generation for the optimizing compiler.Nicolas Geoffray2014-03-131-13/+105
| | | | | | | | | - 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/+20
| | | | | | 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-0/+65
Change-Id: I9aae76908ff1d6e64fb71a6718fc1426b67a5c28