OSDN Git Service

android-x86/art.git
7 years agoRevert "Revert "Avoid scratch register exhaustion during ARM64 stack slot moves.""
Roland Levillain [Wed, 4 Jan 2017 10:27:50 +0000 (10:27 +0000)]
Revert "Revert "Avoid scratch register exhaustion during ARM64 stack slot moves.""

This reverts commit 122ceb492f37e97d022cba2221a87368f1847f5f.

Test: m test-art-target on ARM64, with and without read barriers/heap poisoning.
Bug: 32545705
Change-Id: I4b447d762082eea8edfabeb070317d274e2f5bd0

7 years agoMerge "MIPS64: Drop redundant sign-extensions in integer conversions"
Treehugger Robot [Wed, 4 Jan 2017 11:47:50 +0000 (11:47 +0000)]
Merge "MIPS64: Drop redundant sign-extensions in integer conversions"

7 years agoMerge "MIPS32: Don't always do a null test in MarkGCCard"
Treehugger Robot [Wed, 4 Jan 2017 11:31:52 +0000 (11:31 +0000)]
Merge "MIPS32: Don't always do a null test in MarkGCCard"

7 years agoMerge "MIPS64: Improve integer comparison with constants"
Treehugger Robot [Wed, 4 Jan 2017 11:30:15 +0000 (11:30 +0000)]
Merge "MIPS64: Improve integer comparison with constants"

7 years agoMerge changes from topic 'VIXLUpdate'
Nicolas Geoffray [Wed, 4 Jan 2017 10:06:27 +0000 (10:06 +0000)]
Merge changes from topic 'VIXLUpdate'

* changes:
  ARM: VIXL32: Use a default code buffer capacity of 1Kb.
  ART: VIXL32: Fix assembler test after VIXL update.

7 years agoMerge "MIPS64: Implement branchless HCondition for floats"
Nicolas Geoffray [Wed, 4 Jan 2017 10:04:08 +0000 (10:04 +0000)]
Merge "MIPS64: Implement branchless HCondition for floats"

7 years agoMerge "Disable libcore test that requires IPv6"
Yi Kong [Wed, 4 Jan 2017 10:03:00 +0000 (10:03 +0000)]
Merge "Disable libcore test that requires IPv6"

7 years agoDisable libcore test that requires IPv6
Yi Kong [Wed, 4 Jan 2017 00:55:10 +0000 (00:55 +0000)]
Disable libcore test that requires IPv6

Test: N/A
Bug: 25178637
Bug: 34038136
Change-Id: I14c7451d269ee8f1163369d8c0d2209498466b66

7 years agoMerge "Clean up VerifiedMethod."
Treehugger Robot [Tue, 3 Jan 2017 22:33:12 +0000 (22:33 +0000)]
Merge "Clean up VerifiedMethod."

7 years agoClean up VerifiedMethod.
Nicolas Geoffray [Fri, 25 Nov 2016 15:46:48 +0000 (15:46 +0000)]
Clean up VerifiedMethod.

Remove unused methods, and devirt map.

Results on a large well-known app in speed compile with -j4:

Before:
 dex2oat took [...] native alloc=149MB [...] swap=208MB (218103808B)
After:
 dex2oat took [...] native alloc=84MB [...] swap=208MB (218103808B)

Bug: 34053922
Test: m clean-oat-host && m test-art-host
Change-Id: I0791c1e4ec7a98ae3c98321c582974db8e26617d

7 years agoMerge "Revert "Avoid scratch register exhaustion during ARM64 stack slot moves.""
Nicolas Geoffray [Tue, 3 Jan 2017 21:35:22 +0000 (21:35 +0000)]
Merge "Revert "Avoid scratch register exhaustion during ARM64 stack slot moves.""

7 years agoRevert "Avoid scratch register exhaustion during ARM64 stack slot moves."
Nicolas Geoffray [Tue, 3 Jan 2017 21:34:59 +0000 (21:34 +0000)]
Revert "Avoid scratch register exhaustion during ARM64 stack slot moves."

Checker test fails.
Bug: 32545705

This reverts commit 4ec76d28f0f808117272134347abf828eea80b91.

Change-Id: Ief14978596341399404c504ec4ca6b68c54fd63c

7 years agoMerge "MIPS64: Align register spills on 8-byte boundaries in slow paths"
Nicolas Geoffray [Tue, 3 Jan 2017 20:43:00 +0000 (20:43 +0000)]
Merge "MIPS64: Align register spills on 8-byte boundaries in slow paths"

7 years agoMerge "Avoid scratch register exhaustion during ARM64 stack slot moves."
Roland Levillain [Tue, 3 Jan 2017 15:45:44 +0000 (15:45 +0000)]
Merge "Avoid scratch register exhaustion during ARM64 stack slot moves."

