OSDN Git Service

android-x86/art.git
8 years agoMerge "Optimizing: Clean up after const-string sharpening."
Vladimir Marko [Wed, 30 Mar 2016 17:29:44 +0000 (17:29 +0000)]
Merge "Optimizing: Clean up after const-string sharpening."

8 years agoOptimizing: Clean up after const-string sharpening.
Vladimir Marko [Wed, 30 Mar 2016 15:30:21 +0000 (16:30 +0100)]
Optimizing: Clean up after const-string sharpening.

Do not look up the String for JIT, just check if it's in the
dex cache. Strings on hot paths should already be resolved
and we don't want to unnecessarily increase JIT compile time
to have a chance of improving a cold path.

Also, change the enum LinkerPatchType to be an inner enum
class of LinkerPatch and clean up casts between pointers and
uint64_t.

Change-Id: Ia6e0513af1a84ce94a3b30edac0c592157d374ec

8 years agoMerge "Don't return kPatchOatNeeded if there is no patch info."
Richard Uhler [Wed, 30 Mar 2016 15:19:11 +0000 (15:19 +0000)]
Merge "Don't return kPatchOatNeeded if there is no patch info."

8 years agoMerge "Optimizing: Improve const-string code generation."
Vladimir Marko [Wed, 30 Mar 2016 13:47:59 +0000 (13:47 +0000)]
Merge "Optimizing: Improve const-string code generation."

8 years agoMerge "X86_64: Replace x86_64 xchg instruction use"
Vladimir Marko [Wed, 30 Mar 2016 09:58:54 +0000 (09:58 +0000)]
Merge "X86_64: Replace x86_64 xchg instruction use"

8 years agoMerge "ART: Flush ostream less frequently in GraphVisualizer"
David Brazdil [Wed, 30 Mar 2016 09:46:14 +0000 (09:46 +0000)]
Merge "ART: Flush ostream less frequently in GraphVisualizer"

8 years agoART: Flush ostream less frequently in GraphVisualizer
David Brazdil [Wed, 30 Mar 2016 08:41:02 +0000 (09:41 +0100)]
ART: Flush ostream less frequently in GraphVisualizer

We have seen Checker tests timing out on debug-GC configurations after
having switched to Optimizing because its GraphVisualizer makes too
many syscalls which the configuration keeps track of.

This patch replaces std::endl with "\n" across GraphVisualizer so as
to not flush the stream after every line of output.

Bug: 27826765
Change-Id: I5e3f1e92f8a84f36d324d56945e2d420b2d36a5d

8 years agoMerge "ART: Postpone interface-related dex failure to version 37"
Andreas Gampe [Wed, 30 Mar 2016 00:47:15 +0000 (00:47 +0000)]
Merge "ART: Postpone interface-related dex failure to version 37"

8 years agoART: Postpone interface-related dex failure to version 37
Andreas Gampe [Tue, 29 Mar 2016 01:31:29 +0000 (18:31 -0700)]
ART: Postpone interface-related dex failure to version 37

For app compat, at least for now make the check for public-final-static
of interface members not fail on dex file versions less than 37. This
may be changed in future releases.

Bug: 27831184
Change-Id: If8ee50321298b951d4a78062c8eb583fec27394f

8 years agoDon't return kPatchOatNeeded if there is no patch info.
Richard Uhler [Tue, 29 Mar 2016 20:27:41 +0000 (13:27 -0700)]
Don't return kPatchOatNeeded if there is no patch info.

Bug: 27693977
Change-Id: Ie1f27cc45f3cb434108a375136480cb92fd95e26

8 years agoMerge "ART: Update DexFile for compiler-filter pass-down"
Andreas Gampe [Tue, 29 Mar 2016 21:24:18 +0000 (21:24 +0000)]
Merge "ART: Update DexFile for compiler-filter pass-down"

8 years agoMerge "Disable oatdump_test on mips due to timeouts."
Vladimir Marko [Tue, 29 Mar 2016 18:58:43 +0000 (18:58 +0000)]
Merge "Disable oatdump_test on mips due to timeouts."

