summaryrefslogtreecommitdiff
path: root/compiler
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-22Merge "Add an ImtConflictTable to better resolve IMT conflicts." Nicolas Geoffray
2016-03-22Add an ImtConflictTable to better resolve IMT conflicts. Nicolas Geoffray
- Attach a ImtConflictTable to conflict runtime ArtMethod. - Initially 0, a new one will be created at the first hit of the conflict method. - If the assembly code does not find a target method in the table, we will create a new one again, copying the data from the previous table and adding the new mapping. Implemented for arm/arm64/x86/x64. bug:27556801 bug:24769046 Change-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7
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-21Merge "Disable LZ4HC compressed images" Mathieu Chartier
2016-03-21Disable LZ4HC compressed images Mathieu Chartier
Seem to get randomly compressed incorrectly on volantis. Added verifiation in the image writer. Using LZ4HC now silently uses LZ4. This is still safe since both use the same decompression code. Bug: 27560444 Change-Id: I652eee7498dc84994993be3a5b0447ec5b246304
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-18Add verify-profile compiler filter Mathieu Chartier
Only verifies and dex2dex compiles classes in the profile. Goal is to reduce application launch time. ~2x faster than interpret-only for Facebook. Bug: 27688727 (cherry picked from commit a079e3aa62cceb76c1c1811e6e09bcaf75e20289) Change-Id: Iad5aa1adee3aa6c2408820e8cbbab2d4412021b8
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 "Remove --native-debuggable compiler option." David Srbecky
2016-03-16Merge "Make art::HCompare support boolean, byte, short and char inputs." Roland Levillain
2016-03-16Remove --native-debuggable compiler option. David Srbecky
Check if both --debuggable and --generate-debug-info are set instead. History: I have recently added the --native-debuggable flag to control whether extra stack maps are generated in order to produce accurate native line number mapping of all generated code. I didn't want to include it into --debuggable since we compile boot.oat as debuggable and so it would be affected. On second thought, it would have been reasonable to generate the extra stackmaps only if both --debuggable and --generate-debug-info are set, instead of introducing another compiler flag. This means we do not affect boot.oat but we still get the extra stack maps if DWARF debug information is explicitly requested. Change-Id: I7e5e557e4850a88b3b6f86178d2cb645fb1e1110
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