OSDN Git Service

android-x86/art.git
8 years agoMerge "Fix locking on string init map (again)."
Vladimir Marko [Mon, 21 Sep 2015 18:52:46 +0000 (18:52 +0000)]
Merge "Fix locking on string init map (again)."

8 years agoMerge "MIPS64: No call if ArraySet does not need a type check"
David Brazdil [Mon, 21 Sep 2015 17:43:03 +0000 (17:43 +0000)]
Merge "MIPS64: No call if ArraySet does not need a type check"

8 years agoMIPS64: No call if ArraySet does not need a type check
David Brazdil [Mon, 21 Sep 2015 17:39:16 +0000 (18:39 +0100)]
MIPS64: No call if ArraySet does not need a type check

The MIPS64 back-end did not use the ArraySet::NeedsTypeCheck query to
decide whether to invoke runtime or not like the other back-ends do.

Change-Id: Ie4ef9ee3ca97947256cd59983a2c1c3e3af58c83

8 years agoMerge "ART: Print short register names with MIPS64"
David Brazdil [Mon, 21 Sep 2015 17:34:58 +0000 (17:34 +0000)]
Merge "ART: Print short register names with MIPS64"

8 years agoART: Print short register names with MIPS64
David Brazdil [Mon, 21 Sep 2015 17:20:26 +0000 (18:20 +0100)]
ART: Print short register names with MIPS64

MIPS64 back-end would print register names as "GpuRegister: X" or
"FpuRegister: X". Space separates Checker attributes and therefore
caused a test to fail. This patch changes it to print "aX" and "fX"
respectively.

Change-Id: Iffae989f25563ef074dd7ef0b09cdfe438119cee

8 years agoMerge "ART: Fix bug in DeadPhiHandling"
David Brazdil [Mon, 21 Sep 2015 15:44:52 +0000 (15:44 +0000)]
Merge "ART: Fix bug in DeadPhiHandling"

8 years agoART: Fix bug in DeadPhiHandling
David Brazdil [Thu, 17 Sep 2015 15:47:21 +0000 (16:47 +0100)]
ART: Fix bug in DeadPhiHandling

When reviving dead phis for --debuggable, the DeadPhiHandling algorithm
could produce two phis of the same type, which causes the SSAChecker
graph verifier to fail. This patch fixes the bug.

Note that the code is currently not exercised because compilation is
delegated to Quick for --debuggable.

Bug: 24129675
Change-Id: I26b6dcf3071b325cc7871b989a36c505279ae681

8 years agoMerge "ART: Optimize catch phi creation to save memory."
David Brazdil [Mon, 21 Sep 2015 14:30:38 +0000 (14:30 +0000)]
Merge "ART: Optimize catch phi creation to save memory."

8 years agoFix locking on string init map (again).
Vladimir Marko [Mon, 21 Sep 2015 11:00:16 +0000 (12:00 +0100)]
Fix locking on string init map (again).

Follow-up to
    https://android-review.googlesource.com/172036 ,
    https://android-review.googlesource.com/171621 .

Don't overwrite existing values, only insert new ones.
(Also improve performance by using move semantics.)

This prevents the following race: Thread 1 looks for string
init map for a method but doesn't find it, so it starts to
construct a new map. Thread 2 is doing the same but it's
faster and actually inserts the new map and keeps a pointer
to it. After Thread 2 releases the lock, Thread 1 acquires
it and starts to Overwrite() the element that the Thread 2
is currently using, so Thread 2 ends up looking at a map
that's being actively modified.

Change-Id: I135571af644363ea7bb282969a1bc7287b34f9b2

8 years agoMerge "Fix braino in new build targets."
Nicolas Geoffray [Mon, 21 Sep 2015 10:35:24 +0000 (10:35 +0000)]
Merge "Fix braino in new build targets."

8 years agoFix braino in new build targets.
Nicolas Geoffray [Mon, 21 Sep 2015 10:20:20 +0000 (11:20 +0100)]
Fix braino in new build targets.

adb should be added to target build, not host build.

Change-Id: I91308f20cee66603441c08ba3dd57c107bf6317c

8 years agoMerge "Remove adb from host build in buildbot."
Nicolas Geoffray [Mon, 21 Sep 2015 10:13:40 +0000 (10:13 +0000)]
Merge "Remove adb from host build in buildbot."