8 years agoOptimizing: Improve const-string code generation.
Vladimir Marko [Mon, 22 Feb 2016 10:39:50 +0000 (10:39 +0000)]
Optimizing: Improve const-string code generation.

For strings in the boot image, use either direct pointers
or pc-relative addresses. For other strings, use PC-relative
access to the dex cache arrays for AOT and direct address of
the string's dex cache slot for JIT.

For aosp_flounder-userdebug:
  - 32-bit boot.oat: -692KiB (-0.9%)
  - 64-bit boot.oat: -948KiB (-1.1%)
  - 32-bit dalvik cache total: -900KiB (-0.9%)
  - 64-bit dalvik cache total: -3672KiB (-1.5%)
    (contains more files than the 32-bit dalvik cache)
For aosp_flounder-userdebug forced to compile PIC:
  - 32-bit boot.oat: -380KiB (-0.5%)
  - 64-bit boot.oat: -928KiB (-1.0%)
  - 32-bit dalvik cache total: -468KiB (-0.4%)
  - 64-bit dalvik cache total: -1928KiB (-0.8%)
    (contains more files than the 32-bit dalvik cache)

Bug: 26884697
Change-Id: Iec7266ce67e6fedc107be78fab2e742a8dab2696

8 years agoART: Update DexFile for compiler-filter pass-down
Andreas Gampe [Wed, 23 Mar 2016 22:03:46 +0000 (15:03 -0700)]
ART: Update DexFile for compiler-filter pass-down

Update getDexOptNeeded. Add implementations for isValidCompilerFilter
and isProfileGuidedCompilerFilter.

Bug: 27689078

(cherry picked from commit 1d23d43e29e41adb3d504332c8833acaacb49e50)

Change-Id: I06b9d75f58c59cb07ef5170f784ea6745168efaa

8 years agoDisable oatdump_test on mips due to timeouts.
Vladimir Marko [Tue, 29 Mar 2016 17:42:21 +0000 (18:42 +0100)]
Disable oatdump_test on mips due to timeouts.

Bug: 27824283
Change-Id: I8014471385fdfe0e98760af04507cd81338f9952

8 years agoMerge "Optimizing: Reduce arena memory used by GraphChecker."
Vladimir Marko [Tue, 29 Mar 2016 08:56:19 +0000 (08:56 +0000)]
Merge "Optimizing: Reduce arena memory used by GraphChecker."

8 years agoMerge "ART: Make verifier fail log level adjustable"
Andreas Gampe [Tue, 29 Mar 2016 02:31:16 +0000 (02:31 +0000)]
Merge "ART: Make verifier fail log level adjustable"

8 years agoMerge "ART: Clean up verifier"
Andreas Gampe [Tue, 29 Mar 2016 01:38:19 +0000 (01:38 +0000)]
Merge "ART: Clean up verifier"

8 years agoART: Make verifier fail log level adjustable
Andreas Gampe [Fri, 25 Mar 2016 23:58:00 +0000 (16:58 -0700)]
ART: Make verifier fail log level adjustable

To help for build failures.

Change-Id: I6c94dfb50177daa7d89902d78715ccec31bf0e45

8 years agoART: Clean up verifier
Andreas Gampe [Fri, 25 Mar 2016 23:58:00 +0000 (16:58 -0700)]
ART: Clean up verifier

Clean up verifier post-Quick.

Change-Id: I0b05e10dd06edd228fe2068c8afffc4b7d7fdffa

8 years agoMerge "Add support for Dex version 37 in Runtime."
Alex Light [Mon, 28 Mar 2016 21:26:05 +0000 (21:26 +0000)]
Merge "Add support for Dex version 37 in Runtime."

8 years agoMerge "Fix bug not accounting for type in induction comparison. Extended unit tests."
Aart Bik [Sat, 26 Mar 2016 00:44:53 +0000 (00:44 +0000)]
Merge "Fix bug not accounting for type in induction comparison. Extended unit tests."

