summaryrefslogtreecommitdiffstats
path: root/compiler
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'android-6.0.1_r3' of ↵Steve Kondik2015-12-082-2/+35
|\ | | | | | | | | | | | | | | https://android.googlesource.com/platform/art into HEAD Android 6.0.1 release 3 Change-Id: I23fd56f2c1a3e8e8b993a151a794e18f3569912e
| * Fix in reference type propagationCalin Juravle2015-10-161-1/+3
| | | | | | | | | | | | | | | | | | | | We miss updating the type of objects if their nullability gets updated first. Bug: 25008765 (cherry picked from commit 83853392e26b2aa48328bb90c9f9c57b32c280dc) Change-Id: I81aa759d96008251d74f941494abe74aa4b52bdc
| * Parse runtime compiler options for JITMathieu Chartier2015-10-151-1/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the case where the CppDefines do not match the device the JIT is running on. Sample logcat output to prove it works: JIT instruction set variant krait JIT instruction set features default Bug: 24982714 (cherry picked from commit 085fc87e7ea42989a4a00cacb0c9c3a6d2590af6) Change-Id: I1f4991a5d7cdc6101d1b0ecbcb39fb26dd20180a
* | art: allow devices to disable CAF bailout patchesSimon Shields2015-12-064-0/+31
| | | | | | | | | | | | these patches seem to break dex2oat on some non-qcom boards Change-Id: Ib70ca7e12d45ea49cbfa3f6acd04fe4a7f015055
* | art: Fix whitespace errors added by cafChristopher R. Palmer2015-11-0915-45/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All of these errors break compilation with GCC 4.9 and based on a spot check appear to be all CAF introduced changes. Fix these to avoid future breakage. Conflicts: compiler/dex/mir_graph.h compiler/dex/quick/arm/assemble_arm.cc compiler/dex/quick/arm/codegen_arm.h compiler/dex/quick/arm/target_arm.cc compiler/dex/quick/arm64/codegen_arm64.h compiler/dex/quick/arm64/target_arm64.cc compiler/dex/quick/mir_to_lir.h compiler/utils/growable_array.h Changes: compiler/dex/mir_graph.h compiler/dex/mir_optimization.cc compiler/dex/quick/arm/codegen_arm.h compiler/dex/quick/arm/target_arm.cc compiler/dex/quick/mir_to_lir.h compiler/dex/quick/quick_compiler.cc compiler/driver/compiler_driver.cc compiler/optimizing/inliner.cc compiler/optimizing/nodes.cc compiler/optimizing/optimizing_compiler.cc Change-Id: I3e23e1449eea0565fbe6f91251190b1e153f16cf Signed-off-by: AdrianDC <radian.dc@gmail.com>
* | Merge tag 'android-6.0.0_r26' into cm-13.0Ricardo Cerqueira2015-11-051-0/+9
|\ \ | |/ | | | | Android 6.0.0 release 26
| * Revert "Fix another source of undeterministic inlining." DO NOT MERGEBrian Carlstrom2015-09-291-0/+9
| | | | | | | | | | | | | | | | This reverts commit bd7eef17de5f3d25f411702f9f260a96455b4cf7. Bug: 24467386 Bug: 20037935 Change-Id: I04d1d0ffc67661370e4c17911d3b2b105d053bc1
* | art: Set check_bail_out to false by defaultSteve Kondik2015-11-041-0/+3
| | | | | | | | | | | | | | * As it is supposed to be, thus unbreaking the compiler when used with the extension. Change-Id: I37499652ab0c3d33cdfccffef8664c9eb470a931
* | art: Build compiler with GCC if QC extension is usedSteve Kondik2015-11-011-0/+2
| | | | | | | | | | | | | | * QC hasn't switched to Clang yet, and the perf lib needs the emutls_v symbols generated from a newly-exposed threadlocal. Change-Id: I6c190c10c8878b2f5d36a36b6051a23e1dfae8e9
* | Merge branch 'm' of git://codeaurora.org/platform/art into cm-13.0Steve Kondik2015-10-212-8/+5
|\ \
| * | ART: move the check bail flag out of classWei Wang2015-10-062-8/+5
| | | | | | | | | | | | | | | | | | minor code refactoring. move the flag out of class declaration Change-Id: I65ae1601a282f2755ce31fe58364dd025718ff6d
* | | art: Update QC-PERF board flag to TARGET_HAVE_QC_PERFSteve Kondik2015-10-121-1/+1
|/ / | | | | | | | | | | * Some targets will set QCOM_HARDWARE but won't have these libs. Change-Id: I84292c190c120b646f5017d4801e7893fed902ff
* | ART: bring original constructor backWei Wang2015-10-063-0/+66
| | | | | | | | | | | | | | | | ART extension changes the constructor of some compiler classes, which confuses ART compiler test builder. Bring the original constructor back to make the test build work properly. Change-Id: I2d6f0a67c2c7bee9d8f67ba55eaa1d5c05449d31
* | ART: extensionWei Wang2015-10-0639-109/+628
| | | | | | | | | | | | | | 1. add hooks for further extension 2. minor code change Change-Id: I2615013b899f5f9b3495546e6001863fb054861a
* | Optimizing: Move optimization objects to Arena.Vladimir Marko2015-10-063-36/+46
|/ | | | | | | | | | | | | This should reduce the stack size needed by the OptimizingCompiler::CompileOptimized() which was very close to our limits for clang builds, causing repeated build breakages on otherwise healthy changes: art/compiler/optimizing/optimizing_compiler.cc:395:37: error: stack frame size of 1760 bytes in function 'art::OptimizingCompiler::CompileOptimized' [-Werror,-Wframe-larger-than=] Change-Id: I2f4ab0235f4eac61823a4a320bb4fe78942a23c2
* [MIPS] Avoid using odd numbered fp registersGoran Jakovljevic2015-08-111-22/+27
| | | | | | | | | Don't use odd numbered fp registers for single precision data on MIPS32r6 (64-bit FPU). Bug: 23050326 Change-Id: I35cc19df091149773411e2336b01c170929376bc (cherry picked from commit fc8156a3df88e259c892d50bf23f7c4f11531844)
* ART: Fix Quick's DCE+GVNSerguei Katkov2015-08-112-2/+121
| | | | | | | | | | | | | | | | | | DCE_GVN does not take into account the following case: mov a, b ... mov c, b when optimization tries to replace a with c it must ensure that for all uses of a there is no new definition of c before use. Otherwise that use will incorrectly substituted with new c instead of original b. Bug: 23102860 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com> (cherry picked from commit 2f2f17399f6bdfc5ec94a875152c31ef79620520) Change-Id: I1f08c99cedbe4fd1b96cad11f17d60ab551c7cf7
* ART: Change UnresolvedMergedType internal representationAndreas Gampe2015-08-101-1/+1
| | | | | | | | | | Squashed cherry-picks: * 067f1ed7816cf4eb5d6258ca31b387ddb2073ab7 * 750f7c2827318f6d07620f2ef0321218ea4d8670 * 2f90b3415aadc2587d26c767c6bfb235797119a8 * 2ea7b70b2347969f3735bd0ec1b462bd6d2ff1bd Bug: 22881413
* Fix a bug in the register allocator around pair allocation.Nicolas Geoffray2015-08-081-1/+4
| | | | | | | | | | | | | We may get hints that do not work with the current implementation of register pairs, which forces the allocation of (low + 1) for the high register. For example, if the hint is EBX, we will allocate ESP for the high register. bug:23043730 (cherry picked from commit f29758111e71a7d14f3e52d78773561a5d59961f) Change-Id: Ib395e36616017a87d3055218d72417f4e9ff6501
* Tighten default inlining settings when using the space filter.Roland Levillain2015-08-071-0/+4
| | | | | | | | (cherry picked from commit a215b95d03cfe713018a245553b74d7eeee813df and amended) Bug: 21868508 Change-Id: Ic83813a966cef18e59447083926bf033aa587154
* ART: Fix the simplifier for add/subSerguei Katkov2015-08-061-8/+16
| | | | | | | | | | | | | Instruction simplifier for add/sub should not proceed with floats because that might cause the incorrect behavior with signed zero. Bug: 23001681 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com> (cherry picked from commit 115b53f609e74672fa93eea1845bb17340d5112a) Change-Id: I9928724c4158b3961e32e376b9203fe01ba2e442
* ART: x86_64 RoundDouble/Float intrinsics should initialize out value.Pavel Vyssotski2015-08-051-1/+7
| | | | | | | | | | | | | | x86_64 RoundDouble intrinsic should initialize output register for the case of "inPlusPointFive >= maxLong" as expected. The same for the RoundFloat intrinsic. Fixed also the out register type in CreateSSE41FPToIntLocations provoking a DCHECK failure. Signed-off-by: Pavel Vyssotski <pavel.n.vyssotski@intel.com> (cherry picked from commit 9ca257196b46fd7629bce0b338580e571e4113a8) Bug: 22973442 Change-Id: If974e79d33311587d0b541a01ca8a4c9c11b9468
* Allow for fine tuning the inliner.Calin Juravle2015-07-306-5/+35
| | | | | | | | | | Bug: 21868508 (cherry picked and squashed from commits ec74835a7e4f2660250a2f3f9508cbbe5269e49a and 0941b9d48a9a8c6d80a1af7a0d0fc9f80fe2b9a1) Change-Id: I1750e6bea20321d04680132281a6c2924531c5ae
* HDeoptimize should hold values live in env.Mingyao Yang2015-07-282-2/+8
| | | | | | | | | | Values that are not live in compiled code anymore may still be needed in interpreter, due to code motion, etc. (cherry-picked from commit 718493c6c3c8e380663cb8a94e57ce160a6c473f) Bug: 22665511 Change-Id: I8b85833c5c462f8fe36f86d6026a51b07563995a
* ART: Fix Quick/Optimizing suspend check assumption mismatch.Vladimir Marko2015-07-233-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | Quick's SuspendCheckElimination (SCE) expects that every method contains a suspend check and it eliminates suspend checks in loops containing an invoke. Optimizing eliminates the suspend check from leaf methods, so the combination of a Quick-compiled loop calling an Optimizing-compiled leaf method can lead to missing suspend checks and potentially leading to ANRs. Enable Quick's kLeafOptimization flag to remove suspend checks from leaf methods and disable Quick's SCE. This aligns the suspend check placement for the two backends and avoids the broken combination. Currently, all methods containing a try-catch are compiled with Quick, so it's relatively easy to create a regression test. However, this test will not be valid when Optimizing starts supporting try-catch. Bug: 22657404 (cherry picked from commit d29e8487ff1774b6eb5f0e18d854415c1ee8f6b0) Change-Id: I733c38bf68bfc2c618f2f2e6b59f8b0e015d7be1
* Reduce space filter threshold to 128.Nicolas Geoffray2015-07-171-2/+2
| | | | | | | | | | In order to get closer to our code increase limit. Bug:21868508 (cherry picked from commit 432bf3d525dd0736c91238d69e29b4db6a2f7b80) Change-Id: Iab19fe99a8a869b0fb841bac317016e4a3dc00e2
* Merge "ART: Boolean simplifier fix" into mnc-devNicolas Geoffray2015-07-171-5/+0
|\
| * ART: Boolean simplifier fixSerguei Katkov2015-07-161-5/+0
| | | | | | | | | | | | | | | | | | Boolean simplifier should not remove condition instruction if it has side effects. (cherry picked from commit 108ceb48edea654c544b483c302212e43d79a472) Change-Id: I00dd595da1bba0f027f5c8647035e9fd8ba62ee1
* | ART: DCE should know that array-length can throw NPESerguei Katkov2015-07-162-1/+34
|/ | | | | | | | | | | array-length can throw NPE so it should be taking into account. Bug: 22521944 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com> (cherry picked from commit b016c6dd3c30b04104a0a43dc294ce93e5f63874) Change-Id: I6232430a02f9e6d156ad2aae0eb5a630118c0e79
* Merge "ART: Release inputs in Long.reverse intrinsic in x86" into mnc-devAndreas Gampe2015-07-081-0/+15
|\
| * ART: Release inputs in Long.reverse intrinsic in x86Andreas Gampe2015-07-081-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | In the worst case we are using two temps each for input and output. Then we do not have a temp left over for the swap operations. The input is dead, however, after the first swap. So try to release it (a no-op if it isn't actually a temp). Bug: 22324327 (cherry picked from commit 575422fa5be7389bdaff5e2d25dd87b1d2d4de85) Change-Id: I1fc50159afdad14160e34abeaf4670958171d6b2
* | ART: Fix opsize in LoadArgDirectAndreas Gampe2015-07-071-1/+2
|/ | | | | | | | | | | If the destination register is a reference, use kReference for the op size. Bug: 22244733 (cherry picked from commit 185a5586c8b796e770e9b4b7ac2befa8ccdaca7e) Change-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255
* Add implicit null pointer and stack overflow checks for Mips.Douglas Leung2015-07-035-5/+48
| | | | | | | (cherry picked from commit 22bb5a2ebc1e2724179faf4660b2735dcb185f21) Bug: 21555893 Change-Id: I2a995be128a5603d08753c14956dd8c8240ac63c
* Do not create a HBoundType when the instruction is non-null.Nicolas Geoffray2015-07-022-0/+8
| | | | | | | | | | We don't need to refine the type after a null check, if the instruction is known non null or null. As a side effect, this avoids replacing HLoadClass instructions with HBoundType instructions. bug:22116987 Change-Id: I565ae95db5a64faec30e026674636e398e0bf445
* Merge "ART: Fix data loss when symbolizing oat files." into mnc-devAndreas Gampe2015-07-012-6/+10
|\
| * ART: Fix data loss when symbolizing oat files.Zheng Xu2015-07-012-6/+10
| | | | | | | | | | | | | | | | Bug: 21760614 (cherry picked from commit 98088c424efd45ea3c172d4bc16e191f26a007cc) Change-Id: I1b40b8ee313a4d187439d969d083d12fb3997cda
* | Merge "Do not replace a live phi with a dead phi." into mnc-devNicolas Geoffray2015-07-011-1/+7
|\ \
| * | Do not replace a live phi with a dead phi.Nicolas Geoffray2015-06-291-1/+7
| |/ | | | | | | | | | | | | | | | | | | | | A dead phi is not properly typed. Therefore, always use the live phi equivalent instead. bug:21865466 (cherry picked from commit 4230e1895b915a22363452823b0e51eabe92cb60) Change-Id: If9a3313fc953c2eb4be85b625676e48112fcb1f6
* | Revert "Revert "Do not update the type of something we already know.""Nicolas Geoffray2015-06-293-0/+37
|/ | | | | | | | | | This reverts commit 63107a804ce17db9789051e1fe310d99d1dae1cb. bug:22116987 (cherry picked from commit f9a199571417b5a5a62d94d05a064077e14dd2c4) Change-Id: Ia516f2cbce6d22df37f3a0854abdd0b54d3ea72d
* Merge "MIPS: Initial version of optimizing compiler for MIPS64R6." into mnc-devRoland Levillain2015-06-2913-254/+4415
|\
| * MIPS: Initial version of optimizing compiler for MIPS64R6.Roland Levillain2015-06-2613-254/+4415
| | | | | | | | | | | | | | | | | | | | (cherry picked from commit 4dda3376b71209fae07f5c3c8ac3eb4b54207aa8) (amended for mnc-dev) Bug: 21555893 Change-Id: I874dc356eee6ab061a32f8f3df5f8ac3a4ab7dcf Signed-off-by: Alexey Frunze <Alexey.Frunze@imgtec.com> Signed-off-by: Douglas Leung <douglas.leung@imgtec.com>
* | Quick: Disable GVN, DCE and LVN for type conflicts.Vladimir Marko2015-06-271-5/+11
| | | | | | | | | | | | | | (cherry picked from commit f7e7327d7a873d21aaae01471f46a4d64d65433b) Bug: 22136903 Change-Id: I657d4b5e623696e1264c2c6c9ad4e7fd466d759c
* | ART: Bail out immediately on try/catchDavid Brazdil2015-06-261-6/+11
|/ | | | | | | | | Optimizing builds the graph even if it knows it will delegate to Quick. This patch moves the decision at the beginning of the TryCompile function to save a little bit of compile time. Bug: 22115561 Change-Id: I18b5a686e10592080ea3c49d53a0dd81aa3b3010
* Merge "ART: Fix kEverything compiler filter" into mnc-devAndreas Gampe2015-06-262-3/+4
|\
| * ART: Fix kEverything compiler filterbuzbee2015-06-252-3/+4
| | | | | | | | | | | | | | | | | | | | | | Previously the kEverything filter failed to compile class initializers. Now it will. Bug: 19576257 (cherry picked from commit c83329952b4a313e747c8835a73699e2cae5a6e2) Change-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41
* | ART: Set methods to preverified in verify-noneAndreas Gampe2015-06-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Actually mark all methods to be verified, so that the interpreter doesn't do access checks. Speedup is about 2x on a Nexus 6 when booting in verify-none mode. Bug: 22040916 (cherry picked from commit 1c284f2abdfe1b0ed87d5216021e69146f10b116) Change-Id: I2d6c8df2a68eae6e358da2639d980cb8bfcc1560
* | Only do some checks when compiling against the core image.Nicolas Geoffray2015-06-253-2/+14
| | | | | | | | | | | | | | | | | | | | This will avoid false negatives when running dex2oatd on apks. bug:21865473 (cherry picked from commit 335005e2b3a179f26b7a8ae64ca60a1406b669bd) Change-Id: Iac6dbe30c9d576077a0384b88696f79937d89471
* | [MIPS64] JNI Compiler: Sign-extend int function argumentsLazar Trsic2015-06-242-4/+50
|/ | | | | | | | | | | | | | | MIPS n64 ABI differs from arm64. Arguments smaller than the 8B stack slot need to be sign-extended. Use combination (lw,sd), instead of (lw,sw) for 4B values. Change fixes software keyboard crash on mips64. Bug: 21555893 (cherry picked from commit f652d605753f1387e7797461b47116c5dcdf928d) Change-Id: I7574d37f6039e9e8c9e0047254be71d28d4c829a
* Use a flag from the verifier to know if we should compile.Nicolas Geoffray2015-06-244-1/+13
| | | | | | | | | | | Only used for the lack of bottom type in the aget-object case for now. Could be used for more. bug:21865466 (cherry picked from commit 4824c27988c8eeb302791624bb3ce1d557b0db6c) Change-Id: I2bb7fe1d4737bd92c1076b5193607d74d8761ee7
* BCE: don't assume a bounds check always gets a HArrayLength.Nicolas Geoffray2015-06-241-2/+8
| | | | | | | | | | Deoptimizations may change it to a HPhi. bug:22056703 (cherry picked from commit 8df886b9214802ad689316a1dedb00a6d102555c) Change-Id: I8afcf88e3a12dbe4d87101e6a7cefb8b81e2bb96