8 years agoRemove adb from host build in buildbot.
Nicolas Geoffray [Mon, 21 Sep 2015 10:11:40 +0000 (11:11 +0100)]
Remove adb from host build in buildbot.

HOST_PREFER_32_BIT is for ART use only.

Change-Id: I080de289d22ed9ad9ab6befbd0605ef4043e8b15

8 years agoMerge "Fix locking on string init map."
Jeff Hao [Fri, 18 Sep 2015 22:58:22 +0000 (22:58 +0000)]
Merge "Fix locking on string init map."

8 years agoFix locking on string init map.
Jeff Hao [Fri, 18 Sep 2015 21:44:32 +0000 (14:44 -0700)]
Fix locking on string init map.

Related to: https://android-review.googlesource.com/#/c/171621

Change-Id: Ib6dcf9914f490f1d744c0abe1f520e5b307c7acd

8 years agoMerge "Handle OOME during threadstress finishing message"
Mathieu Chartier [Fri, 18 Sep 2015 19:13:26 +0000 (19:13 +0000)]
Merge "Handle OOME during threadstress finishing message"

8 years agoMerge "ART: Decrease dex2oat watchdog timeout"
Andreas Gampe [Fri, 18 Sep 2015 18:07:49 +0000 (18:07 +0000)]
Merge "ART: Decrease dex2oat watchdog timeout"

8 years agoHandle OOME during threadstress finishing message
Mathieu Chartier [Fri, 18 Sep 2015 03:46:56 +0000 (20:46 -0700)]
Handle OOME during threadstress finishing message

If there is an OOME that occurs after the "Finishing workers" it
caused the test to fail.

Also guard worker thread creation by try catch for OOME.

Bug: 18577101
Change-Id: I69367be0aad3f60093c02c7f63ae3c20757fb89b

8 years agoMerge "ART: Clean up less in dex2oat"
Andreas Gampe [Fri, 18 Sep 2015 17:55:28 +0000 (17:55 +0000)]
Merge "ART: Clean up less in dex2oat"

8 years agoART: Clean up less in dex2oat
Andreas Gampe [Thu, 17 Sep 2015 21:03:21 +0000 (14:03 -0700)]
ART: Clean up less in dex2oat

In non-debug builds, clean up even less. We already did not shut
down the runtime. Also skipping the compiler driver and the
verification results removes all major points of destructor
performance.

Tested with a common large app on Nexus 9. Time between dex2oat timing
message and executable exit (log from immediately-after log echo)
[w/o swap, w/ swap].
Before:  2.409s / 48.774s
After:   0.132s /  0.188s

Bug: 24199200
Change-Id: I5d8c17f8e28796545cfbb3887c07c92905f9b48d

8 years agoMerge "Make run-{libcore,jdwp}-tests work with OUT_DIR set."
Alex Light [Fri, 18 Sep 2015 17:37:17 +0000 (17:37 +0000)]
Merge "Make run-{libcore,jdwp}-tests work with OUT_DIR set."

8 years agoMerge "Revert "Revert "Optimize code generation of check-cast and instance-of."""
Nicolas Geoffray [Fri, 18 Sep 2015 14:20:39 +0000 (14:20 +0000)]
Merge "Revert "Revert "Optimize code generation of check-cast and instance-of."""

8 years agoRevert "Revert "Optimize code generation of check-cast and instance-of.""
Nicolas Geoffray [Fri, 18 Sep 2015 13:40:46 +0000 (13:40 +0000)]
Revert "Revert "Optimize code generation of check-cast and instance-of.""

This reverts commit 7537437c6a2f89249a48e30effcc27d4e7c5a04f.

Change-Id: If759cb08646e47b62829bebc3c5b1e2f2969cf84

8 years agoART: Optimize catch phi creation to save memory.
David Brazdil [Fri, 18 Sep 2015 13:58:57 +0000 (14:58 +0100)]
ART: Optimize catch phi creation to save memory.

Catch phis are eagerly created for all vregs and then removed as
throwing instructions with undefined locals are encountered. This can
be optimized since rougly one third of vregs is already undefined with
the first throwing instruction.

Change-Id: Ia4e66f19ea03f9a129b4b64d4193d262fff45224

8 years agoMerge "Fix x64's cmpw."
Nicolas Geoffray [Fri, 18 Sep 2015 13:51:30 +0000 (13:51 +0000)]
Merge "Fix x64's cmpw."