8 years agoMerge "ART: Relax verifier checks"
Andreas Gampe [Fri, 25 Mar 2016 23:53:20 +0000 (23:53 +0000)]
Merge "ART: Relax verifier checks"

8 years agoART: Relax verifier checks
Andreas Gampe [Fri, 25 Mar 2016 23:24:20 +0000 (16:24 -0700)]
ART: Relax verifier checks

Only bail for unresolved merge types in a couple of cases. Follow-up
to bb18a03c44d99b3cae232d445d56e80d8388cca9.

Bug: 27799205
Change-Id: If448e14036bc5e245677e0cd8cdddee02b320525

8 years agoFix bug not accounting for type in induction comparison.
Aart Bik [Fri, 25 Mar 2016 20:14:53 +0000 (13:14 -0700)]
Fix bug not accounting for type in induction comparison.
Extended unit tests.

Rationale:
Now that inductions are typed, comparisons should take
the type into account as well.

Change-Id: Ie533bb728d2006390646657573fa743e6fc37ff2

8 years agoMerge "Allow x86+arm multilib build."
Ying Wang [Fri, 25 Mar 2016 21:41:41 +0000 (21:41 +0000)]
Merge "Allow x86+arm multilib build."

8 years agoAllow x86+arm multilib build.
Ying Wang [Thu, 17 Mar 2016 02:40:00 +0000 (19:40 -0700)]
Allow x86+arm multilib build.

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)

8 years agoMerge "Avoid removing new-instance instruction twice. Includes a fail-before/pass...
Aart Bik [Fri, 25 Mar 2016 18:04:18 +0000 (18:04 +0000)]
Merge "Avoid removing new-instance instruction twice. Includes a fail-before/pass-after regression test."

8 years agoMerge "ART: Allow array-ness for unresolved merge types"
Andreas Gampe [Fri, 25 Mar 2016 17:45:31 +0000 (17:45 +0000)]
Merge "ART: Allow array-ness for unresolved merge types"

8 years agoART: Allow array-ness for unresolved merge types
Andreas Gampe [Wed, 23 Mar 2016 03:34:25 +0000 (20:34 -0700)]
ART: Allow array-ness for unresolved merge types

In case component types aren't resolvable, array types won't be
either. They then may be merged. The merge is still potentially
an array type.

Ensure that merging an unresolved array type with a primitive
array type or a non-array type will be resolved to java.lang.Object.

Added tests.

Bug: 27799205
Change-Id: I9beff75318814dddd842abd64ef9a5d2644d801e

8 years agoAvoid removing new-instance instruction twice.
Aart Bik [Thu, 24 Mar 2016 22:38:56 +0000 (15:38 -0700)]
Avoid removing new-instance instruction twice.
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

8 years agoOptimizing: Reduce arena memory used by GraphChecker.
Vladimir Marko [Fri, 25 Mar 2016 15:31:35 +0000 (15:31 +0000)]
Optimizing: Reduce arena memory used by GraphChecker.

Use member variables to reuse the storage instead of
repeatedly allocating new storage for local variables.

Bug: 27690481
Change-Id: I614db9b8614d585653cfbff62e9cf7d7f0c58810

8 years agoMerge "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""
Calin Juravle [Fri, 25 Mar 2016 11:30:27 +0000 (11:30 +0000)]
Merge "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""

8 years agoMerge "Revert "ART: Ignore hotness updates if jit inactive""
Calin Juravle [Fri, 25 Mar 2016 11:29:55 +0000 (11:29 +0000)]
Merge "Revert "ART: Ignore hotness updates if jit inactive""

8 years agoRevert "ART: Improve JitProfile perf in arm/arm64 mterp"
Calin Juravle [Fri, 25 Mar 2016 11:27:48 +0000 (11:27 +0000)]
Revert "ART: Improve JitProfile perf in arm/arm64 mterp"

This reverts commit c1d6b341eed646e5adafc6c4fd4e3748f0292368.

