summaryrefslogtreecommitdiff
path: root/compiler/optimizing
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Fix and improve shift and rotate operations."Roland Levillain2016-03-239-119/+141
|\
| * Fix and improve shift and rotate operations.Roland Levillain2016-03-229-119/+141
| | | | | | | | | | | | | | | | | | | | | | | | - 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
* | Fix some typos in art/compiler/optimizing/nodes.cc.Roland Levillain2016-03-231-4/+4
| | | | | | | | Change-Id: I11be5a9b73da207c9eb497bcaffc49d614c1ca89
* | Merge "Ensure object ArraySet with null value does not need a type check."Roland Levillain2016-03-233-0/+16
|\ \
| * | Ensure object ArraySet with null value does not need a type check.Roland Levillain2016-03-233-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Relax too strong DCHECK."Nicolas Geoffray2016-03-231-1/+7
|\ \ \
| * | | Relax too strong DCHECK.Nicolas Geoffray2016-03-221-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There may be a lifetime hole in the interval, which means the interval does not cover the given position. bug:27617589 Change-Id: Iabd2b3d82936bed498f87be1a01760210954f97e
* | | | Revert "Use compiler filter to determine oat file status."Nicolas Geoffray2016-03-232-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bots are red. Tentative reverting as this is likely the offender. Bug: 27689078 This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931. Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
* | | | Use compiler filter to determine oat file status.Richard Uhler2016-03-222-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge "Optimizing: Reduce GraphChecker memory usage."Vladimir Marko2016-03-221-25/+24
|\ \ \ \
| * | | | Optimizing: Reduce GraphChecker memory usage.Vladimir Marko2016-03-221-25/+24
| | |_|/ | |/| | | | | | | | | | | | | | Bug: 27690481 Change-Id: I15ce5524d94fc1780da02e6471bede66b3a1b82a
* | | | Merge "ART: Clean up arena allocation memory tracking."Vladimir Marko2016-03-221-7/+16
|\ \ \ \ | |_|_|/ |/| | |
| * | | ART: Clean up arena allocation memory tracking.Vladimir Marko2016-03-221-7/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge "Tighten art::HNeg type constraints on its input."Roland Levillain2016-03-224-2/+21
|\ \ \ \
| * | | | Tighten art::HNeg type constraints on its input.Roland Levillain2016-03-224-2/+21
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge "MIPS32: Implement UnsafeCASInt and UnsafeCASObject intrinsics."Roland Levillain2016-03-221-2/+93
|\ \ \ \ | |_|/ / |/| | |
| * | | MIPS32: Implement UnsafeCASInt and UnsafeCASObject intrinsics.Alexey Frunze2016-03-211-2/+93
| | | | | | | | | | | | | | | | Change-Id: Ie871763b9a36075fd3d70ee6e2e241ae1ccc36cf
* | | | Optimizing: Fix a new valgrind error in image_test.Vladimir Marko2016-03-221-1/+3
| |_|/ |/| | | | | | | | | | | | | | Bug: 27651442 Bug: 27151098 Change-Id: I23a428be68ccf9f9557df01ee7e920eeeb8da2ba
* | | Merge "Remove Quick from tree."Nicolas Geoffray2016-03-221-1/+0
|\ \ \
| * | | Remove Quick from tree.Nicolas Geoffray2016-03-211-1/+0
| |/ / | | | | | | | | | | | | | | | So long, old friend. Change-Id: I0241c798a34b92bf994fed83888da67d6e7f1891
* / / Generalize induction and range analysis across type conversions.Aart Bik2016-03-215-110/+399
|/ / | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "Optimizing: Fix register allocator validation memory usage."Vladimir Marko2016-03-2114-22/+41
|\ \
| * | Optimizing: Fix register allocator validation memory usage.Vladimir Marko2016-03-2114-22/+41
| |/ | | | | | | | | | | | | | | | | | | 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
* | Merge "MIPS32: sun.misc.Unsafe get/put intrinsics."Roland Levillain2016-03-211-16/+306
|\ \ | |/ |/|
| * MIPS32: sun.misc.Unsafe get/put intrinsics.Chris Larsen2016-03-161-16/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* | Merge "Check if the type of an instruction is erroneous before inlining."Nicolas Geoffray2016-03-211-0/+4
|\ \
| * | Check if the type of an instruction is erroneous before inlining.Nicolas Geoffray2016-03-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Call HuntForOriginalReference to get to the null."Nicolas Geoffray2016-03-211-2/+4
|\ \ \
| * | | Call HuntForOriginalReference to get to the null.Nicolas Geoffray2016-03-211-2/+4
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Ensure art::HRor support boolean, byte, short and char inputs."Roland Levillain2016-03-187-28/+29
|\ \ \
| * | | Ensure art::HRor support boolean, byte, short and char inputs.Roland Levillain2016-03-187-28/+29
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | Also extend tests covering the IntegerRotateLeft, LongRotateLeft, IntegerRotateRight and LongRotateRight intrinsics and their translation into an art::HRor instruction. Bug: 27682579 Change-Id: I89f6ea6a7315659a172482bf09875cfb7e7422a1
* | | Merge "Generate native debug stackmaps before calls as well."David Srbecky2016-03-188-16/+30
|\ \ \ | |_|/ |/| |
| * | Generate native debug stackmaps before calls as well.David Srbecky2016-03-178-16/+30
| | | | | | | | | | | | | | | | | | | | | 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
* | | Fix load store elimination bug in the presence of null[i].Nicolas Geoffray2016-03-172-0/+18
| |/ |/| | | | | | | | | | | | | | | | | 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
* | Merge "Make art::HCompare support boolean, byte, short and char inputs."Roland Levillain2016-03-169-57/+99
|\ \
| * | Make art::HCompare support boolean, byte, short and char inputs.Roland Levillain2016-03-169-57/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | Also extend tests covering the IntegerSignum, LongSignum, IntegerCompare and LongCompare intrinsics and their translation into an art::HCompare instruction. Bug: 27629913 Change-Id: I0afc75ee6e82602b01ec348bbb36a08e8abb8bb8
* | | Forgot space.Nicolas Geoffray2016-03-161-1/+1
| | | | | | | | | | | | Change-Id: If9eced6d5bd6d8d0248bad0e7b12095fb5a84d26
* | | Merge "Fix inliner crash related to type propagation."Nicolas Geoffray2016-03-161-4/+8
|\ \ \ | |/ / |/| |
| * | Fix inliner crash related to type propagation.Nicolas Geoffray2016-03-161-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Do not agressively try to resolve a return type. - Deal with unresolved return type. bug:25492619 Change-Id: Idc9c96a0b376fe5ee86b411c02ce7078c7f48c84
* | | Merge "Clean up NullCheck generation and record stats about it."Calin Juravle2016-03-1616-74/+69
|\ \ \
| * | | Clean up NullCheck generation and record stats about it.Calin Juravle2016-03-1616-74/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes redundant code from the generators and allows for easier stat recording. Change-Id: Iccd4368f9e9d87a6fecb863dee4e2145c97851c4
* | | | Merge "Improve compiler stats"Calin Juravle2016-03-163-9/+19
|\| | |
| * | | Improve compiler statsCalin Juravle2016-03-163-9/+19
| | |/ | |/| | | | | | | | | | | | | | | | - report the max size of arena alloc - report how many virtual or interface invokes were inlined Change-Id: I82f154a8e25b5e3890181a1aa11346cdc3f93e37
* | | Add more statistics for memory use of the JIT.Nicolas Geoffray2016-03-161-1/+1
| |/ |/| | | | | | | | | | | | | Collect data for stack maps, profiling info, and compiled code. bug:27520994 Change-Id: Ic87361230c96ce0090027a37d750e948d806c597
* | Merge "Collect memory use for the JIT."Nicolas Geoffray2016-03-161-0/+3
|\ \
| * | Collect memory use for the JIT.Nicolas Geoffray2016-03-161-0/+3
| |/ | | | | | | | | | | bug:27520994 Change-Id: I67b0c5b822001bfde8738a988c1ade69f1a26e3f
* | Accept boolean as an input of HDivZeroCheck.Nicolas Geoffray2016-03-166-4/+9
| | | | | | | | | | | | | | All our arithmetic operations accept it. bug:27624718 Change-Id: I1f6bb95dc77ecb3fb2fcabb35a93b31c524bfa0a
* | Merge "Make art::HCompare side effect free."Roland Levillain2016-03-162-5/+5
|\ \
| * | Make art::HCompare side effect free.Roland Levillain2016-03-152-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | All our back ends implement all comparisons without making a runtime call, so we can mark art::HCompare as a side effect free instruction unconditionally. Change-Id: I9a9e7c09156c642edb6af1fe84408f887e762f2e
* | | Merge "Fix HDoubleConstant::IsZero and HFloatConstant::IsZero."Nicolas Geoffray2016-03-161-2/+2
|\ \ \