8 years agoFix x64's cmpw.
Nicolas Geoffray [Fri, 18 Sep 2015 13:36:49 +0000 (14:36 +0100)]
Fix x64's cmpw.

Change-Id: If700f2994990864c8b34aa52eb7a767153a1f917

8 years agoMerge "ART: Delete catch phis for undefined vregs."
David Brazdil [Fri, 18 Sep 2015 13:16:03 +0000 (13:16 +0000)]
Merge "ART: Delete catch phis for undefined vregs."

8 years agoART: Delete catch phis for undefined vregs.
David Brazdil [Fri, 18 Sep 2015 09:58:32 +0000 (10:58 +0100)]
ART: Delete catch phis for undefined vregs.

SSA builder assumed that (eagerly created) catch phis for undefined
vregs must be dead and will be deleted by dead phi elimination. This,
however, does not hold for --debuggable because the catch phis might
be revived for their environment uses. This patch modifies the builder
to delete the phis itself.

Bug: 24054676
Change-Id: Iaa5f2487ff1c38353b44cb89c709bbff1ecd73cc

8 years agoMerge "ART: Fix two allocation/deallocation mismatches."
Vladimir Marko [Fri, 18 Sep 2015 08:31:16 +0000 (08:31 +0000)]
Merge "ART: Fix two allocation/deallocation mismatches."

8 years agoMerge "Deoptimization support in optimizing compiler for setting local values"
Sebastien Hertz [Fri, 18 Sep 2015 07:07:01 +0000 (07:07 +0000)]
Merge "Deoptimization support in optimizing compiler for setting local values"

8 years agoART: Decrease dex2oat watchdog timeout
Andreas Gampe [Mon, 14 Sep 2015 22:34:38 +0000 (15:34 -0700)]
ART: Decrease dex2oat watchdog timeout

Keep the dex2oat watchdog timeout lower than the package manager
timeout, so that dex2oat kills itself before the system server
watchdog kills the system because of the long installation.

Bug: 23629410
Change-Id: I5faa23a1715736a1c2ba3f302a6ee41130d3fbae

8 years agoMerge "Add lock around interpreter string init reg map."
Jeff Hao [Fri, 18 Sep 2015 01:58:23 +0000 (01:58 +0000)]
Merge "Add lock around interpreter string init reg map."

8 years agoMake run-{libcore,jdwp}-tests work with OUT_DIR set.
Alex Light [Thu, 17 Sep 2015 23:59:09 +0000 (16:59 -0700)]
Make run-{libcore,jdwp}-tests work with OUT_DIR set.

Change the two scripts to use the value of the OUT_DIR environment
variable if it is set to find the build directory. If OUT_DIR is not
set just fall back to the default 'out/'.

Change-Id: I19824d792d5dcbed32846912fb36654894fcc0ac

8 years agoAdd lock around interpreter string init reg map.
Jeff Hao [Fri, 18 Sep 2015 00:29:01 +0000 (17:29 -0700)]
Add lock around interpreter string init reg map.

Fixes intermittent test failures. Note that locks can't be held
while the verifier is generating the map.

Change-Id: Ie38d6bf0d9c5e81d66b8c167fde0e75a0565cea5

8 years agoMerge "Implement StringGetCharsNoCheck intrinsic for X86"
Andreas Gampe [Fri, 18 Sep 2015 00:10:09 +0000 (00:10 +0000)]
Merge "Implement StringGetCharsNoCheck intrinsic for X86"

8 years agoMerge "ART: Skip image visitor in OatWriter for VerifyAtRuntime"
Andreas Gampe [Thu, 17 Sep 2015 23:26:15 +0000 (23:26 +0000)]
Merge "ART: Skip image visitor in OatWriter for VerifyAtRuntime"

8 years agoMerge "Allow null self only in DecodeWeakGlobalDuringShutdown()."
Hiroshi Yamauchi [Thu, 17 Sep 2015 21:55:46 +0000 (21:55 +0000)]
Merge "Allow null self only in DecodeWeakGlobalDuringShutdown()."

8 years agoMerge "ART: Refactor intrinsics slow-paths"
Andreas Gampe [Thu, 17 Sep 2015 21:43:46 +0000 (21:43 +0000)]
Merge "ART: Refactor intrinsics slow-paths"