8 years agoRevert "ART: Ignore hotness updates if jit inactive"
Calin Juravle [Fri, 25 Mar 2016 11:27:40 +0000 (11:27 +0000)]
Revert "ART: Ignore hotness updates if jit inactive"

This reverts commit 17bda200dc7e36ba4178501274f10df4c82bea11.

8 years agoMerge "Only call jit_load after the zygote fork"
Mathieu Chartier [Fri, 25 Mar 2016 01:48:22 +0000 (01:48 +0000)]
Merge "Only call jit_load after the zygote fork"

8 years agoOnly call jit_load after the zygote fork
Mathieu Chartier [Fri, 25 Mar 2016 00:22:52 +0000 (17:22 -0700)]
Only call jit_load after the zygote fork

Otherwise we always get that enable_debug_features is false since
that flag passed as a compiler option post zygote fork.

No significant change to libart-compiler PSS on calculator.

Bug: 27810774

(cherry picked from commit b10cef442594dd0d6c5f1a5784643931a25cc431)

Change-Id: Ie50668ba05ad07a5cf046497959f6d27e09f8fe2

8 years agoAdd support for Dex version 37 in Runtime.
Alex Light [Wed, 23 Mar 2016 17:20:41 +0000 (10:20 -0700)]
Add support for Dex version 37 in Runtime.

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

8 years agoMerge "ART: Ignore hotness updates if jit inactive"
Bill Buzbee [Thu, 24 Mar 2016 21:51:05 +0000 (21:51 +0000)]
Merge "ART: Ignore hotness updates if jit inactive"

8 years agoART: Ignore hotness updates if jit inactive
buzbee [Thu, 24 Mar 2016 20:41:14 +0000 (13:41 -0700)]
ART: Ignore hotness updates if jit inactive

The interpreters are hard-wired to collect hotness data for the
jit.  If the jit is in the process of shutting down, discard the
updates.

Change-Id: I0baf73bb2c591e9571964435f6cc45c062b85911

8 years agoMerge "Load jit compiler pre zygote fork"
Mathieu Chartier [Thu, 24 Mar 2016 20:48:17 +0000 (20:48 +0000)]
Merge "Load jit compiler pre zygote fork"

8 years agoLoad jit compiler pre zygote fork
Mathieu Chartier [Thu, 24 Mar 2016 18:07:06 +0000 (11:07 -0700)]
Load jit compiler pre zygote fork

Reduces PSS for libart-compiler.so from 115KB to 2KB per app.

Also some clean-up.

Bug: 27810774

(cherry picked from commit ff2376770c1c6d301778c41e5c27c808a38e6968)

Change-Id: Ic0077a07c21ed9f1952a6c29863a5c0e5bacc01a

8 years agoMerge "ART: Improve JitProfile perf in arm/arm64 mterp"
Bill Buzbee [Thu, 24 Mar 2016 16:16:59 +0000 (16:16 +0000)]
Merge "ART: Improve JitProfile perf in arm/arm64 mterp"

8 years agoMerge "ART: Fix order of operations in HBasicBlock::DisconnectAndDelete"
David Brazdil [Thu, 24 Mar 2016 15:35:10 +0000 (15:35 +0000)]
Merge "ART: Fix order of operations in HBasicBlock::DisconnectAndDelete"

8 years agoART: Fix order of operations in HBasicBlock::DisconnectAndDelete
David Brazdil [Thu, 24 Mar 2016 11:18:15 +0000 (11:18 +0000)]
ART: Fix order of operations in HBasicBlock::DisconnectAndDelete

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

8 years agoMerge "ART: Fix run-test"
David Brazdil [Thu, 24 Mar 2016 15:03:50 +0000 (15:03 +0000)]
Merge "ART: Fix run-test"

8 years agoART: Fix run-test
David Brazdil [Thu, 24 Mar 2016 15:01:33 +0000 (15:01 +0000)]
ART: Fix run-test

Follow-up to Ic61ea2193765b4578550538e965ca4f80fa4b287