7 years agoAvoid scratch register exhaustion during ARM64 stack slot moves.
Roland Levillain [Mon, 7 Nov 2016 18:50:32 +0000 (18:50 +0000)]
Avoid scratch register exhaustion during ARM64 stack slot moves.

On ARM64, do not limit the selection of a scratch register
used in a move between two stack slots (or between two
double stack slots) to VIXL's floating-point register pool,
as it contains only one register (D31) and can be exhausted
in some rare cases. Instead, query both the core and the FP
register pools.

Add a regression run-test (626-checker-arm64-scratch-register).

Test: m test-art-target (on ARM64)
Bug: 32545705
Change-Id: I6203a4340e3c8b4f4879c07ed1be4c433c311c0f

7 years agoMerge "MIPS64: java.lang.String.getChars"
Treehugger Robot [Tue, 3 Jan 2017 11:13:50 +0000 (11:13 +0000)]
Merge "MIPS64: java.lang.String.getChars"

7 years agoMIPS64: Implement branchless HCondition for floats
Tijana Jakovljevic [Fri, 30 Dec 2016 08:23:01 +0000 (09:23 +0100)]
MIPS64: Implement branchless HCondition for floats

Test: mma test-art-target-run-test64 in QEMU

Change-Id: I595b5b7ddf9ebb19e872ed85f2e4098a835d9214

7 years agoMIPS64: Drop redundant sign-extensions in integer conversions
Goran Jakovljevic [Wed, 28 Dec 2016 15:21:48 +0000 (16:21 +0100)]
MIPS64: Drop redundant sign-extensions in integer conversions

Test: mma test-art-target-run-test64 in QEMU

Change-Id: I1dc7923d89528964771ddca288c5016d729cfb05

7 years agoMIPS64: Improve integer comparison with constants
Goran Jakovljevic [Wed, 28 Dec 2016 13:33:21 +0000 (14:33 +0100)]
MIPS64: Improve integer comparison with constants

Test: mma test-art-target-run-test64 in QEMU

Change-Id: Ib29855a3e268e0333602f47185c520c6cfb16b59

7 years agoMIPS32: Don't always do a null test in MarkGCCard
Goran Jakovljevic [Mon, 26 Dec 2016 13:21:43 +0000 (14:21 +0100)]
MIPS32: Don't always do a null test in MarkGCCard

Test: mma test-art-target-run-test on CI20

Change-Id: I38fac492bb76b06b9cffc9be16944fb22ed2db70

7 years agoMerge "Revert "Tests on FP Math.abs()""
Treehugger Robot [Fri, 23 Dec 2016 00:44:54 +0000 (00:44 +0000)]
Merge "Revert "Tests on FP Math.abs()""

7 years agoMIPS64: Align register spills on 8-byte boundaries in slow paths
Alexey Frunze [Thu, 22 Dec 2016 21:54:23 +0000 (13:54 -0800)]
MIPS64: Align register spills on 8-byte boundaries in slow paths

64-bit loads/stores would otherwise be split into pairs of
32-bit ones.

Test: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU
Test: test-art-target-run-test-optimizing (MIPS64R6) in QEMU

Change-Id: I4846d11b52b71507dfd5ca2e27b3f2a5befcc58e

7 years agoRevert "Tests on FP Math.abs()"
Aart Bik [Thu, 22 Dec 2016 22:54:04 +0000 (22:54 +0000)]
Revert "Tests on FP Math.abs()"

This reverts commit b67877704edf8a32e71ce825d7ab4703be39f8ce.

On  art-relocate-no-patchoat (linux)
we saw

#################### info
# Tests on floating-point Math.abs.
#################### diffs
--- expected.txt 2016-12-22 21:33:16.796152568 +0000
+++ output.txt 2016-12-22 21:44:16.685738052 +0000
@@ -1 +1,3 @@
-passed
+Exception in thread "main" java.lang.Error: Expected: 0x7f800001, found: 0x7fc00001
+ at Main.expectEquals32(Main.java:140)
+ at Main.main(Main.java:85)
####################

Change-Id: If8d1bce9d4d20668661af82bbd08940787cd8252

7 years agoMerge "Tests on FP Math.abs()"
Treehugger Robot [Thu, 22 Dec 2016 21:00:40 +0000 (21:00 +0000)]
Merge "Tests on FP Math.abs()"

7 years agoARM: VIXL32: Use a default code buffer capacity of 1Kb.
Scott Wakeling [Tue, 20 Dec 2016 09:43:32 +0000 (09:43 +0000)]
ARM: VIXL32: Use a default code buffer capacity of 1Kb.

Test: mma test-art-host && mma test-art-target

Change-Id: I238c40e775338b63cbdb8868c09d0555b0c3b077

7 years agoART: VIXL32: Fix assembler test after VIXL update.
Artem Serov [Wed, 21 Dec 2016 18:42:21 +0000 (18:42 +0000)]
ART: VIXL32: Fix assembler test after VIXL update.