8 years agoART: Refactor intrinsics slow-paths
Andreas Gampe [Wed, 9 Sep 2015 20:15:38 +0000 (13:15 -0700)]
ART: Refactor intrinsics slow-paths

Refactor slow paths so that there is a default implementation for
common cases (only arm64 with vixl is special). Write a generic
intrinsic slow-path that can be reused for the specific architectures.
Move helper functions into CodeGenerator so that they are accessible.

Change-Id: Ibd788dce432601c6a9f7e6f13eab31f28dcb8550

8 years agoART: Skip image visitor in OatWriter for VerifyAtRuntime
Andreas Gampe [Thu, 17 Sep 2015 00:12:55 +0000 (17:12 -0700)]
ART: Skip image visitor in OatWriter for VerifyAtRuntime

There's no use running the visitor, and it will force-resolve all
methods. Avoid the overhead. Reduces boot image compile time in
verify-at-runtime mode from 1.25s to 1s (on the host, in -j4 mode).

Bug: 24103765
Change-Id: Icdc3be628fed0c9bda01cf5f24fe377f23c571a9

8 years agoMerge "asan: update condition to work with multiple SANITIZE_TARGET values."
Evgenii Stepanov [Thu, 17 Sep 2015 20:57:34 +0000 (20:57 +0000)]
Merge "asan: update condition to work with multiple SANITIZE_TARGET values."

8 years agoasan: update condition to work with multiple SANITIZE_TARGET values.
Ivan Krasin [Thu, 17 Sep 2015 20:40:19 +0000 (13:40 -0700)]
asan: update condition to work with multiple SANITIZE_TARGET values.

The goal is to enable SANITIZE_TARGET='address coverage', which
will be used by LLVMFuzzer.

Bug: 22850550
Bug: 22233158
Change-Id: I909c6268e5c3d2da0361f2a2216cac080afbee64

8 years agoART: Fix two allocation/deallocation mismatches.
Vladimir Marko [Thu, 17 Sep 2015 19:22:02 +0000 (20:22 +0100)]
ART: Fix two allocation/deallocation mismatches.

Change-Id: I5088126cbd5b5e4b461a449eecd5b3574883f413

8 years agoAllow null self only in DecodeWeakGlobalDuringShutdown().
Hiroshi Yamauchi [Thu, 17 Sep 2015 04:11:44 +0000 (21:11 -0700)]
Allow null self only in DecodeWeakGlobalDuringShutdown().

To follow up CL 169855, allow a null current thread only in
DecodeWeakGlobalDuringShutdown() as a special case rather than
DecodeWeakGlobal(). This is to prevent a bug where null is accidentally
passed to DecodeWeakGlobal().

Bug: 23897251

Change-Id: I5e7bb78ec739b8bfcf77284ed321d507737ee33e

8 years agoMerge "Revert "Optimize code generation of check-cast and instance-of.""
Nicolas Geoffray [Thu, 17 Sep 2015 17:12:37 +0000 (17:12 +0000)]
Merge "Revert "Optimize code generation of check-cast and instance-of.""

8 years agoRevert "Optimize code generation of check-cast and instance-of."
Nicolas Geoffray [Thu, 17 Sep 2015 17:12:19 +0000 (17:12 +0000)]
Revert "Optimize code generation of check-cast and instance-of."

Failures with libcore tests.

This reverts commit 64acf303eaa2f32c0b1d8cfcbf044a822c5eec08.

Change-Id: Ie6f323fcf5d86bae5c334c1352bb21f1bad60a88

8 years agoMerge "Use arc4random_buf instead of getauxval(AT_RANDOM)."
Josh Gao [Thu, 17 Sep 2015 16:46:14 +0000 (16:46 +0000)]
Merge "Use arc4random_buf instead of getauxval(AT_RANDOM)."

8 years agoMerge "Optimizing: Allow storing value objects in containers."
Vladimir Marko [Thu, 17 Sep 2015 15:53:10 +0000 (15:53 +0000)]
Merge "Optimizing: Allow storing value objects in containers."

8 years agoMerge "Optimizing: Do not use range-based loop when inserting elements."
Vladimir Marko [Thu, 17 Sep 2015 15:32:33 +0000 (15:32 +0000)]
Merge "Optimizing: Do not use range-based loop when inserting elements."