Bug: 27625564
Change-Id: Ia8b128a05b473896ba9a55df0d2aaf34ae6d06f3

8 years agoMerge "Fix stub_test after semantic conflicting merge."
Nicolas Geoffray [Thu, 24 Mar 2016 14:33:39 +0000 (14:33 +0000)]
Merge "Fix stub_test after semantic conflicting merge."

8 years agoFix stub_test after semantic conflicting merge.
Nicolas Geoffray [Thu, 24 Mar 2016 14:31:30 +0000 (14:31 +0000)]
Fix stub_test after semantic conflicting merge.

https://android-review.googlesource.com/#/c/209881/ does
not set the ImtConflictTable when we're a AOT runtime, which the
stub test pretends to be.

Change-Id: I70e00b265e982b46b577ff19ac9272cfee45940d

8 years agoMerge "ART: Loosen a GraphChecker rule on Boolean inputs"
David Brazdil [Thu, 24 Mar 2016 14:22:27 +0000 (14:22 +0000)]
Merge "ART: Loosen a GraphChecker rule on Boolean inputs"

8 years agoART: Loosen a GraphChecker rule on Boolean inputs
David Brazdil [Thu, 24 Mar 2016 12:40:52 +0000 (12:40 +0000)]
ART: Loosen a GraphChecker rule on Boolean inputs

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

8 years agoMerge "Post-Quick cleanup: Remove CompilationUnit."
Vladimir Marko [Thu, 24 Mar 2016 13:35:08 +0000 (13:35 +0000)]
Merge "Post-Quick cleanup: Remove CompilationUnit."

8 years agoMerge "Re-enable IMT stub test."
Nicolas Geoffray [Thu, 24 Mar 2016 13:34:16 +0000 (13:34 +0000)]
Merge "Re-enable IMT stub test."

8 years agoMerge "Clean up art::HConstant predicates."
Roland Levillain [Thu, 24 Mar 2016 10:25:51 +0000 (10:25 +0000)]
Merge "Clean up art::HConstant predicates."

8 years agoMerge "Do a null check on the sibling in the register allocator."
Nicolas Geoffray [Thu, 24 Mar 2016 09:56:00 +0000 (09:56 +0000)]
Merge "Do a null check on the sibling in the register allocator."

8 years agoDo a null check on the sibling in the register allocator.
Nicolas Geoffray [Wed, 23 Mar 2016 11:32:27 +0000 (11:32 +0000)]
Do a null check on the sibling in the register allocator.

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

8 years agoMerge "Disable test on arm due to timeouts."
Nicolas Geoffray [Thu, 24 Mar 2016 09:43:24 +0000 (09:43 +0000)]
Merge "Disable test on arm due to timeouts."

8 years agoMerge "Optimizing: Do not insert suspend checks on back-edges."
Vladimir Marko [Thu, 24 Mar 2016 09:38:51 +0000 (09:38 +0000)]
Merge "Optimizing: Do not insert suspend checks on back-edges."

8 years agoPost-Quick cleanup: Remove CompilationUnit.
Vladimir Marko [Wed, 23 Mar 2016 16:59:07 +0000 (16:59 +0000)]
Post-Quick cleanup: Remove CompilationUnit.

Change-Id: I309411b0fffaaed1e218e2c34394bdf6e2f75b48

8 years agoDisable test on arm due to timeouts.
Nicolas Geoffray [Thu, 24 Mar 2016 09:23:04 +0000 (09:23 +0000)]
Disable test on arm due to timeouts.

bug:27824283
Change-Id: I0e4d9b37dd3ac2d2390456a791ff28d9ea0b3510

8 years agoMerge "Fix potential race condition with threads array."
Aart Bik [Thu, 24 Mar 2016 03:35:07 +0000 (03:35 +0000)]
Merge "Fix potential race condition with threads array."

8 years agoMerge "Add RosAlloc stats dump."
Hiroshi Yamauchi [Thu, 24 Mar 2016 00:26:57 +0000 (00:26 +0000)]
Merge "Add RosAlloc stats dump."