Veneer pool is emitted 4 bytes later, so the expected output for
the test has been adjusted.

Test: test-art-host
Test: test-art-target
Change-Id: I3d656224fd4151904b8096486adecb6ef1eafea6

7 years agoMerge "Refactored compilation on host to own method. Added dx option."
Aart Bik [Wed, 21 Dec 2016 16:59:12 +0000 (16:59 +0000)]
Merge "Refactored compilation on host to own method. Added dx option."

7 years agoMerge "Update vdex in place if input_vdex_fd == output_vdex_fd"
Nicolas Geoffray [Wed, 21 Dec 2016 14:12:41 +0000 (14:12 +0000)]
Merge "Update vdex in place if input_vdex_fd == output_vdex_fd"

7 years agoMerge "Point optimizations for vdex."
Nicolas Geoffray [Wed, 21 Dec 2016 13:30:48 +0000 (13:30 +0000)]
Merge "Point optimizations for vdex."

7 years agoMerge "Optimize OatWriter when we don't compile any method."
Nicolas Geoffray [Wed, 21 Dec 2016 12:30:10 +0000 (12:30 +0000)]
Merge "Optimize OatWriter when we don't compile any method."

7 years agoMerge "Remove soon to be obsolete call kinds for direct calls."
Nicolas Geoffray [Wed, 21 Dec 2016 12:17:42 +0000 (12:17 +0000)]
Merge "Remove soon to be obsolete call kinds for direct calls."

7 years agoPoint optimizations for vdex.
Nicolas Geoffray [Wed, 21 Dec 2016 10:29:43 +0000 (10:29 +0000)]
Point optimizations for vdex.

- Do not record assignability due to not optimized CHECKCAST.
- Do not record that j.l.Object must not be assignable to other types.
- Chase the super class boundary to avoid recording a dependency
  on a local class. This avoids doing type resolution of that class when
  verifying the VerifierDeps.

Test: test-art-host
bug: 30937355
Change-Id: Ibcee205451f23958c759ddcca7f88fe9003d37a9

7 years agoOptimize OatWriter when we don't compile any method.
Nicolas Geoffray [Tue, 20 Dec 2016 21:15:00 +0000 (21:15 +0000)]
Optimize OatWriter when we don't compile any method.

- Don't write any quickening info.
- Don't visit methods.

Saves ~20% of compilation times.

Test: test-art-host

Change-Id: Ib18fd06c0ca42308e1d81401de0ee3e6297de0ce

7 years agoUpdate vdex in place if input_vdex_fd == output_vdex_fd
Nicolas Geoffray [Tue, 20 Dec 2016 13:17:09 +0000 (13:17 +0000)]
Update vdex in place if input_vdex_fd == output_vdex_fd

Test: test-art-host
bug: 30937355
Change-Id: Ib8180d67996faec518d9092725b5de00d4dba9f6

7 years agoMerge "Disable 080-oom-fragmentation."
Nicolas Geoffray [Wed, 21 Dec 2016 10:26:25 +0000 (10:26 +0000)]
Merge "Disable 080-oom-fragmentation."

7 years agoMerge "Revert "Revert "Revert "Basic obsolete methods support""""
Nicolas Geoffray [Wed, 21 Dec 2016 09:26:36 +0000 (09:26 +0000)]
Merge "Revert "Revert "Revert "Basic obsolete methods support""""

7 years agoRevert "Revert "Revert "Basic obsolete methods support"""
Nicolas Geoffray [Wed, 21 Dec 2016 09:26:18 +0000 (09:26 +0000)]
Revert "Revert "Revert "Basic obsolete methods support"""

Fails in tracing mode

Bug: 32369913
Bug: 33630159

This reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.

Change-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69

7 years agoMerge "Revert "Create test for field access in obsolete methods.""
Nicolas Geoffray [Wed, 21 Dec 2016 09:25:42 +0000 (09:25 +0000)]
Merge "Revert "Create test for field access in obsolete methods.""

7 years agoRevert "Create test for field access in obsolete methods."
Nicolas Geoffray [Wed, 21 Dec 2016 09:25:19 +0000 (09:25 +0000)]
Revert "Create test for field access in obsolete methods."

Fails on ndebug.

This reverts commit 322214405bf43684dbbde2fce549b2dad53fb04a.

Change-Id: I6a6c6c4bfb230eef1b7c4cb35f7e8051561d9e78

7 years agoDisable 080-oom-fragmentation.
Nicolas Geoffray [Wed, 21 Dec 2016 08:58:27 +0000 (08:58 +0000)]
Disable 080-oom-fragmentation.

bug:33795328
Test: test-art-host
Change-Id: I1aa87d8564c930f5ad5f8d5c4ac75f432cb6e7e7