8 years agoDeoptimization support in optimizing compiler for setting local values
Mingyao Yang [Mon, 6 Jul 2015 18:10:37 +0000 (11:10 -0700)]
Deoptimization support in optimizing compiler for setting local values

Due to compiler optimizations, we may not always be able to update
the value of a local variable in a compiled frame (like a variable
seen as constant by the compiler). To avoid that situation, we simply
deoptimize compiled frames updated by the debugger so they are
executed by the interpreter with the updated value.

When the debugger attempts to set a local variable (actually a DEX
register or a pair of registers) in a compiled frame, we allocate a
ShadowFrame associated to that frame (using its frame id) and set the
new value in that ShadowFrame. When we know we are about to continue
the execution of the compiled frame, we deoptimize the stack using
the preallocated ShadowFrame (instead of creating a new one). We
initialize it with the current value of all DEX registers except
the ones that have been set by the debugger. Therefore, the
ShadowFrame represent the runtime context modified by the debugger.

Bumps oat version to force recompilation.

Bug: 19944235
Change-Id: I0ebe6241264f7a3be0f14ee4516c1f7436e04da6

8 years agoOptimizing: Do not use range-based loop when inserting elements.
Vladimir Marko [Thu, 17 Sep 2015 14:47:05 +0000 (15:47 +0100)]
Optimizing: Do not use range-based loop when inserting elements.

When we iterate over the elements of a container and we may
insert new elements into that container, it's wrong to use
the range-based loop.

Bug: 24133462
Change-Id: Iee35fbcf88ed3bcd6155cbeba09bd256032a16be

8 years agoOptimizing: Allow storing value objects in containers.
Vladimir Marko [Thu, 17 Sep 2015 14:39:16 +0000 (15:39 +0100)]
Optimizing: Allow storing value objects in containers.

Change-Id: Ic9c6b62e36706e571fd71c18d24d8e76ae2d5c7b

8 years agoMerge "Optimize code generation of check-cast and instance-of."
Nicolas Geoffray [Thu, 17 Sep 2015 14:18:03 +0000 (14:18 +0000)]
Merge "Optimize code generation of check-cast and instance-of."

8 years agoMerge "Revert "Support unresolved fields in optimizing" breaks debuggable tests."
Calin Juravle [Thu, 17 Sep 2015 14:05:27 +0000 (14:05 +0000)]
Merge "Revert "Support unresolved fields in optimizing" breaks debuggable tests."

8 years agoRevert "Support unresolved fields in optimizing"
Calin Juravle [Thu, 17 Sep 2015 14:04:33 +0000 (14:04 +0000)]
Revert "Support unresolved fields in optimizing"
breaks debuggable tests.

This reverts commit 23a8e35481face09183a24b9d11e505597c75ebb.

Change-Id: I8e60b5c8f48525975f25d19e5e8066c1c94bd2e5

8 years agoOptimize code generation of check-cast and instance-of.
Nicolas Geoffray [Mon, 14 Sep 2015 21:20:29 +0000 (22:20 +0100)]
Optimize code generation of check-cast and instance-of.

On x86/x64/arm/arm64. Improve code size of selected apks from 0.3% to 1%,
and performance of DeltaBlue by 20%.

Change-Id: Ib5799f7a53443cd880a121dd7f21932ae9f5c7aa

8 years agoMerge "Support unresolved fields in optimizing"
Calin Juravle [Thu, 17 Sep 2015 12:29:09 +0000 (12:29 +0000)]
Merge "Support unresolved fields in optimizing"

8 years agoMerge "Support unresolved methods in Optimizing"
Calin Juravle [Thu, 17 Sep 2015 12:29:02 +0000 (12:29 +0000)]
Merge "Support unresolved methods in Optimizing"

8 years agoMerge "BuildInvoke refactor: extract String.init in its own code path"
Calin Juravle [Thu, 17 Sep 2015 12:28:50 +0000 (12:28 +0000)]
Merge "BuildInvoke refactor: extract String.init in its own code path"

8 years agoSupport unresolved fields in optimizing
Calin Juravle [Tue, 8 Sep 2015 18:56:31 +0000 (19:56 +0100)]
Support unresolved fields in optimizing

Change-Id: I9941fa5fcb6ef0a7a253c7a0b479a44a0210aad4

8 years agoSupport unresolved methods in Optimizing
Calin Juravle [Tue, 25 Aug 2015 14:42:32 +0000 (15:42 +0100)]
Support unresolved methods in Optimizing

