summaryrefslogtreecommitdiff
path: root/compiler
AgeCommit message (Collapse)Author
2016-03-29Merge "Optimizing: Reduce arena memory used by GraphChecker." Vladimir Marko
2016-03-29Merge "ART: Make verifier fail log level adjustable" Andreas Gampe
2016-03-29Merge "ART: Clean up verifier" Andreas Gampe
2016-03-28ART: Make verifier fail log level adjustable Andreas Gampe
To help for build failures. Change-Id: I6c94dfb50177daa7d89902d78715ccec31bf0e45
2016-03-28ART: Clean up verifier Andreas Gampe
Clean up verifier post-Quick. Change-Id: I0b05e10dd06edd228fe2068c8afffc4b7d7fdffa
2016-03-28Merge "Add support for Dex version 37 in Runtime." Alex Light
2016-03-26Merge "Fix bug not accounting for type in induction comparison. Extended ↵ Aart Bik
unit tests."
2016-03-25Fix bug not accounting for type in induction comparison. Aart Bik
Extended unit tests. Rationale: Now that inductions are typed, comparisons should take the type into account as well. Change-Id: Ie533bb728d2006390646657573fa743e6fc37ff2
2016-03-25Allow x86+arm multilib build. Ying Wang
The explicit dependency of dex2oat on installed file of libart-compiler isn't necessary: the build sets up the dependency automatically when dex2oat links liblibart-compiler. Also the way of the explicit dependency is incorrect if multilib is involved: a 64-bit dex2oat may depend on 32-bit libart-compiler. Bug: 27526885 Change-Id: I4a9d72b49f5712695ff5a32b88df5eab9df7c1e4 (cherry-pick from commit 5eec66ea27a2fa5bfa1b4f9bd203c76e2990d7a2)
2016-03-25Merge "Avoid removing new-instance instruction twice. Includes a ↵ Aart Bik
fail-before/pass-after regression test."
2016-03-25Avoid removing new-instance instruction twice. Aart Bik
Includes a fail-before/pass-after regression test. Rationale: In some corner cases, one new instance reached more than one java.lang.String.<init> method call. As a result, the new instance instruction appeared multiple times in the vector uninitialized_strings_. A second removal crashes the compiler. This change list avoid the crash by simply skipping instructions that are already removed. BUG=27847265 Change-Id: I7f8a4f84ea3c184e1529ec3e90bd6749c83c445b
2016-03-25Optimizing: Reduce arena memory used by GraphChecker. Vladimir Marko
Use member variables to reuse the storage instead of repeatedly allocating new storage for local variables. Bug: 27690481 Change-Id: I614db9b8614d585653cfbff62e9cf7d7f0c58810
2016-03-24Add support for Dex version 37 in Runtime. Alex Light
We are skipping version 36 of the dex file format due to a bug in Dalvik dating back to ICS where dex files marked version 036 would erroneously be accepted. Bug: 27538761 Bug: 27809626 Change-Id: Ic053f7e25f5a8c3df83ff34b6656528824b2df12
2016-03-24Merge "ART: Fix order of operations in HBasicBlock::DisconnectAndDelete" David Brazdil
2016-03-24ART: Fix order of operations in HBasicBlock::DisconnectAndDelete David Brazdil
The method would remove predecessors before successors. As a result, instructions used by dead loop phis would see dangling uses, causing a DCHECK to fail. Steps were reordered to remove dependencies in post order. Bug: 27683071 Change-Id: I8e0e976443fb410908321a065276f1340b757c41
2016-03-24Merge "ART: Loosen a GraphChecker rule on Boolean inputs" David Brazdil
2016-03-24ART: Loosen a GraphChecker rule on Boolean inputs David Brazdil
GraphChecker tries to verify that Boolean inputs are properly typed. This is non-trivial in the presence of simplifying optimizations which capitalize on the fact that a Boolean value is internally represented as an integer. This patch removes the test from GraphChecker. Bug: 27625564 Change-Id: Ic61ea2193765b4578550538e965ca4f80fa4b287
2016-03-24Merge "Post-Quick cleanup: Remove CompilationUnit." Vladimir Marko
2016-03-24Merge "Clean up art::HConstant predicates." Roland Levillain
2016-03-24Merge "Do a null check on the sibling in the register allocator." Nicolas Geoffray
2016-03-24Do a null check on the sibling in the register allocator. Nicolas Geoffray
There may be a lifetime hole between the intervals, which means there is no interval for the given position. Litle sister of https://android-review.googlesource.com/#/c/209336/. bug:27626705 Change-Id: I8082aa5ae2dc37d8fa5d4c430b69e6defa495439
2016-03-24Merge "Optimizing: Do not insert suspend checks on back-edges." Vladimir Marko
2016-03-24Post-Quick cleanup: Remove CompilationUnit. Vladimir Marko
Change-Id: I309411b0fffaaed1e218e2c34394bdf6e2f75b48
2016-03-23Optimizing: Do not insert suspend checks on back-edges. Vladimir Marko
Rely on HGraph::SimplifyLoop() to insert suspend checks. CodeGenerator's CheckLoopEntriesCanBeUsedForOsr() checks the dex pcs of suspend checks against branch targets to verify that we always have an appropriate point for OSR transition. However, the HSuspendChecks that were added by HGraphBuilder to support the recently removed "baseline" interfered with this in a specific case, namely an infinite loop where the back-branch jumps to a nop. In that case, the HSuspendCheck added by HGraphBuilder had a dex pc different from the block and the branch target but its presence would stop the HGraph::SimplifyLoop() from adding a new HSuspendCheck with the correct dex pc. Bug: 27623547 Change-Id: I83566a260210bc05aea0c44509a39bb490aa7003
2016-03-23Revert "Revert "Use compiler filter to determine oat file status."" Andreas Gampe
This reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d. Add an option to change what OatFileManager considers up-to-date. In our tests we're allowed to write to the dalvik-cache, so it cannot be kSpeed. Bug: 27689078 Change-Id: I0c578705a9921114ed1fb00d360cc7448addc93a
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