8 years agoAdd RosAlloc stats dump.
Hiroshi Yamauchi [Wed, 23 Mar 2016 22:51:24 +0000 (15:51 -0700)]
Add RosAlloc stats dump.

For better understanding of the RosAlloc space.

(cherrypick commit 565c2d9bce43c430d4267c82f5702160d971e712)

Bug: 27744947
Bug: 9986565

Change-Id: I8309761a68fbc143bbcd8458a9194085aace7c3e

8 years agoMerge "Use smaller rosalloc run sizes."
Hiroshi Yamauchi [Wed, 23 Mar 2016 22:45:01 +0000 (22:45 +0000)]
Merge "Use smaller rosalloc run sizes."

8 years agoUse smaller rosalloc run sizes.
Hiroshi Yamauchi [Wed, 23 Mar 2016 21:22:34 +0000 (14:22 -0700)]
Use smaller rosalloc run sizes.

Use 1/1/1/2/4 instead of 1/4/8/16/32 to save memory footprint.

No regressions in BinaryTrees, Ritz MemAlocTest, Ritz EAAC.

(cherrypick commit c867a275aa7a132ec1fd4f3b8c27812bda61ea73)

Bug: 27744947
Bug: 9986565
Change-Id: I8ac3fd23719e5cfcce7e5715a03f40701f3ff339

8 years agoFix potential race condition with threads array.
Aart Bik [Wed, 23 Mar 2016 18:31:28 +0000 (11:31 -0700)]
Fix potential race condition with threads array.

Rationale:
Array should be filled with threads prior to first fork,
since only in that case does Java memory model ensure
all threads have consistent view of array, which itself is
subject to one test.

BUG=27805463

Change-Id: I28f1eb8461842217ced2255062d2135ef880e7d5

8 years agoMerge "Revert "Revert "Use compiler filter to determine oat file status."""
Richard Uhler [Wed, 23 Mar 2016 20:05:26 +0000 (20:05 +0000)]
Merge "Revert "Revert "Use compiler filter to determine oat file status."""

8 years agoOptimizing: Do not insert suspend checks on back-edges.
Vladimir Marko [Wed, 23 Mar 2016 16:01:47 +0000 (16:01 +0000)]
Optimizing: Do not insert suspend checks on back-edges.

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

8 years agoRevert "Revert "Use compiler filter to determine oat file status.""
Andreas Gampe [Wed, 23 Mar 2016 15:31:51 +0000 (15:31 +0000)]
Revert "Revert "Use compiler filter to determine oat file status.""

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

8 years agoART: Improve JitProfile perf in arm/arm64 mterp
buzbee [Tue, 1 Mar 2016 23:03:16 +0000 (15:03 -0800)]
ART: Improve JitProfile perf in arm/arm64 mterp

ART currently requires two profiling-related things from the
interpreters: hotness updates and OSR switch checks.  The hotness
updates previously used the existing instrumentation framework - which
is flexible, but quite heavyweight.  For most things, the
instrumentation framework overhead is acceptable, but because we do a
hotness update on every backwards branch the overhead is unacceptable.
Prior to this CL, branch profiling dominates interpreter cost.

Here, we bypass the instrumentation framework for hotness updates
and deliver a significant performance improvement.  Running
interpreter-only (dalvikvm -Xint) on a Nexus 6, we see the logic
subtest of Caffeinemark improving from 2600 to 9200, and the
overall score going from 1979 to over 3000.  Compared to the
C++ switch interpreter, we see a 6x improvement on the branchy logic
subtest and a 2.6x improvement overall.

Compared with the previous mterp which did not have support for
jit profiling, we see a few (1% to 5%) performance loss on the
standard command-line benchmarks.  I consider this acceptable
(we could create an alternate non-profiling mterp which would
have no penalty, but I don't consider this overhead big enough to
justify that).

Change-Id: I50b5b8c5ed8ebda3c8b4e65d27ba7393c3feae04