Change-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1

8 years agoBuildInvoke refactor: extract String.init in its own code path
Calin Juravle [Tue, 25 Aug 2015 14:02:42 +0000 (15:02 +0100)]
BuildInvoke refactor: extract String.init in its own code path

This makes it clear that we special handle String init. Getting rid of
all `if (is_string_init)` improves readability into what we actually do
and expect for strings.

Change-Id: I9b4fba4c3ea89e0003c0704335cbe80e874d0e15

8 years agoUse arc4random_buf instead of getauxval(AT_RANDOM).
Josh Gao [Wed, 16 Sep 2015 23:27:00 +0000 (16:27 -0700)]
Use arc4random_buf instead of getauxval(AT_RANDOM).

Reclaim the AT_RANDOM bytes used by ART for bionic.

Bug: http://b/23942752
Change-Id: Iceddce7f08fa887a7bb6828d75ef21426c413863

8 years agoMerge "X86/X86_64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight"
Andreas Gampe [Wed, 16 Sep 2015 20:51:55 +0000 (20:51 +0000)]
Merge "X86/X86_64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight"

8 years agoMerge "ART: Skip compiler-driver compile loop for VerifyAtRuntime"
Andreas Gampe [Wed, 16 Sep 2015 17:22:02 +0000 (17:22 +0000)]
Merge "ART: Skip compiler-driver compile loop for VerifyAtRuntime"

8 years agoART: Skip compiler-driver compile loop for VerifyAtRuntime
Andreas Gampe [Wed, 16 Sep 2015 00:55:06 +0000 (17:55 -0700)]
ART: Skip compiler-driver compile loop for VerifyAtRuntime

We don't compile (not even dex-to-dex) anyways, so skip iterating
over all methods. Shows a ~10% improvement of boot image compile
time on Nexus 9. Shows a ~40% improvement for a common large app
on the same device. Most of the remaining time is unzipping dex
files.

Bug: 24103765
Change-Id: I00931fd062a0a2297d1c7b90794302cb664571cc

8 years agoMerge "Optimizing: Tag arena allocations in SsaBuilder."
Vladimir Marko [Wed, 16 Sep 2015 15:46:07 +0000 (15:46 +0000)]
Merge "Optimizing: Tag arena allocations in SsaBuilder."

8 years agoOptimizing: Tag arena allocations in SsaBuilder.
Vladimir Marko [Tue, 15 Sep 2015 14:33:14 +0000 (15:33 +0100)]
Optimizing: Tag arena allocations in SsaBuilder.

Replace GrowableArray with ArenaVector in SsaBuilder and
tag allocations with a new arena allocation type.

Change-Id: I27312c51d7be9d2ad02a974cce93b365c65c5fc4

8 years agoMerge "ART: Make dex2oat timing a bit more granular"
Andreas Gampe [Wed, 16 Sep 2015 15:30:56 +0000 (15:30 +0000)]
Merge "ART: Make dex2oat timing a bit more granular"

8 years agoMerge "Add option to append to the cfg dump."
Calin Juravle [Wed, 16 Sep 2015 14:34:41 +0000 (14:34 +0000)]
Merge "Add option to append to the cfg dump."

8 years agoMerge "Add OptimizingCompilerStats to the CodeGenerator class."
Calin Juravle [Wed, 16 Sep 2015 14:33:16 +0000 (14:33 +0000)]
Merge "Add OptimizingCompilerStats to the CodeGenerator class."

8 years agoMerge "Optimizing: Tag arena allocations in HGraph."
Vladimir Marko [Wed, 16 Sep 2015 14:11:43 +0000 (14:11 +0000)]
Merge "Optimizing: Tag arena allocations in HGraph."

8 years agoImplement StringGetCharsNoCheck intrinsic for X86
Mark Mendell [Mon, 17 Aug 2015 15:39:06 +0000 (11:39 -0400)]
Implement StringGetCharsNoCheck intrinsic for X86

Generate inline code for String.GetChars internal no checking form for
X86 and X86_64. Use REP MOVSW to copy the characters, rather than
memcpy as Quick does.

Change-Id: Ia67aff248461b394f97c48053f216880381945ff
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoX86/X86_64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight
Mark Mendell [Wed, 16 Sep 2015 01:45:18 +0000 (21:45 -0400)]
X86/X86_64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight

