OSDN Git Service
Roland Levillain [Mon, 13 Jul 2015 12:32:04 +0000 (12:32 +0000)]
Merge "Initialize pDeoptimize quick entry pointer for Mips." into mnc-dev
Douglas Leung [Mon, 13 Jul 2015 09:55:45 +0000 (10:55 +0100)]
Initialize pDeoptimize quick entry pointer for Mips.
This fixes art test 449-checker-bce.
(cherry picked from commit
2e8bf554574516e0e6a9b10ccd9f13bf56189795)
Bug:
21555893
Change-Id: I9a87c430168ea35984289b0b4a417aa0c659b6d5
Nicolas Geoffray [Mon, 13 Jul 2015 09:27:05 +0000 (09:27 +0000)]
Merge "Return an invalid StackMap when none can be found." into mnc-dev
Nicolas Geoffray [Fri, 10 Jul 2015 09:56:40 +0000 (10:56 +0100)]
Return an invalid StackMap when none can be found.
bug:
22389275
Partial cherry-pick of:
https://android-review.googlesource.com/#/c/151853
(commit
e12997fbce8e22431be58cac9db2535f7b4a7ac3)
Change-Id: Ia30b817be1b50d97243ba32967eeee359ed679c4
Mathieu Chartier [Sat, 11 Jul 2015 01:26:41 +0000 (18:26 -0700)]
Fix proxy handling in FindDeclaredVirtualMethod
Added missing GetInterfaceMethodIfProxy and test.
Fixed formatting.
Bug:
22411819
https://code.google.com/p/android-developer-preview/issues/detail?id=2635
(cherry picked from commit
72156e28fd6bc72ac965b29446f8801b2e82f2fd)
Change-Id: I3eece9c72091bb9d0262aacf0a75ec6908b5f4d2
Andreas Gampe [Thu, 9 Jul 2015 18:30:14 +0000 (11:30 -0700)]
ART: Change merges with Undefined to Undefined
The result of a merge with an Undefined type should be Undefined.
Conflicts are allowed to be copied around, but Undefined registers
should not be touched at all, except to be written into.
Add a success test case (the register isn't used) and a fail test
case (the register is tried to be copied).
Bug:
22331663
Bug:
22371999
(cherry picked from commit
97a1ff353f254b6e46c7501fe3f0e3254c2517b4)
Change-Id: I9697ce31c1d2ab5aee0433dcf1253bcca79c2983
Andreas Gampe [Thu, 9 Jul 2015 18:01:07 +0000 (11:01 -0700)]
ART: Fix test
Fixes a breakage from
38536287f61c9c0fc3bab8c1950cf8c74881482a. Ensure
that v4 is not undefined when an exception may be thrown (at the
new-instance).
Bug:
22331663
Bug:
22371999
(cherry picked from commit
7135ff0fdfd02796d40e7ef3c7527ff127512bd3)
Change-Id: Ice36ddda5ca92ea32fa88523dd616d4f2a61027e
Andreas Gampe [Thu, 9 Jul 2015 21:44:01 +0000 (21:44 +0000)]
Merge "ART: Improve the symbolize script" into mnc-dev
Andreas Gampe [Thu, 9 Jul 2015 21:39:56 +0000 (14:39 -0700)]
ART: Improve the symbolize script
Allow a list of files to pull. This improves turnaround time when
tracking down perf hotspots.
Bug:
21760614
Change-Id: I824e875053940d59eb00f9d796ef402632905c39
Sebastien Hertz [Tue, 24 Feb 2015 16:39:50 +0000 (17:39 +0100)]
Support compiling run-tests with jack
This CL adds support to compile run-test source files with jack. When
a test needs to rely on class files, we use jill to convert them to a
jack library.
We need to pass the full classpath to jack containing at least core
classes (like java.lang.Object). This means the Android tree must
have been compiled with jack first so we find all the necessary
classes.jack files.
Some tests still rely on dex files generated with the old toolchain.
We keep building them this way for the moment and will update them
later, when they get ready for Jack.
Also updates a few tests dealing with garbage collection to avoid a
situation where a reference can be retained by a local DEX register.
Bug:
19467889
(cherry picked from commit
19ac0276208f0afef6ba8a4ab34b74a59b8d11d7)
Change-Id: Ia5a989b83430ffe8298a869a1da970b756721bb0
Andreas Gampe [Thu, 9 Jul 2015 00:22:57 +0000 (17:22 -0700)]
ART: Allow to set and copy conflicts in the verifier
As long as conflicts are not actively being used, it is OK to set
them in a register line or copy them around.
Bug:
22331663
(cherry picked from commit
38536287f61c9c0fc3bab8c1950cf8c74881482a)
Change-Id: I61999e2d9c92f9bdedcb0a5dea54df3c5bb130ca
Andreas Gampe [Tue, 7 Jul 2015 00:20:18 +0000 (17:20 -0700)]
ART: Avoid soft- after hard-fail in verifier
Follow-up to
414000ec4d728b5c85f8c6dee4f867fecde59b01.
Bug:
21886894
Bug:
22245124
(cherry picked from commit
890da29d279c44923f9271450b8a4423b1267655)
Change-Id: I3728187bd8526cdf84f95b123e6fad5d6c5a8b3c
Andreas Gampe [Wed, 8 Jul 2015 20:12:25 +0000 (20:12 +0000)]
Merge "ART: Release inputs in Long.reverse intrinsic in x86" into mnc-dev
Andreas Gampe [Tue, 7 Jul 2015 20:25:58 +0000 (13:25 -0700)]
ART: Release inputs in Long.reverse intrinsic in x86
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
Andreas Gampe [Mon, 6 Jul 2015 21:00:39 +0000 (14:00 -0700)]
ART: Fix opsize in LoadArgDirect
If the destination register is a reference, use kReference for the
op size.
Bug:
22244733
(cherry picked from commit
185a5586c8b796e770e9b4b7ac2befa8ccdaca7e)
Change-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255
Douglas Leung [Thu, 2 Jul 2015 23:42:08 +0000 (16:42 -0700)]
Add implicit null pointer and stack overflow checks for Mips.
(cherry picked from commit
22bb5a2ebc1e2724179faf4660b2735dcb185f21)
Bug:
21555893
Change-Id: I2a995be128a5603d08753c14956dd8c8240ac63c
Nicolas Geoffray [Thu, 2 Jul 2015 14:48:27 +0000 (15:48 +0100)]
Do not create a HBoundType when the instruction is non-null.
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
Andreas Gampe [Wed, 1 Jul 2015 17:50:21 +0000 (17:50 +0000)]
Merge "ART: Symbolize all oat files in /data folder." into mnc-dev
Andreas Gampe [Wed, 1 Jul 2015 17:50:07 +0000 (17:50 +0000)]
Merge "ART: Fix data loss when symbolizing oat files." into mnc-dev
Zheng Xu [Tue, 21 Apr 2015 09:35:25 +0000 (17:35 +0800)]
ART: Symbolize all oat files in /data folder.
Now we store oat files not only in /data/dalvik-cache, but also in
other places. This patch tries to pull all oat files from device
/data folder.
Bug:
21760614
(cherry picked from commit
468bcf63207420f18c0c8a8621aa2d774393c155)
Change-Id: Icf81cf28c29da2e248e4fbd84f5920f46ddc4cd6
Zheng Xu [Fri, 19 Jun 2015 06:12:45 +0000 (14:12 +0800)]
ART: Fix data loss when symbolizing oat files.
Bug:
21760614
(cherry picked from commit
98088c424efd45ea3c172d4bc16e191f26a007cc)
Change-Id: I1b40b8ee313a4d187439d969d083d12fb3997cda
Nicolas Geoffray [Wed, 1 Jul 2015 11:36:37 +0000 (11:36 +0000)]
Merge "Do not replace a live phi with a dead phi." into mnc-dev
Nicolas Geoffray [Wed, 1 Jul 2015 08:54:33 +0000 (08:54 +0000)]
Merge "Revert "Revert "Do not update the type of something we already know.""" into mnc-dev
Andreas Gampe [Tue, 30 Jun 2015 18:23:44 +0000 (11:23 -0700)]
ART: Remove bad FindSymbol call
The removed call is superfluous under normal operation and harmful
when running a native-bridged library.
Bug:
22194296
Bug: https://code.google.com/p/android-developer-preview/issues/detail?id=2367
(cherry picked from commit
8fec90b421732b3eb278555f57aaf48fda4fa4ba)
Change-Id: I3eb8f435a6a974a3e87a370b254ba8752f2a59b3
Andreas Gampe [Tue, 30 Jun 2015 16:01:09 +0000 (16:01 +0000)]
Merge "ART: Unlink target oat file before compiling" into mnc-dev
Andreas Gampe [Sat, 27 Jun 2015 01:58:42 +0000 (18:58 -0700)]
ART: Unlink target oat file before compiling
Dex2oat must create a new file (new inode) when writing to a target
given by name, as the existing file may be in use. So unlink any
existing file first.
Bug:
22047255
Change-Id: Ief942c71564076e39c1e8340d5c4c55286f75896
Nicolas Geoffray [Mon, 29 Jun 2015 13:34:46 +0000 (14:34 +0100)]
Do not replace a live phi with a dead phi.
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
Nicolas Geoffray [Mon, 29 Jun 2015 12:43:54 +0000 (13:43 +0100)]
Revert "Revert "Do not update the type of something we already know.""
This reverts commit
63107a804ce17db9789051e1fe310d99d1dae1cb.
bug:
22116987
(cherry picked from commit
f9a199571417b5a5a62d94d05a064077e14dd2c4)
Change-Id: Ia516f2cbce6d22df37f3a0854abdd0b54d3ea72d
Mathieu Chartier [Sat, 27 Jun 2015 22:42:27 +0000 (15:42 -0700)]
ART: Fix CFI annotation for art_quick_aput_obj
Fix the CFI state after an early return.
Bug:
22014525
(cherry picked from commit
2738639bcd30b908d825725169b7497ed047debb)
Change-Id: I56b9ba8cf8c47d70a642f064e59c7e04a476dd2f
Roland Levillain [Mon, 29 Jun 2015 08:18:30 +0000 (08:18 +0000)]
Merge "MIPS: Initial version of optimizing compiler for MIPS64R6." into mnc-dev
Vladimir Marko [Sat, 27 Jun 2015 12:32:11 +0000 (13:32 +0100)]
Quick: Disable GVN, DCE and LVN for type conflicts.
(cherry picked from commit
f7e7327d7a873d21aaae01471f46a4d64d65433b)
Bug:
22136903
Change-Id: I657d4b5e623696e1264c2c6c9ad4e7fd466d759c
Andreas Gampe [Sat, 27 Jun 2015 00:33:47 +0000 (17:33 -0700)]
ART: Fix invalid access and DCHECK in verifier
If we get a throwing failure when setting types from the signature,
the work instruction index is still invalid. Do not try to copy the
line then.
As a throwing failure might happen in the above instance, but the
flow analysis expects to have a cleared failure flag before processing
each instruction, clear the flag.
Bug:
21645819
Bug:
22080519
Change-Id: I224c4dad98fa5bb50e62210f0ee30c0dd020e3a6
Mathieu Chartier [Fri, 26 Jun 2015 20:57:03 +0000 (20:57 +0000)]
Merge "Require mutator lock for DeleteLocalRef" into mnc-dev
Mathieu Chartier [Fri, 26 Jun 2015 17:47:08 +0000 (10:47 -0700)]
Require mutator lock for DeleteLocalRef
There was a race condition where suspended threads could call
DeleteLocalRef while the GC was marking their roots. This could
cause the GC to attempt to mark a null object.
(cherry picked from commit
dd06afecd67fc6a60856436ab150a4d1b9a8ad29)
Bug:
22119403
Change-Id: I962c717bb87b2acb2a4710a2d7ab16793e031401
Andreas Gampe [Tue, 23 Jun 2015 05:53:45 +0000 (22:53 -0700)]
ART: Fix streaming tracing issues
Fix a lock ordering issue in streaming-mode tracing.
Fix a moving-GC issue in streaming-mode tracing. DexCache
objects are not good keys for a map.
Expose streaming mode for testing in run-tests.
Bug:
21760614
Change-Id: Idcd0575684ee3cc0cec3f81b4fdd0d5988c11e8c
David Brazdil [Fri, 26 Jun 2015 15:58:14 +0000 (16:58 +0100)]
ART: Bail out immediately on try/catch
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
Roland Levillain [Fri, 26 Jun 2015 15:12:18 +0000 (16:12 +0100)]
MIPS: Initial version of optimizing compiler for MIPS64R6.
(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>
Andreas Gampe [Fri, 26 Jun 2015 03:16:10 +0000 (03:16 +0000)]
Merge "ART: Fix kEverything compiler filter" into mnc-dev
Andreas Gampe [Tue, 19 May 2015 06:22:54 +0000 (23:22 -0700)]
ART: Only print stripped dex2oat command line
To curb logcat noise, strip many dex2oat parameters from the
logcat printout.
Bug:
20501758
(cherry picked from commit
046c706707ea0f16c804136e237ac7cbfdc897a1)
Change-Id: Ifc367f91f593916e0773af1ca950c798f129889f
buzbee [Thu, 25 Jun 2015 22:53:45 +0000 (15:53 -0700)]
ART: Fix kEverything compiler filter
Previously the kEverything filter failed to compile class
initializers. Now it will.
Bug:
19576257
(cherry picked from commit
c83329952b4a313e747c8835a73699e2cae5a6e2)
Change-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41
Andreas Gampe [Thu, 25 Jun 2015 17:26:40 +0000 (10:26 -0700)]
ART: Reset runtime_throw_failure flag
The flag is instruction-specific. It transports the info from Fail
to the main loop. It must be cleared after each iteration.
Introduce a second flag to store whether we saw such a failure at
all.
Update test expectations.
Bug:
22080519
(cherry picked from commit
d12e782bcee03ecb6dec41aa9673ef53b638dcea)
Change-Id: I32be914819946233babaa4cb7343844d97b61ba5
Andreas Gampe [Wed, 24 Jun 2015 23:25:33 +0000 (16:25 -0700)]
ART: Set methods to preverified in verify-none
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
Richard Uhler [Thu, 25 Jun 2015 15:21:12 +0000 (15:21 +0000)]
Merge "Do not try to compile resource-only dex files." into mnc-dev
Vladimir Marko [Tue, 23 Jun 2015 16:45:21 +0000 (17:45 +0100)]
Hard-fail get-/put-object to a non-reference field.
Bug:
21886894
(cherry picked from commit
414000ec4d728b5c85f8c6dee4f867fecde59b01)
Change-Id: Iafc32f0e45d26f3aaa2d521b98353e7cede16c6f
Nicolas Geoffray [Thu, 25 Jun 2015 09:01:47 +0000 (10:01 +0100)]
Only do some checks when compiling against the core image.
This will avoid false negatives when running dex2oatd on apks.
bug:
21865473
(cherry picked from commit
335005e2b3a179f26b7a8ae64ca60a1406b669bd)
Change-Id: Iac6dbe30c9d576077a0384b88696f79937d89471
Lazar Trsic [Wed, 24 Jun 2015 14:30:21 +0000 (16:30 +0200)]
[MIPS64] JNI Compiler: Sign-extend int function arguments
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
Andreas Gampe [Thu, 25 Jun 2015 04:12:06 +0000 (04:12 +0000)]
Merge "ART: Fix arm32 instrumentation exit stub" into mnc-dev
Mathieu Chartier [Thu, 25 Jun 2015 00:04:17 +0000 (17:04 -0700)]
Fix force copy
We now correctly pass the returned pointer back onto the release functions.
Bug:
22056708
Change-Id: I1a7300d3a4522a3c81b432ec742ae1c0bd00b51e
(cherry picked from commit
b735bd9c04aa291d0a1bdc2c0a094a1a75ad0596)
Andreas Gampe [Wed, 24 Jun 2015 06:28:59 +0000 (23:28 -0700)]
ART: Fix arm32 instrumentation exit stub
Properly store, pass and restore floating point result.
Bug:
22047833
Change-Id: If5d9efbe63334c9b6353f76ce6e4fe519602482a
Mathieu Chartier [Wed, 24 Jun 2015 20:25:25 +0000 (20:25 +0000)]
Merge "Fix imt conflict trampoline for mips64" into mnc-dev
Mathieu Chartier [Wed, 24 Jun 2015 20:11:06 +0000 (13:11 -0700)]
Fix imt conflict trampoline for mips64
Changed lwu to ld
Bug:
21815962
Change-Id: I137e871d9c00f83cd5efc9d3a87fa05e84dc5d23
Christopher Ferris [Wed, 24 Jun 2015 16:37:39 +0000 (09:37 -0700)]
Increase alt signal stack to 32K on host.
On host, when there is a crash, the code tries to do an unwind
from the signal handler. Under some conditions this can require
a stack larger than 16K, so increase this value to 32K.
The symptom of this is that you get an empty backtrace running
art tests when there is a crash.
Bug:
21949571
(cherry picked from commit
e34c71ce21dbc9fac3427df887e90e1311b6fa8e)
Change-Id: Ib1105a3470064d98843bd46f32d4fadb1d20e416
Jeff Hao [Wed, 24 Jun 2015 17:05:42 +0000 (17:05 +0000)]
Merge "Adding optimizing compiler test case for String.<init>." into mnc-dev
Nicolas Geoffray [Wed, 24 Jun 2015 14:53:03 +0000 (15:53 +0100)]
Use a flag from the verifier to know if we should compile.
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
Nicolas Geoffray [Wed, 24 Jun 2015 13:57:44 +0000 (14:57 +0100)]
BCE: don't assume a bounds check always gets a HArrayLength.
Deoptimizations may change it to a HPhi.
bug:
22056703
(cherry picked from commit
8df886b9214802ad689316a1dedb00a6d102555c)
Change-Id: I8afcf88e3a12dbe4d87101e6a7cefb8b81e2bb96
Richard Uhler [Wed, 24 Jun 2015 15:44:19 +0000 (08:44 -0700)]
Do not try to compile resource-only dex files.
This changes behavior in the case where we are asked to load a dex
file that does not exist or has no classes.dex entry.
Previously we would run dex2oat, which would log an error message and
fail. Now we skip running dex2oat, we report the DexOptStatus as
kNoDexOptNeeded, and we do not try to fall back to the missing
original dex files.
Bug:
21722039
Change-Id: I90b1f4165138daac57bb9d7a354319005652c593
Nicolas Geoffray [Wed, 24 Jun 2015 13:25:09 +0000 (14:25 +0100)]
Fix codegen_test after DCE fix.
(cherry picked from commit
ea80942c39cb5e9bc3e38a388583d1646c1e2a3f)
bug:
22031382
Change-Id: If410045779adb9e7e611af22c988232b5bf9a902
Nicolas Geoffray [Wed, 24 Jun 2015 11:20:24 +0000 (12:20 +0100)]
Recompute dominator tree after DCE.
bug:
22031382
(cherry picked from commit
1f82ecc6a0c9f88d03d6d1a6d95eeb8707bd06c1)
Change-Id: I9a74edb185cb806045903dfe9695d9cc1a02e86b
Nicolas Geoffray [Wed, 24 Jun 2015 09:38:27 +0000 (10:38 +0100)]
BCE: Narrow instead of unconditionnaly overwrite the range.
bug:
21862741
(cherry picked from commit
a09ff9c11f07863ac57e6120a824f0d20dfaa284)
Change-Id: Ia8e903e09a7f9c2b8ef7cf3522f73f154534b81f
Nicolas Geoffray [Wed, 24 Jun 2015 11:41:20 +0000 (12:41 +0100)]
Fix another case of un-verified dead code.
bug:
22042796
https://code.google.com/p/android/issues/detail?id=178008
(cherry picked from commit
1efcc22cd1895c48adccbe49270d8e8583c2b12d)
Change-Id: I5c0d783e842da39cd3dcbb2f18ccf784e797a64f
Jeff Hao [Wed, 24 Jun 2015 00:34:04 +0000 (17:34 -0700)]
Adding optimizing compiler test case for String.<init>.
Bug:
21991156
Change-Id: Ibd0bd7d3b20680ac06ac08cb857595288c4e9b69
Andreas Gampe [Tue, 23 Jun 2015 23:15:18 +0000 (23:15 +0000)]
Andreas Gampe [Tue, 23 Jun 2015 21:18:17 +0000 (14:18 -0700)]
ART: Follow-up to
507cc6f83bf6379728f2dd20391f2ed5fbfe6371
Do not trigger DCHECK aborts for final and abstract classes when
they are used from other classes. Instead issue a soft error that
leads to a runtime failure.
Bug:
21873151
(cherry picked from commit
f23f33de8b3e9abd16720e0f48d43d63d41dee16)
Change-Id: Ie5251a176722811b3c74585222874313a53f7e02
Mathieu Chartier [Tue, 23 Jun 2015 22:54:48 +0000 (22:54 +0000)]
Merge "Fix field ordering for String in hprof" into mnc-dev
Mathieu Chartier [Tue, 23 Jun 2015 22:45:15 +0000 (15:45 -0700)]
Fix field ordering for String in hprof
We were inserting value field after the Object field instead of
the String fields.
Bug:
22043800
Change-Id: Ibaddbd7299562949e32eceb625feac325539e3ce
Jeff Hao [Tue, 23 Jun 2015 03:20:30 +0000 (20:20 -0700)]
Make dex file verifier check that indexes are increasing.
Note that this still allows duplicates.
Bug:
21868011
Change-Id: Ib0e91c816eccfaf3b0dac340c05ffd5dc4df17cc
Nicolas Geoffray [Mon, 22 Jun 2015 22:12:45 +0000 (23:12 +0100)]
Do not overwrite an input register in shift operations.
'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
Mathieu Chartier [Tue, 23 Jun 2015 00:14:43 +0000 (00:14 +0000)]
Merge "Fix another miranda method moving GC bug" into mnc-dev
Mathieu Chartier [Sun, 14 Jun 2015 21:14:37 +0000 (14:14 -0700)]
New experimental GC stress mode
Tries to do a GC for every unique call stack (up to 16 frames).
The goal is to catch moving GC bugs and lock violations without being
rediculously slow. Some tests fail on 64 bits, 32 bit host doesn't
work. N5 is booting.
Added runtime -Xgc options: gcstress and nogcstress.
Bug:
21664466
(cherry picked from commit
310008008c90fea246efd00cb99ee7ded97c5209)
Change-Id: Icb8e420f2048e8ee83bcca7937563166a2638f5c
Jeff Hao [Mon, 22 Jun 2015 22:26:54 +0000 (22:26 +0000)]
Merge "Change GC to allow strings to use large object space." into mnc-dev
Jeff Hao [Mon, 22 Jun 2015 22:14:49 +0000 (15:14 -0700)]
Change GC to allow strings to use large object space.
Bug:
21209641
Change-Id: Ib007a30e575e391e2b5bddb816a9d2e82502c7d5
Andreas Gampe [Mon, 22 Jun 2015 21:36:40 +0000 (21:36 +0000)]
Merge "ART: Allow checking RETURN_VOID_NO_BARRIER on unresolved classes" into mnc-dev
Jeff Hao [Mon, 22 Jun 2015 21:29:54 +0000 (14:29 -0700)]
Make large string use large object space.
Bug:
21209641
Change-Id: I731a920c02f29f0321f2077093516aaa0f8d782f
Andreas Gampe [Mon, 22 Jun 2015 18:35:46 +0000 (11:35 -0700)]
ART: Allow checking RETURN_VOID_NO_BARRIER on unresolved classes
We must check that all fields are non-final, even for unresolved
classes. Fall back to the dex file for this information.
Bug:
22005084
Bug: https://code.google.com/p/android/issues/detail?id=177694
(cherry picked from commit
68df32091cc79468c81956633e279523b48ea8bf)
Change-Id: If2126d1be5dccadbbedcdccabde7398688d6e5ca
Mathieu Chartier [Sat, 20 Jun 2015 03:24:45 +0000 (20:24 -0700)]
Fix another miranda method moving GC bug
Need to copy miranda methods over before we allocate the new vtable
or else we may have stale miranda gc roots.
Bug:
21664466
Change-Id: Ib3e415bb9e7df7abfa18c98fe01f790fa39622dc
Vladimir Marko [Mon, 22 Jun 2015 13:35:42 +0000 (14:35 +0100)]
ART: Don't do pre-linked calls to the interpreter bridge.
Bug:
21897404
(cherry picked from commit
c08ab29796eeaa3b5863fbd987cd96fe7538d40c)
Change-Id: I66531379fb4468a8ddee063e664bf6593abbe7d5
Andreas Gampe [Sat, 20 Jun 2015 05:58:47 +0000 (22:58 -0700)]
ART: Disallow classes that are abstract and final
Make the verifier fail such classes.
Bug:
21873151
(cherry picked from commit
507cc6f83bf6379728f2dd20391f2ed5fbfe6371)
Change-Id: I217f3d71f44bccdcee7ca830e092c807928bed39
Nicolas Geoffray [Mon, 22 Jun 2015 14:15:07 +0000 (14:15 +0000)]
Revert "Revert "Add support for inlining already sharpened interface calls.""
bug:
21867144
This reverts commit
ee39360775066e6b9920348c86ea98bf01d0facf.
Change-Id: I69bf85ce7c352b1a22f36f0f2a136f95b4e73bd6
Nicolas Geoffray [Mon, 22 Jun 2015 14:11:58 +0000 (15:11 +0100)]
Revert "Add support for inlining already sharpened interface calls. DO NOT MERGE ANYWHERE"
This reverts commit
c362782609ca6fbc355ccc9ea9110fe671db9671.
Reverting in order to make a commit that will merge.
bug:
21867144
Nicolas Geoffray [Mon, 22 Jun 2015 10:06:43 +0000 (11:06 +0100)]
Revert "Revert "Use IsAssignableFrom instead of IsSubclass for robustness.""
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
Nicolas Geoffray [Sat, 20 Jun 2015 21:44:47 +0000 (22:44 +0100)]
Use compiling class instead of outer class for access checks.
bug:
21869678
(cherry picked from commit
afd06414598e011693137ba044e38756609b2179)
Change-Id: I982ccdf46e3f4d0cc1901439e0bc2dcfa0fc661f
Nicolas Geoffray [Fri, 19 Jun 2015 12:32:41 +0000 (13:32 +0100)]
Use compiling class instead of referrer for access checks.
bug:
21869670
(cherry picked from commit
30451743493bc2f589e96d68ab98f557461f97f9)
Change-Id: Ia18986797d166470801e7a9a690c054d2dc57952
Nicolas Geoffray [Fri, 19 Jun 2015 15:17:05 +0000 (16:17 +0100)]
Be careful with predecessor/successor index.
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
Nicolas Geoffray [Mon, 22 Jun 2015 11:25:02 +0000 (11:25 +0000)]
Merge "Don't check the return type in the builder." into mnc-dev
Nicolas Geoffray [Thu, 18 Jun 2015 17:04:12 +0000 (18:04 +0100)]
Don't check the return type in the builder.
The verifier will not complain about dead code. For the compiler,
it is benign.
bug:
21863767
(cherry picked from commit
69505f86a1a653bf86c1f2b423b3e0605137d5d1)
Change-Id: I2bc7888b39c91862c6dade130eccdf92f19b3f6f
Nicolas Geoffray [Mon, 22 Jun 2015 11:07:17 +0000 (11:07 +0000)]
Merge "Do not expect 0 or 1 only when comparing a boolean." into mnc-dev
Nicolas Geoffray [Fri, 19 Jun 2015 10:42:07 +0000 (11:42 +0100)]
Do not expect 0 or 1 only when comparing a boolean.
bug:
21866529
(cherry picked from commit
3c4ab80c102ff1bfc0e74d4abddbf5454bf4008d)
Change-Id: Ibdc0d4a9730bfc6e7307282276f084dae5ac55c1
Nicolas Geoffray [Fri, 19 Jun 2015 09:35:42 +0000 (10:35 +0100)]
Verifier: check an aput, even if we know it will fail.
bug:
21867457
(cherry picked from commit
66389fbeb41c981648bb2e1e7e2f43089f095591)
Change-Id: Id01edeb871f6bc59518eb341e5b76f021cfdfe06
Nicolas Geoffray [Thu, 18 Jun 2015 14:46:47 +0000 (15:46 +0100)]
Run a simplification pass before code generation.
The code generators assume things that only the instruction
simplier ensures. So it has to be run last in case previous
optimiziations broke those assumptions.
bug:
21865464
(cherry picked from commit
b2bdfce7f805b00668a2521b1c939a0aafb2be49)
Change-Id: Ibf4384a911e400eb7586bbf6b4edd6351034cbd8
Nicolas Geoffray [Mon, 22 Jun 2015 09:25:56 +0000 (09:25 +0000)]
Merge "Bailout from compilation if an invoke is malformed." into mnc-dev
Nicolas Geoffray [Thu, 18 Jun 2015 10:11:27 +0000 (11:11 +0100)]
Bailout from compilation if an invoke is malformed.
Because the verifier does not check trivially dead instructions,
the compilers must prepare for bogus instructions. This change
fixes the case the arguments for an invoke do not match the
formal parameters.
bug:
21865459
(cherry picked from commit
2e33525bd4eb892246b4c244c6d4ebf6c6d07501)
Change-Id: I392f86eafefde28263fe35a31f17b398ff8dfc24
Nicolas Geoffray [Mon, 22 Jun 2015 09:16:04 +0000 (09:16 +0000)]
Merge "Fix wrong DCHECK in bounds check elimination." into mnc-dev
Nicolas Geoffray [Sat, 20 Jun 2015 22:49:01 +0000 (23:49 +0100)]
Fix wrong DCHECK in bounds check elimination.
The lower range of an array length instruction can
be changed by other instructions than HBoundsCheck,
like HNewArray.
bug:
21862741
(cherry picked from commit
8d82a0c2b2b12f259ccb357d3b1e699c68ad0400)
Change-Id: I1bb1a4f4c6673509dd3fb5184c32992bed876250
Nicolas Geoffray [Wed, 17 Jun 2015 22:09:05 +0000 (23:09 +0100)]
Fix a bug in optimizing when the null constant has been DCE.
If it has been DCE, we should create a new one, instead of
using the old one.
Also move the first DCE to a place where it could actually
be useful.
bug:
21870788
(cherry picked from commit
18e6873c469b48aaed22148451523479eece98e3)
Change-Id: I3b3ab2dafe8ce5fb60868fd1a6ef0eeefe666e0c
Nicolas Geoffray [Sun, 21 Jun 2015 17:57:02 +0000 (18:57 +0100)]
Fix String Change baseline compiler errors.
The String Change adds multiple move results if the uninitialized string
is in multiple registers. This adds StoreLocals on the same instruction,
which isn't allowed. Now, a LoadLocal is added for each extra move
needed.
bug:
21902634
(cherry picked from commit
aa919207d2fb63af11d72d3b7cdbc435769565af)
Change-Id: I057d14cdac437d06eec20caaddd430c304e58196
David Srbecky [Sat, 20 Jun 2015 04:01:22 +0000 (05:01 +0100)]
Use signed encoding when using relative CFI addresses.
This is required for gdb to work.
libunwind works with either encoding.
(cherry picked from commit
17065880693d1b15ffeb60b9955a2d092839977f)
Bug:
21924613
Change-Id: I4e4f1cf9c65d48fa885a5993eeeed0253a3f2579
Andreas Gampe [Sat, 20 Jun 2015 03:37:46 +0000 (20:37 -0700)]
ART: Check for expected args for instance methods
Don't assume that the receiver is expected. This was writing out
of bounds (or triggering a DCHECK).
Bug:
21817284
Bug:
21872240
Bug: https://code.google.com/p/android/issues/detail?id=176571
Bug: https://code.google.com/p/android/issues/detail?id=176572
(cherry picked from commit
ef0b1a1dbc99fe7c92f9598cbfc164763c1b66d7)
Change-Id: I7cad2c1dfc39feb0b1b4660deeb43afdcb844ba3
Taiju Tsuiki [Mon, 13 Apr 2015 05:21:00 +0000 (14:21 +0900)]
ART: Check var-arg count earlier in method verifier
Check the count in vararg instructions before filling the temp
array. Avoids a DCHECK.
Bug:
21869663
Bug:
20170976
(cherry picked from commit
29498a23bcfe47a7134552aacad5524ecb484a49)
Change-Id: I1ff93502ab84c5967ad54d1b50dba517da791637
Mingyao Yang [Fri, 19 Jun 2015 23:45:43 +0000 (23:45 +0000)]
Merge "ART: Fix BCE lint issue" into mnc-dev
Andreas Gampe [Thu, 11 Jun 2015 01:33:26 +0000 (18:33 -0700)]
ART: Fix BCE lint issue
Bug:
21034044
(cherry picked from commit
45d68f138a31a3ff9b45cda313f0ba27f1431f26)
Change-Id: I7f382a3124955eff5c0b96ca39ec67fb658fa3d0