8 years agoMerge "Fix dex2oat/oatdump cross-compilation."
Calin Juravle [Wed, 23 Mar 2016 17:58:42 +0000 (17:58 +0000)]
Merge "Fix dex2oat/oatdump cross-compilation."

8 years agoMerge "Fix and improve shift and rotate operations."
Roland Levillain [Wed, 23 Mar 2016 17:10:31 +0000 (17:10 +0000)]
Merge "Fix and improve shift and rotate operations."

8 years agoMerge "Fix some typos in art/compiler/optimizing/nodes.cc."
Roland Levillain [Wed, 23 Mar 2016 16:44:08 +0000 (16:44 +0000)]
Merge "Fix some typos in art/compiler/optimizing/nodes.cc."

8 years agoFix some typos in art/compiler/optimizing/nodes.cc.
Roland Levillain [Wed, 23 Mar 2016 16:36:59 +0000 (16:36 +0000)]
Fix some typos in art/compiler/optimizing/nodes.cc.

Change-Id: I11be5a9b73da207c9eb497bcaffc49d614c1ca89

8 years agoFix dex2oat/oatdump cross-compilation.
Nicolas Geoffray [Wed, 23 Mar 2016 16:35:51 +0000 (16:35 +0000)]
Fix dex2oat/oatdump cross-compilation.

Only set the ImtConflictTable when not in AOT, to not mess up
with the image.

Change-Id: I8f2926ad30dc913d61b0c8957affc25fc8056ada

8 years agoMerge "Ensure object ArraySet with null value does not need a type check."
Roland Levillain [Wed, 23 Mar 2016 16:01:27 +0000 (16:01 +0000)]
Merge "Ensure object ArraySet with null value does not need a type check."

8 years agoMerge "Relax too strong DCHECK."
Nicolas Geoffray [Wed, 23 Mar 2016 14:52:28 +0000 (14:52 +0000)]
Merge "Relax too strong DCHECK."

8 years agoRe-enable IMT stub test.
Nicolas Geoffray [Wed, 23 Mar 2016 14:28:30 +0000 (14:28 +0000)]
Re-enable IMT stub test.

bug:27794971
Change-Id: Ief5cbb9ca4a07596a2f389e386124f9bb5323073

8 years agoEnsure object ArraySet with null value does not need a type check.
Roland Levillain [Wed, 23 Mar 2016 12:40:35 +0000 (12:40 +0000)]
Ensure object ArraySet with null value does not need a type check.

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

8 years agoMerge "Revert "ART: Weaken DCHECK""
Nicolas Geoffray [Wed, 23 Mar 2016 08:22:29 +0000 (08:22 +0000)]
Merge "Revert "ART: Weaken DCHECK""

8 years agoRevert "ART: Weaken DCHECK"
Nicolas Geoffray [Wed, 23 Mar 2016 08:22:12 +0000 (08:22 +0000)]
Revert "ART: Weaken DCHECK"

Change that triggered this got reverted. This "fix" needs more investigation.

This reverts commit 1ee29d3dd3fbbf5df7821b70f45c49275c878e63.

Change-Id: Iee9e88f0e993edc0c7212e36d48ded1d31209156

8 years agoMerge "Revert "ART: Temporarily disable test""
Nicolas Geoffray [Wed, 23 Mar 2016 08:21:35 +0000 (08:21 +0000)]
Merge "Revert "ART: Temporarily disable test""

8 years agoRevert "ART: Temporarily disable test"
Nicolas Geoffray [Wed, 23 Mar 2016 08:21:19 +0000 (08:21 +0000)]
Revert "ART: Temporarily disable test"

Offending change has been reverted.

Bug: 27689078

This reverts commit 51135830a760ff647e5eb164d744abc769b006a7.

Change-Id: I794127eb9f2c0dfb08039eecffd777b7d94f0ed6

8 years agoMerge "Update run-test 097-duplicate-method"
Sebastien Hertz [Wed, 23 Mar 2016 08:04:17 +0000 (08:04 +0000)]
Merge "Update run-test 097-duplicate-method"