Implement {Long,Integer}NumberOfTrailingZeros and
{Long,Integer}Rotate{Left,Right}.

X86 32 bit mode doesn't implement the LongRotate{Left,Right} intrinsics
at this time.

Change-Id: Ie25c1dca15ee2d17fbdf0c15c758bde431034d35
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoOptimizing: Tag arena allocations in HGraph.
Vladimir Marko [Tue, 15 Sep 2015 09:15:55 +0000 (10:15 +0100)]
Optimizing: Tag arena allocations in HGraph.

Replace GrowableArray with ArenaVector in HGraph and related
classes HEnvironment, HLoopInformation, HInvoke and HPhi,
and tag allocations with new arena allocation types.

Change-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d

8 years agoMerge "Use clang for building mips32r2_fp."
Nicolas Geoffray [Wed, 16 Sep 2015 12:00:06 +0000 (12:00 +0000)]
Merge "Use clang for building mips32r2_fp."

8 years agoUse clang for building mips32r2_fp.
Nicolas Geoffray [Wed, 16 Sep 2015 11:58:57 +0000 (12:58 +0100)]
Use clang for building mips32r2_fp.

Otherwise, we get a linker error when building for
device/generic/art/mips32r2_fp.

Change-Id: Ie0bda1fdb807888d7afabd6f29c79ccc0d59ddbc

8 years agoMerge "Additional MIPS64 instructions needed by intrinsics code."
Andreas Gampe [Wed, 16 Sep 2015 04:21:39 +0000 (04:21 +0000)]
Merge "Additional MIPS64 instructions needed by intrinsics code."

8 years agoMerge "Use induction variable range analysis in BCE (statically)."
Aart Bik [Wed, 16 Sep 2015 04:13:03 +0000 (04:13 +0000)]
Merge "Use induction variable range analysis in BCE (statically)."

8 years agoMerge "X86: Use short forward jumps if possible"
Andreas Gampe [Wed, 16 Sep 2015 03:41:47 +0000 (03:41 +0000)]
Merge "X86: Use short forward jumps if possible"

8 years agoMerge "Clean up mod union table"
Mathieu Chartier [Wed, 16 Sep 2015 03:35:08 +0000 (03:35 +0000)]
Merge "Clean up mod union table"

8 years agoART: Make dex2oat timing a bit more granular
Andreas Gampe [Wed, 16 Sep 2015 03:04:54 +0000 (20:04 -0700)]
ART: Make dex2oat timing a bit more granular

Add scoped timing for runtime creation and dex file opening. Allows
comparing (JIT) compile time to specific overhead inherent to all
compilations.

Bug: 24103765
Change-Id: I1f83daa7015745bffa0cec3a3357b045c8493d6a

8 years agoMerge "Support X86 intrinsic System.arraycopy char"
Andreas Gampe [Wed, 16 Sep 2015 02:58:04 +0000 (02:58 +0000)]
Merge "Support X86 intrinsic System.arraycopy char"

8 years agoMerge "Add X86 bsf and rotate instructions"
Andreas Gampe [Wed, 16 Sep 2015 02:56:18 +0000 (02:56 +0000)]
Merge "Add X86 bsf and rotate instructions"

8 years agoAdd X86 bsf and rotate instructions
Mark Mendell [Wed, 16 Sep 2015 01:45:01 +0000 (21:45 -0400)]
Add X86 bsf and rotate instructions

These are for use in new intrinsics.  Bsf (Bit Scan Forward) is used in
{Long,Integer}NumberOfTrailingZeros and the rotates are used in
{Long,Integer}Rotate{Left,Right}.

Change-Id: Icb599d7e1eec4e4ea9e5b4f0b1654c7b8d4de678
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoUse induction variable range analysis in BCE (statically).
Aart Bik [Thu, 10 Sep 2015 19:50:58 +0000 (12:50 -0700)]
Use induction variable range analysis in BCE (statically).

Rationale: Finally! After lots of very large CLs, now a small CL
           that uses the new induction variable analysis in BCE
           (statically, using this dynamically with de-opt is TBD).
           Despite its relative small size, be aware though,
           since the CL introduces a new phase to the compiler.

Change-Id: If5555a173fd5d55d147c63138ef51fc296fa1414

8 years agoClean up mod union table
Mathieu Chartier [Tue, 15 Sep 2015 21:07:10 +0000 (14:07 -0700)]
Clean up mod union table

