summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler_stats.h
Commit message (Collapse)AuthorAgeFilesLines
...
* ART: Refactor SsaBuilder for more precise typing infoDavid Brazdil2015-12-311-2/+6
| | | | | | | | | | | | | | | This reverts commit 68289a531484d26214e09f1eadd9833531a3bc3c. Now uses Primitive::Is64BitType instead of Primitive::ComponentSize because it was incorrectly optimized by GCC. Bug: 26208284 Bug: 24252151 Bug: 24252100 Bug: 22538329 Bug: 25786318 Change-Id: Ib39f3da2b92bc5be5d76f4240a77567d82c6bebe
* Revert "ART: Refactor SsaBuilder for more precise typing info"Alex Light2015-12-151-6/+2
| | | | | | | | | | | | | This reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12. Bug: 26208284 Bug: 24252151 Bug: 24252100 Bug: 22538329 Bug: 25786318 Change-Id: I5f491becdf076ff51d437d490405ec4e1586c010
* ART: Refactor SsaBuilder for more precise typing infoDavid Brazdil2015-12-141-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch refactors the SsaBuilder to do the following: 1) All phis are constructed live and marked dead if not used or proved to be conflicting. 2) Primitive type propagation, now not a separate pass, identifies conflicting types and marks corresponding phis dead. 3) When compiling --debuggable, DeadPhiHandling used to revive phis which had only environmental uses but did not attempt to resolve conflicts. This pass was removed as obsolete and is now superseded by primitive type propagation (identifying conflicting phis) and SsaDeadPhiEliminiation (keeping phis live if debuggable + env use). 4) Resolving conflicts requires correct primitive type information on all instructions. This was not the case for ArrayGet instructions which can have ambiguous types in the bytecode. To this end, SsaBuilder now runs reference type propagation and types ArrayGets from the type of the input array. 5) With RTP being run inside the SsaBuilder, it is not necessary to run it as a separate optimization pass. Optimizations can now assume that all instructions of type kPrimNot have reference type info after SsaBuilder (with the exception of NullConstant). 6) Graph now contains a reference type to be assigned to NullConstant. All reference type instructions therefore have RTI, as now enforced by the SsaChecker. Bug: 24252151 Bug: 24252100 Bug: 22538329 Bug: 25786318 Change-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260
* Inline monomorphic calls.Nicolas Geoffray2015-12-041-0/+8
| | | | Change-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f
* Clean up optimizing compiler statsCalin Juravle2015-12-011-55/+46
| | | | | | | | - removed unused stats. - add 'OptStat' prefix to the names of the printed stats to make them `grep` friendly. Change-Id: I189e98b5226465c88c4a00247cd0b9b2ddb6d66e
* Don't delegate to Quick anymore.Nicolas Geoffray2015-10-021-5/+0
| | | | Change-Id: I81ffd83daec7be03a796903f40b8bbdcd63c34c7
* Enable compilation of members with access check failures.Calin Juravle2015-10-021-0/+2
| | | | Change-Id: I0de73099b53612072c3e6f1235c22f96339fe440
* Revert "Revert "Support unresolved fields in optimizing"Calin Juravle2015-10-021-2/+2
| | | | | | | | | | | | The CL also changes the calling convetion for 64bit static field set to use kArg2 instead of kArg1. This allows optimizing to keep the asumptions: - arm pairs are always of form (even_reg, odd_reg) - ecx_edx is not used as a register on x86. This reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1. Change-Id: I93159917565824084abc96775f31be1a4249f2f3
* Revert "Support unresolved fields in optimizing"Calin Juravle2015-09-171-2/+2
| | | | | | | | breaks debuggable tests. This reverts commit 23a8e35481face09183a24b9d11e505597c75ebb. Change-Id: I8e60b5c8f48525975f25d19e5e8066c1c94bd2e5
* Support unresolved fields in optimizingCalin Juravle2015-09-171-2/+2
| | | | Change-Id: I9941fa5fcb6ef0a7a253c7a0b479a44a0210aad4
* Support unresolved methods in OptimizingCalin Juravle2015-09-171-2/+2
| | | | Change-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1
* Put in place the ARM64 instruction simplification framework.Alexandre Rames2015-08-191-0/+2
| | | | | | | | This commit introduces and runs the empty InstructionSimplifierArm64 pass. Further commits will introduce arm64-specific transformations in that pass. Change-Id: I458f8a2b15470297b87fc1f7ff85bd52155d93ef
* Bailout from compilation if an invoke is malformed.Nicolas Geoffray2015-06-181-0/+2
| | | | | | | | | | | Because the verifier does not check trivially dead instructions, the compilers must prepare for bogus instructions. This change fixes the case the arguments for an invoke do not match the formal parameters. bug:21865459 Change-Id: Ie9fa9dbaedaad0350a52391252e18c045056454d
* ART: Check long and double register pairs in invokesAndreas Gampe2015-06-091-6/+9
| | | | | | | | | For invokes, ensure that long and double parameters are actually in registers pairs. We were testing the pair, but skipping the actual high parameter register. Bug: 17410612 Change-Id: I8f4c3335ea8b7dc3cf252bee52a5a706ae8905f8
* Skip compilation when falling-through out of method code.Calin Juravle2015-05-011-21/+23
| | | | | Bug: 19988134 Change-Id: I68638ce9551848a67af587595f264b51f976df11
* ART: Dead block removalDavid Brazdil2015-04-241-2/+2
| | | | | | | | | Adds a new pass which finds all unreachable blocks, typically due to simplifying an if-condition to a constant, and removes them from the graph. The patch also slightly generalizes the graph-transforming operations. Change-Id: Iff7c97f1d10b52886f3cd7401689ebe1bfdbf456
* Run DCE again after all the other optimizations have run.Calin Juravle2015-04-221-2/+4
| | | | On docs this doubles the amount of instructions removed.
* Revert "Run DCE again after all the other optimizations have run."Nicolas Geoffray2015-04-211-4/+2
| | | | | | | | Reverting because of libcore failures. This reverts commit 7a9c885684c965fe84f91d8ad74f54f869e2a448. Change-Id: Iafe59b02fe7617243d81533d66e609a3528e7a58
* Run DCE again after all the other optimizations have run.Calin Juravle2015-04-211-2/+4
| | | | | | On docs this doubles the amount of instructions removed. Change-Id: I1712a92c0c0b3b32b111d194b64d8ea81d652822
* Use --dump-stats to dump optimizing compiler stats.Calin Juravle2015-04-211-1/+1
| | | | | | | VLOG(compiler) produces too much output and it takes a long time if you only need to see how an analysis performs. Change-Id: Ic17c2b2b5fec431d356cecd37289fb96985d4d7f
* Fallback to quick in case of soft verification errorsCalin Juravle2015-04-161-0/+4
| | | | | | | | | | Add a regression test: using uninitialized values triggers a soft verification error and optimizing should not crash. Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report. Bug: 19988704 Change-Id: I67174538eed853baff735694b3ae8eb34afe2a39
* Revert "Fallback to quick in case of soft verification errors"Calin Juravle2015-04-131-4/+0
| | | | | | This reverts commit c751d37e692d89b360f3c09421401f581b5c6d06. Change-Id: I2183df8e856410989bc019f6a1f58af37d5d7eab
* Fallback to quick in case of soft verification errorsCalin Juravle2015-04-101-0/+4
| | | | | | | | | | | Add a regression test: using uninitialized values triggers a soft verification error and optimizing should not crash. Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report. Bug: 19988704 Change-Id: I2493f737efd3fad72f6b41fb60eff1d3731613fb
* Opt compiler: Instruction simplification for HAdd, HNeg, HNot, HSub.Alexandre Rames2015-04-101-0/+2
| | | | | | | | | | | Under assumptions for the 'cost' of each IR (eg. neither HAdd nor HSub are faster than the other), transformations are only applied if they (locally) cannot degrade the quality of the graph. The code could be extended to look at uses of the IRs and detect more opportunities for optimisations. The optimisations in this patch do not look at other uses for their inputs. Change-Id: Ib60dab007af30f43421ef5bb55db2ec32fb8fc0c
* [optimizing] Only print full stats in VLOG(compiler)Nicolas Geoffray2015-03-301-5/+13
| | | | | | | | Also add a kCompiledQuick stat. bug:19956318 Change-Id: I0c6c0ac256362824eb9f1418216ab7e2c289a17b
* Implement a space filter for optimizing.Nicolas Geoffray2015-03-231-0/+2
| | | | | | Heuristic-based. Currently only for enabling fugu user build. Change-Id: I76e652bd3f00ed84a2a8ad69c7c2c0e24d74cd68
* Reference type propagationCalin Juravle2015-02-191-0/+4
| | | | | | | | | - propagate reference types between instructions - remove checked casts when possible - add StackHandleScopeCollection to manage an arbitrary number of stack handles (see comments) Change-Id: I31200067c5e7375a5ea8e2f873c4374ebdb5ee60
* Opt Compiler: ARM64: Add support for rem-float, rem-double and volatile.Serban Constantinescu2015-01-051-2/+0
| | | | | | | | Add support for rem-float, rem-double and volatile memory accesses using acquire-release and memory barriers. Change-Id: I96a24dff66002c3b772c3d8e6ed792e3cb59048a Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
* Inlining support in optimizing.Nicolas Geoffray2014-12-151-2/+4
| | | | | | | | | | Currently only inlines simple things that don't require an environment, such as: - Returning a constant. - Returning a parameter. - Returning an arithmetic operation. Change-Id: Ie844950cb44f69e104774a3cf7a8dea66bc85661
* Add more compilation stats to optimizingCalin Juravle2014-12-101-0/+111
Optimizing is getting closer to have full coverage and this provides a nice overview on why certain methods are not compiled/optimized. Also, clean up some of the builder methods. Change-Id: Id2f31441a788b797b0efea7ec78bee27bb654186