8 years agoMerge "Revert "Use compiler filter to determine oat file status.""
Nicolas Geoffray [Wed, 23 Mar 2016 06:42:39 +0000 (06:42 +0000)]
Merge "Revert "Use compiler filter to determine oat file status.""

8 years agoRevert "Use compiler filter to determine oat file status."
Nicolas Geoffray [Wed, 23 Mar 2016 06:42:05 +0000 (06:42 +0000)]
Revert "Use compiler filter to determine oat file status."

Bots are red. Tentative reverting as this is likely the offender.

Bug: 27689078

This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.

Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a

8 years agoMerge "ART: Weaken DCHECK"
Andreas Gampe [Wed, 23 Mar 2016 05:05:36 +0000 (05:05 +0000)]
Merge "ART: Weaken DCHECK"

8 years agoART: Weaken DCHECK
Andreas Gampe [Wed, 23 Mar 2016 05:03:46 +0000 (22:03 -0700)]
ART: Weaken DCHECK

Returns may be either plain or quickened.

Change-Id: Iee343c02fe3e02512c0ed60508525495a7cd5efb

8 years agoMerge "ART: Temporarily disable test"
Andreas Gampe [Wed, 23 Mar 2016 05:02:50 +0000 (05:02 +0000)]
Merge "ART: Temporarily disable test"

8 years agoART: Temporarily disable test
Andreas Gampe [Wed, 23 Mar 2016 04:29:59 +0000 (21:29 -0700)]
ART: Temporarily disable test

For investigation.

Bug: 27689078
Change-Id: Ibcd24f90f68ac64119dfad9b17a42bed252ff009

8 years agoMerge "Delete too spammy VLOG(heap) in ReleasePrimitiveArray"
Mathieu Chartier [Wed, 23 Mar 2016 01:01:56 +0000 (01:01 +0000)]
Merge "Delete too spammy VLOG(heap) in ReleasePrimitiveArray"

8 years agoMerge "Use compiler filter to determine oat file status."
Richard Uhler [Wed, 23 Mar 2016 00:28:32 +0000 (00:28 +0000)]
Merge "Use compiler filter to determine oat file status."

8 years agoUse compiler filter to determine oat file status.
Richard Uhler [Fri, 18 Mar 2016 22:05:30 +0000 (15:05 -0700)]
Use compiler filter to determine oat file status.

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

8 years agoMerge "Rename test to avoid too long file names."
Nicolas Geoffray [Tue, 22 Mar 2016 22:25:52 +0000 (22:25 +0000)]
Merge "Rename test to avoid too long file names."

8 years agoRename test to avoid too long file names.
Nicolas Geoffray [Tue, 22 Mar 2016 22:25:01 +0000 (22:25 +0000)]
Rename test to avoid too long file names.

Change-Id: Ife227f73c7baf1d05bcc6949faadf92753332f8d

8 years agoDelete too spammy VLOG(heap) in ReleasePrimitiveArray
Mathieu Chartier [Tue, 22 Mar 2016 22:19:47 +0000 (15:19 -0700)]
Delete too spammy VLOG(heap) in ReleasePrimitiveArray

Change-Id: I7a482ba366d7ad3e5d1689ae615dbcacbc7a41a6

8 years agoMerge "Disable test for now."
Nicolas Geoffray [Tue, 22 Mar 2016 21:50:13 +0000 (21:50 +0000)]
Merge "Disable test for now."

8 years agoDisable test for now.
Nicolas Geoffray [Tue, 22 Mar 2016 21:47:16 +0000 (21:47 +0000)]
Disable test for now.

bug:27794971
Change-Id: I31e1b2472271c6f54c9e0b7bf75fbdf7ebeba73d

8 years agoMerge "Optimizing: Reduce GraphChecker memory usage."
Vladimir Marko [Tue, 22 Mar 2016 19:02:00 +0000 (19:02 +0000)]
Merge "Optimizing: Reduce GraphChecker memory usage."