Fixed some formatting and removed unused forward declarations.

Bug: 19534862
Change-Id: Icfd5143e5bb7be0570248fd0f4bbf97125a9a35b

8 years agoMerge "Expect null referent in DequeuePendingReference()."
Hiroshi Yamauchi [Tue, 15 Sep 2015 17:54:44 +0000 (17:54 +0000)]
Merge "Expect null referent in DequeuePendingReference()."

8 years agoExpect null referent in DequeuePendingReference().
Hiroshi Yamauchi [Mon, 14 Sep 2015 22:10:50 +0000 (15:10 -0700)]
Expect null referent in DequeuePendingReference().

Following up on CL 170735.

It's possible that the referent may potentially be cleared which would
cause a check failure. Avoid that.

Bug: 12687968
Bug: 23896462
Change-Id: I8ccc5936b61ceacf250624681e65307f23ce0405

8 years agoMerge "Use image pointer size for profile info"
Mathieu Chartier [Tue, 15 Sep 2015 17:03:55 +0000 (17:03 +0000)]
Merge "Use image pointer size for profile info"

8 years agoUse image pointer size for profile info
Mathieu Chartier [Tue, 15 Sep 2015 01:50:08 +0000 (18:50 -0700)]
Use image pointer size for profile info

May fix some random crashes in dex2oat due to cross compilation.

Change-Id: I633652500e8c7dfec38044dffd07eb467973d82a

8 years agoMerge "Rename parameter in ArtMethod::ToNativeQuickPc"
David Brazdil [Tue, 15 Sep 2015 17:01:47 +0000 (17:01 +0000)]
Merge "Rename parameter in ArtMethod::ToNativeQuickPc"

8 years agoRename parameter in ArtMethod::ToNativeQuickPc
David Brazdil [Tue, 15 Sep 2015 16:57:31 +0000 (17:57 +0100)]
Rename parameter in ArtMethod::ToNativeQuickPc

Addressing a nit for CL Idb2b34aabf1ac7249c30a00806af7d63d7e682dd.

Change-Id: I1112312b90aa6123e7e9ca8f67132dd7cc57a62f

8 years agoMerge "Cleanup thread access in StackVisitor"
Sebastien Hertz [Tue, 15 Sep 2015 16:54:02 +0000 (16:54 +0000)]
Merge "Cleanup thread access in StackVisitor"

8 years agoMerge "ART: Fix 004-ReferenceMap run test"
David Brazdil [Tue, 15 Sep 2015 16:52:02 +0000 (16:52 +0000)]
Merge "ART: Fix 004-ReferenceMap run test"

8 years agoART: Fix 004-ReferenceMap run test
David Brazdil [Tue, 15 Sep 2015 16:00:52 +0000 (17:00 +0100)]
ART: Fix 004-ReferenceMap run test

This patch adds a new option to ArtMethod::ToNativeQuickPc to select
the order of iteration over stack maps. The method is only used by
the runtime to find native_pc of catch blocks, but also by the
004-ReferenceMap test which uses it to find native_pc of a safepoint.

Change-Id: Idb2b34aabf1ac7249c30a00806af7d63d7e682dd

8 years agoMerge "Use $ for f registers to please clang."
Nicolas Geoffray [Tue, 15 Sep 2015 15:59:53 +0000 (15:59 +0000)]
Merge "Use $ for f registers to please clang."

8 years agoUse $ for f registers to please clang.
Nicolas Geoffray [Tue, 15 Sep 2015 15:36:50 +0000 (16:36 +0100)]
Use $ for f registers to please clang.

Change-Id: I723ce53e344ee98334a556fbe231d8588fa7d1b6

8 years agoAdd option to append to the cfg dump.
Calin Juravle [Mon, 24 Aug 2015 14:34:44 +0000 (15:34 +0100)]
Add option to append to the cfg dump.

This makes life easier when verifying tests with unresolved classes
(which call dex2oat at rutime).

Change-Id: I7985b2b7c0f343462e03a26b8395297c810b1d95

8 years agoMerge "Revert "Revert "ART: Register allocation and runtime support for try/catch"""
David Brazdil [Tue, 15 Sep 2015 12:34:35 +0000 (12:34 +0000)]
Merge "Revert "Revert "ART: Register allocation and runtime support for try/catch"""