| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Squashed cherry-picks:
* 067f1ed7816cf4eb5d6258ca31b387ddb2073ab7
* 750f7c2827318f6d07620f2ef0321218ea4d8670
* 2f90b3415aadc2587d26c767c6bfb235797119a8
* 2ea7b70b2347969f3735bd0ec1b462bd6d2ff1bd
Bug: 22881413
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
(cherry picked from commit a215b95d03cfe713018a245553b74d7eeee813df
and amended)
Bug: 21868508
Change-Id: Ic83813a966cef18e59447083926bf033aa587154
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21868508
(cherry picked and squashed from commits
ec74835a7e4f2660250a2f3f9508cbbe5269e49a and
0941b9d48a9a8c6d80a1af7a0d0fc9f80fe2b9a1)
Change-Id: I1750e6bea20321d04680132281a6c2924531c5ae
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
In order to get closer to our code increase limit.
Bug:21868508
(cherry picked from commit 432bf3d525dd0736c91238d69e29b4db6a2f7b80)
Change-Id: Iab19fe99a8a869b0fb841bac317016e4a3dc00e2
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Boolean simplifier should not remove condition instruction
if it has side effects.
(cherry picked from commit 108ceb48edea654c544b483c302212e43d79a472)
Change-Id: I00dd595da1bba0f027f5c8647035e9fd8ba62ee1
|
|/
|
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
|
| |
If the destination register is a reference, use kReference for the
op size.
Bug: 22244733
(cherry picked from commit 185a5586c8b796e770e9b4b7ac2befa8ccdaca7e)
Change-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255
|
|
|
|
|
|
|
| |
(cherry picked from commit 22bb5a2ebc1e2724179faf4660b2735dcb185f21)
Bug: 21555893
Change-Id: I2a995be128a5603d08753c14956dd8c8240ac63c
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21760614
(cherry picked from commit 98088c424efd45ea3c172d4bc16e191f26a007cc)
Change-Id: I1b40b8ee313a4d187439d969d083d12fb3997cda
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
| |
This reverts commit 63107a804ce17db9789051e1fe310d99d1dae1cb.
bug:22116987
(cherry picked from commit f9a199571417b5a5a62d94d05a064077e14dd2c4)
Change-Id: Ia516f2cbce6d22df37f3a0854abdd0b54d3ea72d
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(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>
|
| |
| |
| |
| |
| |
| |
| | |
(cherry picked from commit f7e7327d7a873d21aaae01471f46a4d64d65433b)
Bug: 22136903
Change-Id: I657d4b5e623696e1264c2c6c9ad4e7fd466d759c
|
|/
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously the kEverything filter failed to compile class
initializers. Now it will.
Bug: 19576257
(cherry picked from commit c83329952b4a313e747c8835a73699e2cae5a6e2)
Change-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This will avoid false negatives when running dex2oatd on apks.
bug:21865473
(cherry picked from commit 335005e2b3a179f26b7a8ae64ca60a1406b669bd)
Change-Id: Iac6dbe30c9d576077a0384b88696f79937d89471
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Deoptimizations may change it to a HPhi.
bug:22056703
(cherry picked from commit 8df886b9214802ad689316a1dedb00a6d102555c)
Change-Id: I8afcf88e3a12dbe4d87101e6a7cefb8b81e2bb96
|
|
|
|
|
|
|
|
| |
(cherry picked from commit ea80942c39cb5e9bc3e38a388583d1646c1e2a3f)
bug:22031382
Change-Id: If410045779adb9e7e611af22c988232b5bf9a902
|
|
|
|
|
|
|
|
| |
bug:22031382
(cherry picked from commit 1f82ecc6a0c9f88d03d6d1a6d95eeb8707bd06c1)
Change-Id: I9a74edb185cb806045903dfe9695d9cc1a02e86b
|
|
|
|
|
|
|
|
| |
bug:21862741
(cherry picked from commit a09ff9c11f07863ac57e6120a824f0d20dfaa284)
Change-Id: Ia8e903e09a7f9c2b8ef7cf3522f73f154534b81f
|
|
|
|
|
|
|
|
|
| |
bug:22042796
https://code.google.com/p/android/issues/detail?id=178008
(cherry picked from commit 1efcc22cd1895c48adccbe49270d8e8583c2b12d)
Change-Id: I5c0d783e842da39cd3dcbb2f18ccf784e797a64f
|
|
|
|
|
|
|
|
|
|
|
| |
'second_reg' is an input register that can survive the instruction.
Instead use the output register as a temporary result.
bug:21667432
(cherry picked from commit a4f3581da73b83484a30ab499c4f8ad43b378dab)
Change-Id: Ic1f399964911b8a9fc57352130c92b2a0a1b8e0d
|
|
|
|
|
|
|
|
| |
Bug: 21897404
(cherry picked from commit c08ab29796eeaa3b5863fbd987cd96fe7538d40c)
Change-Id: I66531379fb4468a8ddee063e664bf6593abbe7d5
|
|
|
|
|
|
|
|
| |
bug:21867144
This reverts commit ee39360775066e6b9920348c86ea98bf01d0facf.
Change-Id: I69bf85ce7c352b1a22f36f0f2a136f95b4e73bd6
|
|
|
|
|
|
|
|
|
|
| |
MERGE ANYWHERE"
This reverts commit c362782609ca6fbc355ccc9ea9110fe671db9671.
Reverting in order to make a commit that will merge.
bug:21867144
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't use IsAssignableFrom, but check beforehand if the referrer is an
interface. Otherwise, we are being too aggressive on removing clinit
checks on interfaces (being a subclass doesn't imply the interface
has been initialized).
bug:21870666
This reverts commit 463580ca5a1e75e27ad0207537ffc6252091326a.
(cherry picked from commit b783b408112d1797da646f576a40f94bcb5162f3)
Change-Id: Ida03f453c9b0d4dda87a5696098f9ffbd69a3aa3
|
|
|
|
|
|
|
|
| |
bug:21869678
(cherry picked from commit afd06414598e011693137ba044e38756609b2179)
Change-Id: I982ccdf46e3f4d0cc1901439e0bc2dcfa0fc661f
|
|
|
|
|
|
|
|
| |
bug:21869670
(cherry picked from commit 30451743493bc2f589e96d68ab98f557461f97f9)
Change-Id: Ia18986797d166470801e7a9a690c054d2dc57952
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When we simplify the CFG, we must preserve things that were already
simplified. For example, the index in the predecessor list or
successor list of a block must be preserved for ensuring the
first block is a loop pre header.
bug:21867463
(cherry picked from commit 8b20f88b0a8d1b374dd5eaae289d19734c77b8f8)
Change-Id: I2581b5a50942290da96cd9ec876f6f2573e0a6c4
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The verifier will not complain about dead code. For the compiler,
it is benign.
bug:21863767
(cherry picked from commit 69505f86a1a653bf86c1f2b423b3e0605137d5d1)
Change-Id: I2bc7888b39c91862c6dade130eccdf92f19b3f6f
|
|/
|
|
|
|
|
|
| |
bug:21866529
(cherry picked from commit 3c4ab80c102ff1bfc0e74d4abddbf5454bf4008d)
Change-Id: Ibdc0d4a9730bfc6e7307282276f084dae5ac55c1
|