summaryrefslogtreecommitdiff
path: root/compiler/optimizing
AgeCommit message (Collapse)Author
2016-03-23Merge "Fix and improve shift and rotate operations." Roland Levillain
2016-03-23Fix some typos in art/compiler/optimizing/nodes.cc. Roland Levillain
Change-Id: I11be5a9b73da207c9eb497bcaffc49d614c1ca89
2016-03-23Merge "Ensure object ArraySet with null value does not need a type check." Roland Levillain
2016-03-23Merge "Relax too strong DCHECK." Nicolas Geoffray
2016-03-23Ensure object ArraySet with null value does not need a type check. Roland Levillain
The art::PrepareForRegisterAllocation visitor can remove an art::BoundType instruction as value input of an art::ArraySet instruction, possibly replacing it with an art::NullConstant. If this happens, remove the need for a type check in this art::ArraySet. Bug: 27638110 Change-Id: I6270f8a8e22822a24d8a5919df427ca9c64d121b
2016-03-23Revert "Use compiler filter to determine oat file status." Nicolas Geoffray
Bots are red. Tentative reverting as this is likely the offender. Bug: 27689078 This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931. Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
2016-03-22Use compiler filter to determine oat file status. Richard Uhler
Record the compiler filter in the oat header. Use that to determine when the oat file is up-to-date with respect to a target compiler filter level. New xxx-profile filter levels are added to specify if a profile should be used instead of testing for the presence of a profile file. This change should allow for different compiler-filters to be set for different package manager use cases. Bug: 27689078 Change-Id: Id6706d0ed91b45f307142692ea4316aa9713b023
2016-03-22Merge "Optimizing: Reduce GraphChecker memory usage." Vladimir Marko
2016-03-22Merge "ART: Clean up arena allocation memory tracking." Vladimir Marko
2016-03-22Optimizing: Reduce GraphChecker memory usage. Vladimir Marko
Bug: 27690481 Change-Id: I15ce5524d94fc1780da02e6471bede66b3a1b82a
2016-03-22Merge "Tighten art::HNeg type constraints on its input." Roland Levillain
2016-03-22ART: Clean up arena allocation memory tracking. Vladimir Marko
Remove unused allocation types, mostly from removed Quick. Move logging one level up to capture memory used by stack maps during AOT compilation. Raise the reporting threshold to 8MiB to limit the output to the worst offenders. Change-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543
2016-03-22Merge "MIPS32: Implement UnsafeCASInt and UnsafeCASObject intrinsics." Roland Levillain
2016-03-22Relax too strong DCHECK. Nicolas Geoffray
There may be a lifetime hole in the interval, which means the interval does not cover the given position. bug:27617589 Change-Id: Iabd2b3d82936bed498f87be1a01760210954f97e
2016-03-22Fix and improve shift and rotate operations. Roland Levillain
- Define maximum int and long shift & rotate distances as int32_t constants, as shift & rotate distances are 32-bit integer values. - Consider the (long, long) inputs case as invalid for static evaluation of shift & rotate rotations. - Add more checks in shift & rotate operations constructors as well as in art::GraphChecker. Change-Id: I754b326c3a341c9cc567d1720b327dad6fcbf9d6
2016-03-22Optimizing: Fix a new valgrind error in image_test. Vladimir Marko
Bug: 27651442 Bug: 27151098 Change-Id: I23a428be68ccf9f9557df01ee7e920eeeb8da2ba
2016-03-22Tighten art::HNeg type constraints on its input. Roland Levillain
Ensure art::HNeg is only passed a type having the kind of its input. For a boolean, byte, short, or char input, it means HNeg's type should be int. Bug: 27684275 Change-Id: Ic8442c62090a8ab65590754874a14a0deb7acd8d
2016-03-22Merge "Remove Quick from tree." Nicolas Geoffray
2016-03-21MIPS32: Implement UnsafeCASInt and UnsafeCASObject intrinsics. Alexey Frunze
Change-Id: Ie871763b9a36075fd3d70ee6e2e241ae1ccc36cf
2016-03-21Generalize induction and range analysis across type conversions. Aart Bik
Rationale: This changelist implements allowing narrowing conversions within inductions and loop control. More induction and loops recognized, more bounds eliminated. We all win. The basic idea is pretty simple (record type with detected induction) but one has to get all the details right, as illustrated by the many new unit tests. BUG=27151098 Change-Id: I254020bfa5fa623799b31bbbb5ccc97d4d5a0100
2016-03-21Remove Quick from tree. Nicolas Geoffray
So long, old friend. Change-Id: I0241c798a34b92bf994fed83888da67d6e7f1891
2016-03-21Merge "Optimizing: Fix register allocator validation memory usage." Vladimir Marko
2016-03-21Optimizing: Fix register allocator validation memory usage. Vladimir Marko
Also attribute ArenaBitVector allocations to appropriate passes. This was used to track down the source of the excessive memory alloactions. Bug: 27690481 Change-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100
2016-03-21Merge "MIPS32: sun.misc.Unsafe get/put intrinsics." Roland Levillain
2016-03-21Merge "Check if the type of an instruction is erroneous before inlining." Nicolas Geoffray
2016-03-21Merge "Call HuntForOriginalReference to get to the null." Nicolas Geoffray
2016-03-21Check if the type of an instruction is erroneous before inlining. Nicolas Geoffray
We can get HInstructions typed with a class that is in an error state. For such classes, we cannot look at the vtable or imt table as they are not cleanly populated. bug:27683927 Change-Id: I0d64ca470e1cb6cf9b40e9f02bb9b0bb12c2bac1
2016-03-21Call HuntForOriginalReference to get to the null. Nicolas Geoffray
The null constant might be hiding under a HBoundType (which we could clean up in instruction simplifier, but that is orthogonal). bug:27683874 Change-Id: Ide8ec5bcd439ec0fca5e54175ebeedc5a9f679a3
2016-03-18Merge "Ensure art::HRor support boolean, byte, short and char inputs." Roland Levillain
2016-03-18Ensure art::HRor support boolean, byte, short and char inputs. Roland Levillain
Also extend tests covering the IntegerRotateLeft, LongRotateLeft, IntegerRotateRight and LongRotateRight intrinsics and their translation into an art::HRor instruction. Bug: 27682579 Change-Id: I89f6ea6a7315659a172482bf09875cfb7e7422a1
2016-03-18Merge "Generate native debug stackmaps before calls as well." David Srbecky
2016-03-17Generate native debug stackmaps before calls as well. David Srbecky
The debugger looks up PC of the call instruction, so the runtime's stackmap is not sufficient since it is at PC after the instruction. Change-Id: I0dd06c0b52e8079ea5d064ea10beb12c93584092
2016-03-17Fix load store elimination bug in the presence of null[i]. Nicolas Geoffray
Due to the dex specification, we can be in a state where two array get with the same dex register inputs are typed differently. bug:27683874 Change-Id: Ia821fd32e86c306093372249e7686332a7584263
2016-03-16MIPS32: sun.misc.Unsafe get/put intrinsics. Chris Larsen
- int sun.misc.Unsafe.getInt(Object o, long offset) - int sun.misc.Unsafe.getIntVolatile(Object o, long offset) - long sun.misc.Unsafe.getLong(Object o, long offset) - long sun.misc.Unsafe.getLongVolatile(Object o, long offset) - Object sun.misc.Unsafe.getObject(Object o, long offset) - Object sun.misc.Unsafe.getObjectVolatile(Object o, long offset) - void sun.misc.Unsafe.putInt(Object o, long offset, int x) - void sun.misc.Unsafe.putOrderedInt(Object o, long offset, int x) - void sun.misc.Unsafe.putIntVolatile(Object o, long offset, int x) - void sun.misc.Unsafe.putObject(Object o, long offset, Object x) - void sun.misc.Unsafe.putOrderedObject(Object o, long offset, Object x) - void sun.misc.Unsafe.putObjectVolatile(Object o, long offset, Object x) - void sun.misc.Unsafe.putLong(Object o, long offset, long x) - void sun.misc.Unsafe.putOrderedLong(Object o, long offset, long x) - void sun.misc.Unsafe.putLongVolatile(Object o, long offset, long x) Change-Id: I89c07a443ee81a5573a083e871b82f446416b71f
2016-03-16Merge "Make art::HCompare support boolean, byte, short and char inputs." Roland Levillain
2016-03-16Forgot space. Nicolas Geoffray
Change-Id: If9eced6d5bd6d8d0248bad0e7b12095fb5a84d26
2016-03-16Merge "Fix inliner crash related to type propagation." Nicolas Geoffray
2016-03-16Make art::HCompare support boolean, byte, short and char inputs. Roland Levillain
Also extend tests covering the IntegerSignum, LongSignum, IntegerCompare and LongCompare intrinsics and their translation into an art::HCompare instruction. Bug: 27629913 Change-Id: I0afc75ee6e82602b01ec348bbb36a08e8abb8bb8
2016-03-16Fix inliner crash related to type propagation. Nicolas Geoffray
- Do not agressively try to resolve a return type. - Deal with unresolved return type. bug:25492619 Change-Id: Idc9c96a0b376fe5ee86b411c02ce7078c7f48c84
2016-03-16Merge "Clean up NullCheck generation and record stats about it." Calin Juravle
2016-03-16Merge "Improve compiler stats" Calin Juravle
2016-03-16Add more statistics for memory use of the JIT. Nicolas Geoffray
Collect data for stack maps, profiling info, and compiled code. bug:27520994 Change-Id: Ic87361230c96ce0090027a37d750e948d806c597
2016-03-16Clean up NullCheck generation and record stats about it. Calin Juravle
This removes redundant code from the generators and allows for easier stat recording. Change-Id: Iccd4368f9e9d87a6fecb863dee4e2145c97851c4
2016-03-16Improve compiler stats Calin Juravle
- report the max size of arena alloc - report how many virtual or interface invokes were inlined Change-Id: I82f154a8e25b5e3890181a1aa11346cdc3f93e37
2016-03-16Merge "Collect memory use for the JIT." Nicolas Geoffray
2016-03-16Collect memory use for the JIT. Nicolas Geoffray
bug:27520994 Change-Id: I67b0c5b822001bfde8738a988c1ade69f1a26e3f
2016-03-16Accept boolean as an input of HDivZeroCheck. Nicolas Geoffray
All our arithmetic operations accept it. bug:27624718 Change-Id: I1f6bb95dc77ecb3fb2fcabb35a93b31c524bfa0a
2016-03-16Merge "Make art::HCompare side effect free." Roland Levillain
2016-03-16Merge "Fix HDoubleConstant::IsZero and HFloatConstant::IsZero." Nicolas Geoffray
2016-03-15ART: Fix shift simplification, x >>> 64. Vladimir Marko
Fix braino in https://android-review.googlesource.com/208199 Bug: 27638111 Change-Id: I8f12008af8bba943664c8a9eac3f2d2f7c820e79