7 years agoMerge "Revert "Cleanup jvmti tests""
Nicolas Geoffray [Wed, 21 Dec 2016 08:56:10 +0000 (08:56 +0000)]
Merge "Revert "Cleanup jvmti tests""

7 years agoRevert "Cleanup jvmti tests"
Nicolas Geoffray [Wed, 21 Dec 2016 08:55:49 +0000 (08:55 +0000)]
Revert "Cleanup jvmti tests"

Breaks ndebug.

This reverts commit ca5b9dccced35a2dbf9626d92d3a44886aee097b.

Change-Id: I1f45fa43f554e9796f397b2f9f111689c3845692

7 years agoRefactored compilation on host to own method. Added dx option.
Aart Bik [Wed, 21 Dec 2016 03:06:37 +0000 (19:06 -0800)]
Refactored compilation on host to own method. Added dx option.

Test: jfuzzing itself
Bug: 31267855
Change-Id: I9224075ea17b57c8c36b74fa4b9e401e26d3c96e

7 years agoMerge "Temporarily disable tests 914, 915, 917, & 918 on JIT."
Alex Light [Wed, 21 Dec 2016 01:57:50 +0000 (01:57 +0000)]
Merge "Temporarily disable tests 914, 915, 917, & 918 on JIT."

7 years agoTemporarily disable tests 914, 915, 917, & 918 on JIT.
Alex Light [Wed, 21 Dec 2016 00:15:45 +0000 (16:15 -0800)]
Temporarily disable tests 914, 915, 917, & 918 on JIT.

Since these tests are very sensitive to the positioning of
runtime methods due to bugs we will temporarily disable them.

Bug: 33630159
Bug: 33616143
Test: ART_TEST_JIT=true mma -j40 test-art-host
Change-Id: I38795029eed2ea8416d24a259f3a7925d95684c6

7 years agoTests on FP Math.abs()
Aart Bik [Mon, 19 Dec 2016 21:57:31 +0000 (13:57 -0800)]
Tests on FP Math.abs()

Rationale:
As a "quality of implementation" rather than pure "spec compliance"
we require that Math.abs() clears the sign bit (but changes nothing
else) for all numbers, including NaN.

These tests ensure that remains the case.

**NOTE**
This CL depends on the pending libcore change
(https://android-review.googlesource.com/#/c/316368/).

Test: test-art-host
Bug: 30758343

Change-Id: I01044a73992b2e89d97060ed8bbb76abea0933b9

7 years agoMerge "Fix transfer over rejected induction."
Aart Bik [Tue, 20 Dec 2016 20:46:20 +0000 (20:46 +0000)]
Merge "Fix transfer over rejected induction."

7 years agoFix transfer over rejected induction.
Aart Bik [Tue, 20 Dec 2016 19:13:03 +0000 (11:13 -0800)]
Fix transfer over rejected induction.

Rationale:
With the more precise rejection of narrowing
linear induction, parent rules should be
prepared to reject failed transfers. Also
added a bit more comments to clarify rules.
With regression tests.

Bug: 33774618
Test: test-art-host
Change-Id: I4a206e51d4359ab383379914dd4697fc81903547

7 years agoMerge "Handle ART_USE_READ_BARRIER as a product variable."
Hiroshi Yamauchi [Tue, 20 Dec 2016 18:56:19 +0000 (18:56 +0000)]
Merge "Handle ART_USE_READ_BARRIER as a product variable."

7 years agoMerge "Create test for field access in obsolete methods."
Alex Light [Tue, 20 Dec 2016 18:45:54 +0000 (18:45 +0000)]
Merge "Create test for field access in obsolete methods."

7 years agoMerge changes Ie74f2dbe,I092d2e95,I5a75f5c4
Treehugger Robot [Tue, 20 Dec 2016 17:49:02 +0000 (17:49 +0000)]
Merge changes Ie74f2dbe,I092d2e95,I5a75f5c4

* changes:
  Fix 616-cha assumptions.
  Fix JIT crash due to unverified dead code
  Use interpret-only instead of verify-at-runtime when testing JIT

7 years agoCreate test for field access in obsolete methods.
Alex Light [Tue, 20 Dec 2016 16:55:35 +0000 (08:55 -0800)]
Create test for field access in obsolete methods.

Test: ./test/run-test --host 918
Change-Id: Idf27a0a713e12876e35de5c24bf5d12984881927

7 years agoMerge changes I8cc87bac,If1a92e47
Alex Light [Tue, 20 Dec 2016 16:42:09 +0000 (16:42 +0000)]
Merge changes I8cc87bac,If1a92e47

* changes:
  Cleanup jvmti tests
  Revert "Revert "Basic obsolete methods support""

7 years agoFix 616-cha assumptions.
Calin Juravle [Mon, 19 Dec 2016 15:38:07 +0000 (15:38 +0000)]
Fix 616-cha assumptions.

616-cha relies that some classes are not loaded at startup. Disable the
app image to prevent that.

Test: ART_TEST_JIT=true m test-art-host-run-test-616-cha
Change-Id: Ie74f2dbeae0f898d42051f248492126615ffdad6

7 years agoFix JIT crash due to unverified dead code
Calin Juravle [Tue, 20 Dec 2016 14:36:59 +0000 (14:36 +0000)]
Fix JIT crash due to unverified dead code

The JIT compiler assumes that it only gets completely verified code. To
work around potential unverified dead code it uses kAccDontBotherCompile
flag set during runtime verification. However, if a class is verified
during a prior dex2oat the flag is not persisted and JIT happily things
that everything is ok.

The simplest fix is to mark classes with potential unverified dex code
as verify at runtime. We only do this for apps and assume that
everything in the boot image is well formed.

Test: m test-art-host
Bug: 31000839
Change-Id: I092d2e9553cd1c577036d78e8563a7a39d6cb7b9

7 years agoUse interpret-only instead of verify-at-runtime when testing JIT
Calin Juravle [Tue, 20 Dec 2016 14:00:48 +0000 (14:00 +0000)]
Use interpret-only instead of verify-at-runtime when testing JIT

That's because we run most of our products with interpret-only and not
verify-at-runtime.

Test: ART_TEST_JIT=true m test-art-host
Change-Id: I5a75f5c47a9e811db3ee7c3475a03fb648dba80d

7 years agoMerge "ARM: VIXL32: Use 16-bit encoding for B(cond,...) where possible."
Nicolas Geoffray [Tue, 20 Dec 2016 13:52:48 +0000 (13:52 +0000)]
Merge "ARM: VIXL32: Use 16-bit encoding for B(cond,...) where possible."

7 years agoRemove soon to be obsolete call kinds for direct calls.
Nicolas Geoffray [Sun, 18 Dec 2016 15:52:36 +0000 (15:52 +0000)]
Remove soon to be obsolete call kinds for direct calls.

And remove CompilerDriver::GetCodeAndMethodForDirectCall in
preparation of removing non-PIC prebuild and non-PIC on-device
boot image compilation.

Test: test-art-host test-art-target
bug:33192586
Change-Id: Ic48e3e8b9d7605dd0e66f31d458a182198ba9578

7 years agoMerge "MIPS64: Improve string and class loads."
Treehugger Robot [Tue, 20 Dec 2016 12:00:20 +0000 (12:00 +0000)]
Merge "MIPS64: Improve string and class loads."

7 years agoMerge "Sharpen HLoadClass from inliner."
Nicolas Geoffray [Tue, 20 Dec 2016 09:06:17 +0000 (09:06 +0000)]
Merge "Sharpen HLoadClass from inliner."

7 years agoMerge "Make 141-class-unload more robust under JIT."
Nicolas Geoffray [Tue, 20 Dec 2016 09:05:29 +0000 (09:05 +0000)]
Merge "Make 141-class-unload more robust under JIT."

7 years agoCleanup jvmti tests
Alex Light [Wed, 14 Dec 2016 23:29:42 +0000 (15:29 -0800)]
Cleanup jvmti tests

Deduplicate the 'run' scripts into the test/etc/run-test-jar file.

Test: mma -j40 test-art-host
Change-Id: I8cc87bacedb393bfa11cdf2345bfd7a4341caa37

7 years agoMerge "CHA guard optimization (elimination/hoisting)."
Mingyao Yang [Tue, 20 Dec 2016 00:02:11 +0000 (00:02 +0000)]
Merge "CHA guard optimization (elimination/hoisting)."

7 years agoMIPS64: Improve string and class loads.
Alexey Frunze [Wed, 14 Dec 2016 01:43:11 +0000 (17:43 -0800)]
MIPS64: Improve string and class loads.

This adds most kinds of string/class loads.
JIT string/class loads are TBD separately.

This also fixes Mips64Assembler::LoadLabelAddress()
(adding a constant to a 64-bit address must be done
using daddiu, not addiu).

Test: test-art-host-gtest
Test: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU
Test: "make -j1 ART_TEST_DEFAULT_COMPILER=false ART_TEST_OPTIMIZING=true
       ART_TEST_INTERPRETER=false ART_TEST_JIT=false
       ART_TEST_PIC_TEST=true test-art-target-run-test64"

Change-Id: I1f94ece4cd202382c11167e1ed958e9d08d92822

7 years agoHandle ART_USE_READ_BARRIER as a product variable.
Hiroshi Yamauchi [Mon, 19 Dec 2016 21:42:47 +0000 (13:42 -0800)]
Handle ART_USE_READ_BARRIER as a product variable.

Bug: 33492005
Test: top-level angler build.
Change-Id: I4e8a0a0af07fec0a5764692d8340faf4c9bcf2b4

7 years agoCHA guard optimization (elimination/hoisting).
Mingyao Yang [Thu, 17 Nov 2016 17:04:53 +0000 (09:04 -0800)]
CHA guard optimization (elimination/hoisting).

Test: manual by checking the dump-cfg output.

Change-Id: I254e168b9a85d2d3d23e02eea7e129c1bc9ab920

7 years agoRevert "Revert "Basic obsolete methods support""
Alex Light [Thu, 15 Dec 2016 01:05:52 +0000 (01:05 +0000)]
Revert "Revert "Basic obsolete methods support""

This reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.

There were 2 issues with the original CL's test 916-obsolete-jit that
caused it to sporadically fail.

First, when checking if we had jitted the function under test in
916-obsolete-jit we failed to check to see if the function 'doCall',
which is used to work-around bugs in our deoptimization & compilation
systems, had also been jitted.

In the case where the 'sayHi' function had been jitted but the
'doCall' function had not we would (correctly) fail to redefine the
'Transform' class since we would not be able to deoptimize the 'sayHi'
function since it is under a quick_to_interpreter_bridge (runtime)
frame.

Secondly, the function Main.isInterpretedFunction was incorrect and
would always return false, regardless of the actual state of the
function. This would cause the test to fail as the
quick_to_interpreter_bridge frame prevented deoptimization of the
obsoleted function. Usually the warm-up period was enough to make sure
the methods were jitted anyway but this was not guaranteed.

Both of these problems become more likely to occur on systems with
more cpu contention such as the buildbots.

Test: stress --cpu 60 &; while ./test/run-test --host --jit 916; do ; done

Reason for revert: Fixed bug in test that was causing failures.

Original Tests:

Test: ./test/run-test --host 914
Test: ./test/run-test --host 915
Test: ./test/run-test --host 916
Test: mma -j40 test-art-host
Test: ART_TEST_JIT=true \
      ART_TEST_INTERPRETER=true mma -j40 test-art-host
Test: ./art/tools/run-jdwp-tests.sh --mode=host --variant=X64
Test: ./art/tools/run-jdwp-tests.sh --mode=host --variant=X64 --no-jit

Bug: 32369913
Bug: 33630159

Change-Id: If1a92e47b90965a7dc21c5826185debe62bd1554

7 years agoMerge "Improved induction var and range analysis around types."
Aart Bik [Mon, 19 Dec 2016 21:38:57 +0000 (21:38 +0000)]
Merge "Improved induction var and range analysis around types."

7 years agoMerge "Revert "Revert "Revert "Use interpret-only instead of verify-at-runtime when...
Nicolas Geoffray [Mon, 19 Dec 2016 21:12:49 +0000 (21:12 +0000)]
Merge "Revert "Revert "Revert "Use interpret-only instead of verify-at-runtime when testing JIT""""

7 years agoRevert "Revert "Revert "Use interpret-only instead of verify-at-runtime when testing...
Nicolas Geoffray [Mon, 19 Dec 2016 21:11:54 +0000 (21:11 +0000)]
Revert "Revert "Revert "Use interpret-only instead of verify-at-runtime when testing JIT"""

Reverting due to gtest crashes.

This reverts commit 3a3e4c10e4d08c9fa1fbeba6d74933964a3bb47f.

Change-Id: I7e1adf0d886a1cdaf3152469b3c11a33131ee498

7 years agoMerge "Revert "Fix 616-cha assumptions.""
Vladimir Marko [Mon, 19 Dec 2016 20:45:48 +0000 (20:45 +0000)]
Merge "Revert "Fix 616-cha assumptions.""

7 years agoRevert "Fix 616-cha assumptions."
Vladimir Marko [Mon, 19 Dec 2016 20:44:29 +0000 (20:44 +0000)]
Revert "Fix 616-cha assumptions."

The change that this depends on has been reverted:
    https://android-review.googlesource.com/316224

This reverts commit 5c77917ca94b33576b4a6bb850bdb578df378292.

Change-Id: I590dabcc7d12e661536b4234e45b7e763c34c35d

7 years agoMerge "Revert "Fix JIT crash due to unverified dead code""
Vladimir Marko [Mon, 19 Dec 2016 19:45:32 +0000 (19:45 +0000)]
Merge "Revert "Fix JIT crash due to unverified dead code""

7 years agoRevert "Fix JIT crash due to unverified dead code"
Vladimir Marko [Mon, 19 Dec 2016 19:31:26 +0000 (19:31 +0000)]
Revert "Fix JIT crash due to unverified dead code"

Broke method_verifier_test and image_test.

Bug: 31000839

This reverts commit 132eb43396bdb0b9bdacf069289f019d85d358fc.

Change-Id: I85923e6bdb3e76f54978658aad816d4c79fc339e

7 years agoImproved induction var and range analysis around types.
Aart Bik [Fri, 16 Dec 2016 21:57:52 +0000 (13:57 -0800)]
Improved induction var and range analysis around types.

Rationale:
Lots of code should not depend on int only. This CL generalizes
the kinds of types that can be optimized after analysis. As part
of the CL, however, a minor cleanup regarding type safety of the
stored induction var analysis results is required. This further
improved our int benchmark, and brings the long benchmark up-to-par.

Test: m test-art-host-run-test
Change-Id: I5dfb623dabf9113de90c2f6da99328dda8f8b60b

7 years agoMerge "Fix 616-cha assumptions."
Treehugger Robot [Mon, 19 Dec 2016 18:56:50 +0000 (18:56 +0000)]
Merge "Fix 616-cha assumptions."

7 years agoMerge "Temporarily disable 153-reference-stress."
Hiroshi Yamauchi [Mon, 19 Dec 2016 18:43:26 +0000 (18:43 +0000)]
Merge "Temporarily disable 153-reference-stress."

7 years agoMerge "Fix arena allocation counting."
Treehugger Robot [Mon, 19 Dec 2016 18:34:16 +0000 (18:34 +0000)]
Merge "Fix arena allocation counting."

7 years agoFix 616-cha assumptions.
Calin Juravle [Mon, 19 Dec 2016 15:38:07 +0000 (15:38 +0000)]
Fix 616-cha assumptions.

616-cha relies that some classes are not loaded at startup. Disable the
app image to prevent that.

Test: ART_TEST_JIT=true m test-art-host-run-test-616-cha

Change-Id: I432c300a3cf3de7c0f2f9ab02d7576e92edac844

7 years agoMerge "Fix JIT crash due to unverified dead code"
Calin Juravle [Mon, 19 Dec 2016 17:13:46 +0000 (17:13 +0000)]
Merge "Fix JIT crash due to unverified dead code"

7 years agoSharpen HLoadClass from inliner.
Nicolas Geoffray [Fri, 16 Dec 2016 16:09:08 +0000 (16:09 +0000)]
Sharpen HLoadClass from inliner.

Also cleanup HLoadClass constructor.

Test: ART_TEST_JIT=true m test-art-host-run-test

Change-Id: I8f803b05fb8a7267d1421ca9c032e624f27efed3

7 years agoFix arena allocation counting.
Vladimir Marko [Mon, 19 Dec 2016 16:04:33 +0000 (16:04 +0000)]
Fix arena allocation counting.

Add the "CHA" allocation kind description. Move the
statistics to the heap to avoid excessively large frames
triggering errors with -Werror, -Wframe-larger-than=.

Test: m test-art-host
Test: m test-art-host with arena allocation counting.
Change-Id: I7947a3a17b4c1ed773742516b1f7ab9a58c92150

7 years agoFix JIT crash due to unverified dead code
Calin Juravle [Fri, 28 Oct 2016 19:09:56 +0000 (20:09 +0100)]
Fix JIT crash due to unverified dead code

The JIT compiler assumes that it only gets completely verified code. To
work around potential unverified dead code it uses kAccDontBotherCompile
flag set during runtime verification. However, if a class is verified
during a prior dex2oat the flag is not persisted and JIT happily things
that everything is ok.

The simplest fix is to mark classes with potential unverified dex code
as verify at runtime. We only do this for apps and assume that
everything in the boot image is well formed.

Test: m test-art-host-706-jit-skip-compilation
Bug: 31000839

Change-Id: Ib73de1888581bb7202474cfd7aca70af4cc2cc00

7 years agoMerge "Revert "Revert "Use interpret-only instead of verify-at-runtime when testing...
Treehugger Robot [Mon, 19 Dec 2016 13:45:14 +0000 (13:45 +0000)]
Merge "Revert "Revert "Use interpret-only instead of verify-at-runtime when testing JIT"""

7 years agoMerge "Don't unquicken RETURN_VOID_NO_BARRIER with vdex."
Nicolas Geoffray [Mon, 19 Dec 2016 12:58:45 +0000 (12:58 +0000)]
Merge "Don't unquicken RETURN_VOID_NO_BARRIER with vdex."

7 years agoMake 141-class-unload more robust under JIT.
Nicolas Geoffray [Fri, 16 Dec 2016 11:22:05 +0000 (11:22 +0000)]
Make 141-class-unload more robust under JIT.

Make sure jit is stopped before counting maps.

bug: 29712509
test: 141-class-unload
Change-Id: I52c0fed74556fa228cd73c9c0bc6a1d019df0a1c

7 years agoMerge "Add Thread entry to signal if the thread can call into java"
Calin Juravle [Mon, 19 Dec 2016 11:22:55 +0000 (11:22 +0000)]
Merge "Add Thread entry to signal if the thread can call into java"

7 years agoMerge "ARM: Fix vixl related branch issue in JNI."
Nicolas Geoffray [Mon, 19 Dec 2016 09:31:18 +0000 (09:31 +0000)]
Merge "ARM: Fix vixl related branch issue in JNI."

7 years agoARM: Fix vixl related branch issue in JNI.
Artem Serov [Thu, 15 Dec 2016 17:56:27 +0000 (17:56 +0000)]
ARM: Fix vixl related branch issue in JNI.

Fix VIXL asserts in EncodeLabelFor in JNI macro assembler when
label is out of range of 16-bit branch (now a veneer is correctly
used).

bug:32545704

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target
Change-Id: Ie6401394cf364daeaaf107b42275997d2edf5b6d

7 years agoMerge "ARM: VIXL32: Implement some dispatch optimizations."
Nicolas Geoffray [Mon, 19 Dec 2016 09:29:54 +0000 (09:29 +0000)]
Merge "ARM: VIXL32: Implement some dispatch optimizations."

7 years agoDon't unquicken RETURN_VOID_NO_BARRIER with vdex.
Nicolas Geoffray [Fri, 16 Dec 2016 16:23:16 +0000 (16:23 +0000)]
Don't unquicken RETURN_VOID_NO_BARRIER with vdex.

The quickening of the RETURN_VOID instruction is based on
local information (no final fields) that doesn't get affected
by a boot image update.

Test: test-art-host, verifier_deps_test
bug:30937355

Change-Id: I12b22d7fcda6dc681a32ff752c3871f6e84f19a1

7 years agoTemporarily disable 153-reference-stress.
Hiroshi Yamauchi [Fri, 16 Dec 2016 21:09:19 +0000 (13:09 -0800)]
Temporarily disable 153-reference-stress.

This is intermittently failing. See 33389022 #13.

Note this could fail either in CMS or CC, gcstress or not.

Bug: 33389022
Test: test-art-host.
Change-Id: I257c2c771fcab9405c1a15fa6e93364908fd1294

7 years agoAdd Thread entry to signal if the thread can call into java
Calin Juravle [Thu, 15 Dec 2016 17:57:38 +0000 (17:57 +0000)]
Add Thread entry to signal if the thread can call into java

Compiler threads (AOT or JIT) should not call into Java as they have no
peers (which may lead to crashes, e.g. b/33067273)

Bug: 32602185
Bug: 33067273

Test: m test-art-host-run-test; m test-art-host-gtest
Change-Id: I97dda7a5444643db3c5d5318339a65a602f709e8

7 years agoMerge "Allow redefined methods/classes to access fields"
Treehugger Robot [Fri, 16 Dec 2016 18:51:17 +0000 (18:51 +0000)]
Merge "Allow redefined methods/classes to access fields"

7 years agoMerge "Add HVariableInputSizeInstruction."
Mingyao Yang [Fri, 16 Dec 2016 18:14:49 +0000 (18:14 +0000)]
Merge "Add HVariableInputSizeInstruction."

7 years agoAllow redefined methods/classes to access fields
Alex Light [Thu, 15 Dec 2016 19:34:13 +0000 (11:34 -0800)]
Allow redefined methods/classes to access fields

Previously we were not updating the ArtFields of redefined classes.
This meant that the fields of redefined classes could not be accessed.

Bug: 32369913

Test: ./test/run-test --host 917
Test: mma -j40 test-art-host

Change-Id: If039e883e9a57970a0cffbc7dcbbaaf2d44490aa

7 years agoMerge "Clear exception if FindClass fails."
Nicolas Geoffray [Fri, 16 Dec 2016 16:20:15 +0000 (16:20 +0000)]
Merge "Clear exception if FindClass fails."

7 years agoClear exception if FindClass fails.
Nicolas Geoffray [Fri, 16 Dec 2016 16:14:39 +0000 (16:14 +0000)]
Clear exception if FindClass fails.

Test: verifier_deps_test.
bug: 30937355
Change-Id: I9916ec00010de012939462d4f30147e8b64fe279

7 years agoMerge "Do not resolve types with vdex."
Nicolas Geoffray [Fri, 16 Dec 2016 15:11:15 +0000 (15:11 +0000)]
Merge "Do not resolve types with vdex."

7 years agoARM: VIXL32: Use 16-bit encoding for B(cond,...) where possible.
Artem Serov [Mon, 12 Dec 2016 15:51:15 +0000 (15:51 +0000)]
ARM: VIXL32: Use 16-bit encoding for B(cond,...) where possible.

If conditional branch's target is known to be not far from branch
(within the range of 254 bytes), 16-bit encoding can be used.
However, we can't assume this by default for branches to a basic
block or a slow path; if we do and fail the range requirement,
veneer pool will be emitted.

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target
Change-Id: I2fbe6d1a43bc2d1b54472c2c3fe05a575e5634f2