OSDN Git Service

android-x86/art.git
9 years agoam d474b1d0: Merge "Revert "Revert "[optimizing] Improve x86 shifts"""
Roland Levillain [Wed, 29 Apr 2015 10:29:05 +0000 (10:29 +0000)]
am d474b1d0: Merge "Revert "Revert "[optimizing] Improve x86 shifts"""

* commit 'd474b1d0fd69fdeb481adda8c0814512956f2d51':
  Revert "Revert "[optimizing] Improve x86 shifts""

9 years agoMerge "Revert "Revert "[optimizing] Improve x86 shifts"""
Roland Levillain [Wed, 29 Apr 2015 10:18:40 +0000 (10:18 +0000)]
Merge "Revert "Revert "[optimizing] Improve x86 shifts"""

9 years agoRevert "Revert "[optimizing] Improve x86 shifts""
Roland Levillain [Wed, 29 Apr 2015 09:22:37 +0000 (10:22 +0100)]
Revert "Revert "[optimizing] Improve x86 shifts""

This reverts commit f9aac1e9f442c2486cd54f045d43e15791601205.

Don't use Location::Any() for the first input if the output is
Location::SameAsFirstInput().

Change-Id: I400834052b114abf0d616da1b4b6506f7bba10ab

9 years agoam 57f6bee4: Merge "ART: Move dex2oat watchdog output to LogLine"
Andreas Gampe [Wed, 29 Apr 2015 06:40:14 +0000 (06:40 +0000)]
am 57f6bee4: Merge "ART: Move dex2oat watchdog output to LogLine"

* commit '57f6bee40489842c0461140935f900ed88281592':
  ART: Move dex2oat watchdog output to LogLine

9 years agoMerge "ART: Move dex2oat watchdog output to LogLine"
Andreas Gampe [Wed, 29 Apr 2015 06:30:40 +0000 (06:30 +0000)]
Merge "ART: Move dex2oat watchdog output to LogLine"

9 years agoART: Move dex2oat watchdog output to LogLine
Andreas Gampe [Wed, 29 Apr 2015 06:16:03 +0000 (23:16 -0700)]
ART: Move dex2oat watchdog output to LogLine

The fprintf isn't visible on device, as it doesn't end up in the
logcat.

Also increase the watchdog timeout to 10 minutes.

Bug: 20658562
Change-Id: I1fec8dae25f9282f72e762bda934fceb948bbd5f

9 years agoam b0300bad: Merge "ART: Remove multidex limit"
Andreas Gampe [Wed, 29 Apr 2015 05:19:44 +0000 (05:19 +0000)]
am b0300bad: Merge "ART: Remove multidex limit"

* commit 'b0300bad88e6295217a53ff96db6170a727997a9':
  ART: Remove multidex limit

9 years agoMerge "ART: Remove multidex limit"
Andreas Gampe [Wed, 29 Apr 2015 05:10:04 +0000 (05:10 +0000)]
Merge "ART: Remove multidex limit"

9 years agoART: Remove multidex limit
Andreas Gampe [Tue, 28 Apr 2015 03:01:52 +0000 (20:01 -0700)]
ART: Remove multidex limit

Remove the arbitrary multidex limit. If users want to use many
files, allow them, but print a warning after a considerable amount.

Bug: 20071800

(cherry picked from commit 32c26b8f9b995250479c185172f4ffd881a59996)

Change-Id: Ic51c96b84042f769a7d33ec53fe587b68cd69df4

9 years agoam 13d38aab: Merge "Fix possible null deference in Throwable::Dump"
Mathieu Chartier [Tue, 28 Apr 2015 21:17:15 +0000 (21:17 +0000)]
am 13d38aab: Merge "Fix possible null deference in Throwable::Dump"

* commit '13d38aabf01f8391946730b7c2e8d077b1ec7d13':
  Fix possible null deference in Throwable::Dump

9 years agoMerge "Fix possible null deference in Throwable::Dump"
Mathieu Chartier [Tue, 28 Apr 2015 21:06:33 +0000 (21:06 +0000)]
Merge "Fix possible null deference in Throwable::Dump"

9 years agoFix possible null deference in Throwable::Dump
Mathieu Chartier [Tue, 28 Apr 2015 20:53:02 +0000 (13:53 -0700)]
Fix possible null deference in Throwable::Dump

Bug: 20640601

Change-Id: Ibd6081ed9ea16f320e505e06e690b8eddb1228ef

9 years agoam b8df6601: Merge "Change ddmc run-test to make new objects instead of strings."
Jeff Hao [Tue, 28 Apr 2015 19:25:26 +0000 (19:25 +0000)]
am b8df6601: Merge "Change ddmc run-test to make new objects instead of strings."

* commit 'b8df6601f2119fd90150761388057dbe893bb6ae':
  Change ddmc run-test to make new objects instead of strings.

9 years agoMerge "Change ddmc run-test to make new objects instead of strings."
Jeff Hao [Tue, 28 Apr 2015 19:15:05 +0000 (19:15 +0000)]
Merge "Change ddmc run-test to make new objects instead of strings."

9 years agoChange ddmc run-test to make new objects instead of strings.
Jeff Hao [Tue, 28 Apr 2015 19:11:22 +0000 (12:11 -0700)]
Change ddmc run-test to make new objects instead of strings.

Before, the test was creating new strings until overflowing allocations,
which was half string objects and half character arrays. Now, it
allocates all strings with the character data, which is larger than
before, causing the test to run out of memory. Allocating only objects
prevents the test from running out of memory.

Change-Id: Icf3f0fd2ae847e76a9b8d5dfb762be92de16aaa3

9 years agoam edede5c6: Merge "Quick: Fix crash on fall-through out of method code."
Vladimir Marko [Tue, 28 Apr 2015 18:50:39 +0000 (18:50 +0000)]
am edede5c6: Merge "Quick: Fix crash on fall-through out of method code."

* commit 'edede5c67daa2a6890067da0934e0ba6e14661b9':
  Quick: Fix crash on fall-through out of method code.

9 years agoMerge "Quick: Fix crash on fall-through out of method code."
Vladimir Marko [Tue, 28 Apr 2015 18:35:17 +0000 (18:35 +0000)]
Merge "Quick: Fix crash on fall-through out of method code."

9 years agoQuick: Fix crash on fall-through out of method code.
Calin Juravle [Tue, 7 Apr 2015 18:43:36 +0000 (19:43 +0100)]
Quick: Fix crash on fall-through out of method code.

Fix Quick crash when the last insn has a fall-through out of
the method's code. Allow creation of an out-of-method block
and at the end of MIRGraph::InlineMethod() check if that
block is reachable. If it is, punt to interpreter. Add tests
for unreachable if-lt and packed-switch as the last insn.

Also fix MIRGraph::ProcessCanSwitch() to treat the offset to
the data as signed. Jumping over the data with a goto and
using it from a switch further down is valid. This was also
crashing (presumably only on 64-bit dex2oat).

Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the
bug report.

Bug: 19988134
Change-Id: I627f4137f61901897bfb9a5252741c6ded3a1adb

9 years agoam 458d91b0: Merge "Prevent undefined behavior in RosAlloc."
Dan Albert [Tue, 28 Apr 2015 18:23:35 +0000 (18:23 +0000)]
am 458d91b0: Merge "Prevent undefined behavior in RosAlloc."

* commit '458d91b0f72293c9dd347feecf535db0682ccd71':
  Prevent undefined behavior in RosAlloc.

9 years agoMerge "Prevent undefined behavior in RosAlloc."
Dan Albert [Tue, 28 Apr 2015 18:11:38 +0000 (18:11 +0000)]
Merge "Prevent undefined behavior in RosAlloc."

9 years agoPrevent undefined behavior in RosAlloc.
Dan Albert [Thu, 16 Apr 2015 18:50:30 +0000 (11:50 -0700)]
Prevent undefined behavior in RosAlloc.

In cases where remain == 0, the 32-bit value would be left shifted
32-bits, which is undefined behavior.

Change-Id: I6277279341b168536f928ce87375c395a1aa865c

9 years agoam 2b9b0de4: Merge "Fix some compaction bugs in string allocation"
Mathieu Chartier [Tue, 28 Apr 2015 18:03:18 +0000 (18:03 +0000)]
am 2b9b0de4: Merge "Fix some compaction bugs in string allocation"

* commit '2b9b0de424146c8b654b3fa05b14c48d3b2b0b13':
  Fix some compaction bugs in string allocation

9 years agoMerge "Fix some compaction bugs in string allocation"
Mathieu Chartier [Tue, 28 Apr 2015 17:47:45 +0000 (17:47 +0000)]
Merge "Fix some compaction bugs in string allocation"

9 years agoFix some compaction bugs in string allocation
Mathieu Chartier [Tue, 28 Apr 2015 17:01:28 +0000 (10:01 -0700)]
Fix some compaction bugs in string allocation

Change-Id: I2b8499c60de7690e1012d71bccba4ecd589da9af

9 years agoam 1c5808c0: Merge "Fix constructor access check through reflection"
Sebastien Hertz [Tue, 28 Apr 2015 14:42:23 +0000 (14:42 +0000)]
am 1c5808c0: Merge "Fix constructor access check through reflection"

* commit '1c5808c0fa83155565f5319808a2949e0a3f5789':
  Fix constructor access check through reflection

9 years agoMerge "Fix constructor access check through reflection"
Sebastien Hertz [Tue, 28 Apr 2015 14:33:00 +0000 (14:33 +0000)]
Merge "Fix constructor access check through reflection"

9 years agoam d4667dea: Merge "ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points."
Vladimir Marko [Tue, 28 Apr 2015 13:51:27 +0000 (13:51 +0000)]
am d4667dea: Merge "ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points."

* commit 'd4667dea87e68ee3ee64581af138f59300a5c510':
  ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points.

9 years agoMerge "ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points."
Vladimir Marko [Tue, 28 Apr 2015 13:31:38 +0000 (13:31 +0000)]
Merge "ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points."

9 years agoFix constructor access check through reflection
Sebastien Hertz [Tue, 28 Apr 2015 13:00:41 +0000 (15:00 +0200)]
Fix constructor access check through reflection

We must not throw IllegalAccessException if the constructor has been
made accessible by a previous call to Constructor.setAccessible, even
if the caller cannot access the constructor.

Bug: 20639158
Change-Id: I9a34f05cdbb8825ad88b42223743690228e3f03e

9 years agoART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points.
Vladimir Marko [Tue, 28 Apr 2015 13:14:58 +0000 (14:14 +0100)]
ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points.

Missing from
    https://android-review.googlesource.com/79174

Change-Id: If182b73824edfd4639f645612b2f7b67c1f31bef

9 years agoam 95935f28: Merge "ART: Fix MIPS entrypoint downcall macros."
Vladimir Marko [Tue, 28 Apr 2015 12:19:38 +0000 (12:19 +0000)]
am 95935f28: Merge "ART: Fix MIPS entrypoint downcall macros."

* commit '95935f28a7206c32592f6744cfc4c63e4d87ecdf':
  ART: Fix MIPS entrypoint downcall macros.

9 years agoMerge "ART: Fix MIPS entrypoint downcall macros."
Vladimir Marko [Tue, 28 Apr 2015 12:10:30 +0000 (12:10 +0000)]
Merge "ART: Fix MIPS entrypoint downcall macros."

9 years agoART: Fix MIPS entrypoint downcall macros.
Vladimir Marko [Tue, 28 Apr 2015 11:37:09 +0000 (12:37 +0100)]
ART: Fix MIPS entrypoint downcall macros.

Broken by not updating the MIPS assembly after rebase of
    https://android-review.googlesource.com/79174

Change-Id: I6258c254c0652e92357d306640c461d9523da227

9 years agoam 3adfc4bb: Merge "Quick: Avoid unnecessary GVN work in release builds."
Vladimir Marko [Tue, 28 Apr 2015 10:44:37 +0000 (10:44 +0000)]
am 3adfc4bb: Merge "Quick: Avoid unnecessary GVN work in release builds."

* commit '3adfc4bbe6c42d574bd2069d8e38a13d5ad98ccf':
  Quick: Avoid unnecessary GVN work in release builds.

9 years agoam 80613ffd: Merge "Have HInvoke instructions know their number of actual arguments."
Roland Levillain [Tue, 28 Apr 2015 10:39:17 +0000 (10:39 +0000)]
am 80613ffd: Merge "Have HInvoke instructions know their number of actual arguments."

* commit '80613ffd5699e6207d6b1264d600a0fc168074ce':
  Have HInvoke instructions know their number of actual arguments.

9 years agoam a94fb1f9: Merge "Revert "Revert "[optimizing] Replace FP divide by power of 2"""
Nicolas Geoffray [Tue, 28 Apr 2015 10:39:14 +0000 (10:39 +0000)]
am a94fb1f9: Merge "Revert "Revert "[optimizing] Replace FP divide by power of 2"""

* commit 'a94fb1f99ee3390bca9531b2512f8fc65f13ceee':
  Revert "Revert "[optimizing] Replace FP divide by power of 2""

9 years agoMerge "Quick: Avoid unnecessary GVN work in release builds."
Vladimir Marko [Tue, 28 Apr 2015 10:36:38 +0000 (10:36 +0000)]
Merge "Quick: Avoid unnecessary GVN work in release builds."

9 years agoMerge "Have HInvoke instructions know their number of actual arguments."
Roland Levillain [Tue, 28 Apr 2015 10:31:38 +0000 (10:31 +0000)]
Merge "Have HInvoke instructions know their number of actual arguments."

9 years agoMerge "Revert "Revert "[optimizing] Replace FP divide by power of 2"""
Nicolas Geoffray [Tue, 28 Apr 2015 10:29:17 +0000 (10:29 +0000)]
Merge "Revert "Revert "[optimizing] Replace FP divide by power of 2"""

9 years agoHave HInvoke instructions know their number of actual arguments.
Roland Levillain [Tue, 28 Apr 2015 10:00:54 +0000 (11:00 +0100)]
Have HInvoke instructions know their number of actual arguments.

Add an art::HInvoke::GetNumberOfArguments routine so that
art::HInvoke and its subclasses can return the number of
actual arguments of the called method.  Use it in code
generators and intrinsics handlers.

Consequently, no longer remove a clinit check as last input
of a static invoke if it is still present during baseline
code generation, but ensure that static invokes have no such
check as last input in optimized compilations.

Change-Id: Iaf9e07d1057a3b15b83d9638538c02b70211e476

9 years agoam 64db0171: Merge "Fix java_lang_Class newInstance for strings; also quick entrypoints."
Jeff Hao [Tue, 28 Apr 2015 04:15:04 +0000 (04:15 +0000)]
am 64db0171: Merge "Fix java_lang_Class newInstance for strings; also quick entrypoints."

* commit '64db01714f91bf255a79c0a88813641c240c9857':
  Fix java_lang_Class newInstance for strings; also quick entrypoints.

9 years agoMerge "Fix java_lang_Class newInstance for strings; also quick entrypoints."
Jeff Hao [Tue, 28 Apr 2015 03:57:53 +0000 (03:57 +0000)]
Merge "Fix java_lang_Class newInstance for strings; also quick entrypoints."

9 years agoFix java_lang_Class newInstance for strings; also quick entrypoints.
Jeff Hao [Tue, 28 Apr 2015 03:54:07 +0000 (20:54 -0700)]
Fix java_lang_Class newInstance for strings; also quick entrypoints.

Change-Id: I35fd23c5a9051e1ffda0ecc2cbafb5d318c7b5e6

9 years agoam f0a3d3da: Merge "ART: Fix constructor access checking"
Andreas Gampe [Tue, 28 Apr 2015 02:53:22 +0000 (02:53 +0000)]
am f0a3d3da: Merge "ART: Fix constructor access checking"

* commit 'f0a3d3dad248ad0dcb7cfc6addcc66d8bd117e48':
  ART: Fix constructor access checking

9 years agoMerge "ART: Fix constructor access checking"
Andreas Gampe [Tue, 28 Apr 2015 02:42:25 +0000 (02:42 +0000)]
Merge "ART: Fix constructor access checking"

9 years agoART: Fix constructor access checking
Andreas Gampe [Tue, 28 Apr 2015 00:26:37 +0000 (17:26 -0700)]
ART: Fix constructor access checking

Constructor access must be checked.

(cherry picked from commit 0dd76cd3f09f495a1b9a0e4f8712c09ff885c6fd)

Bug: 20639158
Change-Id: I3c586e9572a748d208bea43aa2349c3ef52a2ee5

9 years agoam 9d1e1903: Merge "Replace String CharArray with internal uint16_t array."
Jeff Hao [Tue, 28 Apr 2015 02:15:12 +0000 (02:15 +0000)]
am 9d1e1903: Merge "Replace String CharArray with internal uint16_t array."

* commit '9d1e19035a59ff8bf05a09ad880ede99806ba73f':
  Replace String CharArray with internal uint16_t array.

9 years agoMerge "Replace String CharArray with internal uint16_t array."
Jeff Hao [Tue, 28 Apr 2015 02:04:09 +0000 (02:04 +0000)]
Merge "Replace String CharArray with internal uint16_t array."

9 years agoReplace String CharArray with internal uint16_t array.
Jeff Hao [Wed, 15 Jan 2014 21:49:50 +0000 (13:49 -0800)]
Replace String CharArray with internal uint16_t array.

Summary of high level changes:
  - Adds compiler inliner support to identify string init methods
  - Adds compiler support (quick & optimizing) with new invoke code path
    that calls method off the thread pointer
  - Adds thread entrypoints for all string init methods
  - Adds map to verifier to log when receiver of string init has been
    copied to other registers. used by compiler and interpreter

Change-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01

9 years agoam 3fd79afb: Merge "Switch the default read barrier type to a Baker one."
Hiroshi Yamauchi [Tue, 28 Apr 2015 01:18:46 +0000 (01:18 +0000)]
am 3fd79afb: Merge "Switch the default read barrier type to a Baker one."

* commit '3fd79afbb7490f52817f737ecceb694f6618dcf9':
  Switch the default read barrier type to a Baker one.

9 years agoMerge "Switch the default read barrier type to a Baker one."
Hiroshi Yamauchi [Tue, 28 Apr 2015 01:07:17 +0000 (01:07 +0000)]
Merge "Switch the default read barrier type to a Baker one."

9 years agoSwitch the default read barrier type to a Baker one.
Hiroshi Yamauchi [Tue, 28 Apr 2015 00:58:51 +0000 (17:58 -0700)]
Switch the default read barrier type to a Baker one.

For automated testing.

Bug: 12687968
Change-Id: I831d6e45e4729f0dd3cf178d02af511a32cc9777

9 years agoRevert "Revert "[optimizing] Replace FP divide by power of 2""
Nicolas Geoffray [Mon, 27 Apr 2015 08:53:46 +0000 (08:53 +0000)]
Revert "Revert "[optimizing] Replace FP divide by power of 2""

This reverts commit 067cae2c86627d2edcf01b918ee601774bc76aeb.

Change-Id: Iaaa8772500ea7d3dce6ae0829dc0dc3bbc9c14ca

9 years agoam 97c96f5a: Merge "Fix mismatched malloc/free delete/new."
Christopher Ferris [Mon, 27 Apr 2015 19:14:58 +0000 (19:14 +0000)]
am 97c96f5a: Merge "Fix mismatched malloc/free delete/new."

* commit '97c96f5aab22f75dd54089bdc194588a4b5a2e8d':
  Fix mismatched malloc/free delete/new.

9 years agoam d74a1bf3: Merge "Use the lock word bits for Baker-style read barrier."
Hiroshi Yamauchi [Mon, 27 Apr 2015 19:14:56 +0000 (19:14 +0000)]
am d74a1bf3: Merge "Use the lock word bits for Baker-style read barrier."

* commit 'd74a1bf310a6a5ad2d770fcd76735cbc617d64eb':
  Use the lock word bits for Baker-style read barrier.

9 years agoam acee1524: Merge "Fix clean-oat"
Mathieu Chartier [Mon, 27 Apr 2015 19:14:53 +0000 (19:14 +0000)]
am acee1524: Merge "Fix clean-oat"

* commit 'acee152464725efac3dd74c9ac3acf2afa73f0e9':
  Fix clean-oat

9 years agoMerge "Fix mismatched malloc/free delete/new."
Christopher Ferris [Mon, 27 Apr 2015 19:05:36 +0000 (19:05 +0000)]
Merge "Fix mismatched malloc/free delete/new."

9 years agoFix mismatched malloc/free delete/new.
Christopher Ferris [Sat, 25 Apr 2015 00:23:53 +0000 (17:23 -0700)]
Fix mismatched malloc/free delete/new.

Modify the monitor code to override the delete operator. The problem
is the new operator is overloaded to return a pointer returned by
posix_memalign, but then it's freed with a delete, not a free call.

Also, fix the debugger code to use the [] for a std::unique_ptr to
match how the value is actually allocated.

Both problems found by ASAN.

Bug: 18202869

Change-Id: I2f3a2c02a7f35399b7ba6717b08a035089fab00d

9 years agoMerge "Use the lock word bits for Baker-style read barrier."
Hiroshi Yamauchi [Mon, 27 Apr 2015 18:10:18 +0000 (18:10 +0000)]
Merge "Use the lock word bits for Baker-style read barrier."

9 years agoMerge "Fix clean-oat"
Mathieu Chartier [Mon, 27 Apr 2015 18:01:13 +0000 (18:01 +0000)]
Merge "Fix clean-oat"

9 years agoFix clean-oat
Mathieu Chartier [Mon, 27 Apr 2015 17:46:39 +0000 (10:46 -0700)]
Fix clean-oat

Change to use adb shell sh -c <cmd>.

Also fixed other phony targets, deleted smart mode and added
verify-at-runtime mode.

Change-Id: I562117774eaa153e66b46d6f173fe993931018b7

9 years agoam 2d01066d: Merge "Dissociate uses with environment uses."
Nicolas Geoffray [Mon, 27 Apr 2015 17:28:57 +0000 (17:28 +0000)]
am 2d01066d: Merge "Dissociate uses with environment uses."

* commit '2d01066db24c19f9384f50ff71806cbb4835c7f9':
  Dissociate uses with environment uses.

9 years agoMerge "Dissociate uses with environment uses."
Nicolas Geoffray [Mon, 27 Apr 2015 17:12:10 +0000 (17:12 +0000)]
Merge "Dissociate uses with environment uses."

9 years agoam 295dda50: Merge "Quick: Rely on inferred types in GVN/LVN/DCE."
Vladimir Marko [Mon, 27 Apr 2015 17:09:36 +0000 (17:09 +0000)]
am 295dda50: Merge "Quick: Rely on inferred types in GVN/LVN/DCE."

* commit '295dda5066dfeb5bed88a4a484268f94b060c7fb':
  Quick: Rely on inferred types in GVN/LVN/DCE.

9 years agoMerge "Quick: Rely on inferred types in GVN/LVN/DCE."
Vladimir Marko [Mon, 27 Apr 2015 16:53:25 +0000 (16:53 +0000)]
Merge "Quick: Rely on inferred types in GVN/LVN/DCE."

9 years agoDissociate uses with environment uses.
Nicolas Geoffray [Mon, 27 Apr 2015 15:58:06 +0000 (16:58 +0100)]
Dissociate uses with environment uses.

They are most of the times in the way when iterating. They
also complicate the logic of (future) back edge uses.

Change-Id: I152595d9913073fe901b267ca623fa0fe7432484

9 years agoam d14438f0: Merge "ART: Simplify Ifs with BooleanNot condition"
David Brazdil [Mon, 27 Apr 2015 16:15:52 +0000 (16:15 +0000)]
am d14438f0: Merge "ART: Simplify Ifs with BooleanNot condition"

* commit 'd14438f0c5071962be7fab572b54687d32d9d087':
  ART: Simplify Ifs with BooleanNot condition

9 years agoMerge "ART: Simplify Ifs with BooleanNot condition"
David Brazdil [Mon, 27 Apr 2015 16:02:02 +0000 (16:02 +0000)]
Merge "ART: Simplify Ifs with BooleanNot condition"

9 years agoART: Simplify Ifs with BooleanNot condition
David Brazdil [Mon, 27 Apr 2015 12:54:09 +0000 (13:54 +0100)]
ART: Simplify Ifs with BooleanNot condition

If statements with negated condition can be simplified by removing the
negation and swapping the true and false branches.

Change-Id: I197afbc79fb7344d73b7b85d3611e7ca2519717f

9 years agoQuick: Avoid unnecessary GVN work in release builds.
Vladimir Marko [Sat, 25 Apr 2015 16:00:45 +0000 (17:00 +0100)]
Quick: Avoid unnecessary GVN work in release builds.

In GVN's post-processing phase, compare LVNs only in debug
builds as they should be equal anyway.

Remove the Gate() from GVN cleanup pass and remove the
DCHECK() from MIRGraph::GlobalValueNumberingCleanup()
to make it a no-op if the GVN didn't run.

Bug: 16398693
Change-Id: Ia4f1e7e3ecf12d0305966c86e0e7dbae61dab0b7

9 years agoam a0ee8622: Merge "Add support for caching float and double constants."
Nicolas Geoffray [Mon, 27 Apr 2015 14:25:00 +0000 (14:25 +0000)]
am a0ee8622: Merge "Add support for caching float and double constants."

* commit 'a0ee862288b702468f8c2b6d0ad0f1c61be0b483':
  Add support for caching float and double constants.

9 years agoMerge "Add support for caching float and double constants."
Nicolas Geoffray [Mon, 27 Apr 2015 14:12:24 +0000 (14:12 +0000)]
Merge "Add support for caching float and double constants."

9 years agoAdd support for caching float and double constants.
Nicolas Geoffray [Mon, 27 Apr 2015 08:53:46 +0000 (08:53 +0000)]
Add support for caching float and double constants.

Change-Id: Ib5205bad1006bc5e3c9cc86bc82a6b4b1ce9bef9

9 years agoam 0fbfe6f9: Merge "ART: Fix removing a Phi with RemoveInstruction"
David Brazdil [Mon, 27 Apr 2015 12:59:08 +0000 (12:59 +0000)]
am 0fbfe6f9: Merge "ART: Fix removing a Phi with RemoveInstruction"

* commit '0fbfe6f92a2481daf914043262b5854e65d8c3cc':
  ART: Fix removing a Phi with RemoveInstruction

9 years agoMerge "ART: Fix removing a Phi with RemoveInstruction"
David Brazdil [Mon, 27 Apr 2015 12:42:59 +0000 (12:42 +0000)]
Merge "ART: Fix removing a Phi with RemoveInstruction"

9 years agoART: Fix removing a Phi with RemoveInstruction
David Brazdil [Mon, 27 Apr 2015 12:28:57 +0000 (13:28 +0100)]
ART: Fix removing a Phi with RemoveInstruction

Boolean simplifier might attempt to remove a Phi from the Instruction
list.

Change-Id: I698cc616549bd88dac96395cb2e5d09b5433d157

9 years agoQuick: Rely on inferred types in GVN/LVN/DCE.
Vladimir Marko [Fri, 24 Apr 2015 18:03:51 +0000 (19:03 +0100)]
Quick: Rely on inferred types in GVN/LVN/DCE.

Fix LVN::GetEndingVregValueNumberImpl() to check whether
the requested wideness matches the SSA register type as
recorded in MIRGraph::reg_location_.

Add DCHECKs that the wideness matches when getting/setting
sreg values, update Phi handling in LVN/DCE to use the type
from MIRGraph::reg_location_ instead of determining it from
the sreg value maps which would now trigger the DCHECKs.
Update tests to initialize MIRGraph::reg_location_.

Reenable DCE.

Bug: 20572509
Change-Id: I1a4d4e32cd57807ca8b56d2f3ed5e1288660b82e

9 years agoam 76bf84a1: Merge "BCE: don\'t add deoptimization if the loop has early exit."
Mingyao Yang [Mon, 27 Apr 2015 07:15:02 +0000 (07:15 +0000)]
am 76bf84a1: Merge "BCE: don\'t add deoptimization if the loop has early exit."

* commit '76bf84a196576f902a76a1165516a49dac15856f':
  BCE: don't add deoptimization if the loop has early exit.

9 years agoam f382eff1: Merge "Deoptimization-based BCE for unknown loop bounds."
Mingyao Yang [Mon, 27 Apr 2015 07:15:01 +0000 (07:15 +0000)]
am f382eff1: Merge "Deoptimization-based BCE for unknown loop bounds."

* commit 'f382eff130a5d90c34b3f09c4c61cb50cacd4c54':
  Deoptimization-based BCE for unknown loop bounds.

9 years agoam adf15974: Merge "Revert "[optimizing] Replace FP divide by power of 2""
Nicolas Geoffray [Mon, 27 Apr 2015 07:14:59 +0000 (07:14 +0000)]
am adf15974: Merge "Revert "[optimizing] Replace FP divide by power of 2""

* commit 'adf15974e0a0a2b0e6dc311ff5701b87ca15964a':
  Revert "[optimizing] Replace FP divide by power of 2"

9 years agoam 5ff903a5: Merge "[optimizing] Replace FP divide by power of 2"
Nicolas Geoffray [Mon, 27 Apr 2015 07:14:56 +0000 (07:14 +0000)]
am 5ff903a5: Merge "[optimizing] Replace FP divide by power of 2"

* commit '5ff903a589af282f516bbcf6844ff2656ce76b02':
  [optimizing] Replace FP divide by power of 2

9 years agoMerge "BCE: don't add deoptimization if the loop has early exit."
Mingyao Yang [Mon, 27 Apr 2015 01:41:58 +0000 (01:41 +0000)]
Merge "BCE: don't add deoptimization if the loop has early exit."

9 years agoBCE: don't add deoptimization if the loop has early exit.
Mingyao Yang [Mon, 27 Apr 2015 01:15:30 +0000 (18:15 -0700)]
BCE: don't add deoptimization if the loop has early exit.

Also make the way to detect loop_body_successor to be
more accurate.

Change-Id: I29680f93396383c478a8f40ad28735e4f3f07c1b

9 years agoMerge "Deoptimization-based BCE for unknown loop bounds."
Mingyao Yang [Sun, 26 Apr 2015 18:23:01 +0000 (18:23 +0000)]
Merge "Deoptimization-based BCE for unknown loop bounds."

9 years agoDeoptimization-based BCE for unknown loop bounds.
Mingyao Yang [Mon, 13 Apr 2015 23:46:28 +0000 (16:46 -0700)]
Deoptimization-based BCE for unknown loop bounds.

For loop like:
  for (int i = start; i < end; i++) {
    array[i] = 1;
  }
We add the following to the loop pre-header:
  if (start < 0) deoptimize();
  if (end > array.length) deoptimize();
Then we can eliminate bounds-check of array[i] inside the loop.

We also take care of indexing with induction variable plus some offsets,
like array[i - 1]/array[i + 1] inside the loop, and adjust the condition
for deoptimization accordingly.

Change-Id: I9e24c6b5e134ff95eff5b5605ff8f95d6546616f

9 years agoMerge "Revert "[optimizing] Replace FP divide by power of 2""
Nicolas Geoffray [Sun, 26 Apr 2015 16:43:18 +0000 (16:43 +0000)]
Merge "Revert "[optimizing] Replace FP divide by power of 2""

9 years agoRevert "[optimizing] Replace FP divide by power of 2"
Nicolas Geoffray [Sun, 26 Apr 2015 16:43:00 +0000 (16:43 +0000)]
Revert "[optimizing] Replace FP divide by power of 2"

Fails compiling docs.

This reverts commit b0bd8915cb257cdaf46ba663c450a6543bca75af.

Change-Id: I47d32525c83a73118e2163eb58c68bbb7a28bb38

9 years agoMerge "[optimizing] Replace FP divide by power of 2"
Nicolas Geoffray [Sun, 26 Apr 2015 15:05:28 +0000 (15:05 +0000)]
Merge "[optimizing] Replace FP divide by power of 2"

9 years agoam 2c31b5ac: Merge "ART: Fix Trace types, check minimum buf size"
Andreas Gampe [Sun, 26 Apr 2015 01:00:42 +0000 (01:00 +0000)]
am 2c31b5ac: Merge "ART: Fix Trace types, check minimum buf size"

* commit '2c31b5ac1d45f2f96932c8ff0d299abb2dbde862':
  ART: Fix Trace types, check minimum buf size

9 years agoam 711d8400: Merge "ART: Fix addpd opcode, add Quick x86 assembler test"
Andreas Gampe [Sun, 26 Apr 2015 01:00:40 +0000 (01:00 +0000)]
am 711d8400: Merge "ART: Fix addpd opcode, add Quick x86 assembler test"

* commit '711d84008f5b3cda849611102118316c29a75b16':
  ART: Fix addpd opcode, add Quick x86 assembler test

9 years agoMerge "ART: Fix Trace types, check minimum buf size"
Andreas Gampe [Sun, 26 Apr 2015 00:41:53 +0000 (00:41 +0000)]
Merge "ART: Fix Trace types, check minimum buf size"

9 years agoMerge "ART: Fix addpd opcode, add Quick x86 assembler test"
Andreas Gampe [Sun, 26 Apr 2015 00:39:03 +0000 (00:39 +0000)]
Merge "ART: Fix addpd opcode, add Quick x86 assembler test"

9 years agoART: Fix Trace types, check minimum buf size
Andreas Gampe [Sat, 25 Apr 2015 21:44:29 +0000 (14:44 -0700)]
ART: Fix Trace types, check minimum buf size

Also make streaming mode adhere to the given buffer (and fix the
case where the buffer is too small for a packet). This is important
to not lose too much tracing information when the runtime is destroyed
with an unflushed buffer.

Change-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7

9 years agoART: Fix addpd opcode, add Quick x86 assembler test
Chao-ying Fu [Wed, 22 Apr 2015 17:51:21 +0000 (10:51 -0700)]
ART: Fix addpd opcode, add Quick x86 assembler test

This patch fixes the addpd opcode that may be used by vectorizations,
and adds an assembler test for the Quick x86 assembler, currently
lightly testing addpd, subpd and mulpd.

Change-Id: I29455a86212829c75fd75737679280f167da7b5b
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
9 years agoam 3f4fa70a: Merge "ART: Test for GVN skipping"
Andreas Gampe [Sat, 25 Apr 2015 23:04:57 +0000 (23:04 +0000)]
am 3f4fa70a: Merge "ART: Test for GVN skipping"

* commit '3f4fa70a251443b7e35ee0464120e53daf4ae9c1':
  ART: Test for GVN skipping

9 years agoMerge "ART: Test for GVN skipping"
Andreas Gampe [Sat, 25 Apr 2015 22:59:23 +0000 (22:59 +0000)]
Merge "ART: Test for GVN skipping"

9 years agoART: Test for GVN skipping
Andreas Gampe [Sat, 25 Apr 2015 22:27:38 +0000 (15:27 -0700)]
ART: Test for GVN skipping

Add a deeply nested loop to test 090 that will make the GVN skip.

Change-Id: I7c160293e76fd858c550f792b357eaaccdde77a9

9 years agoam 0cd91f05: Merge "Move Class.newInstance to native"
Mathieu Chartier [Sat, 25 Apr 2015 22:43:52 +0000 (22:43 +0000)]
am 0cd91f05: Merge "Move Class.newInstance to native"

* commit '0cd91f05f11ccf7d55bf744053b0aae5e0e7aa36':
  Move Class.newInstance to native

9 years agoMerge "Move Class.newInstance to native"
Mathieu Chartier [Sat, 25 Apr 2015 22:36:26 +0000 (22:36 +0000)]
Merge "Move Class.newInstance to native"

9 years agoam 18772f08: Merge "ART: Fix missing dependency between GVN and other passes"
Andreas Gampe [Sat, 25 Apr 2015 22:27:13 +0000 (22:27 +0000)]
am 18772f08: Merge "ART: Fix missing dependency between GVN and other passes"

* commit '18772f087eb0eb14ba816ed088107c43958eb8c3':
  ART: Fix missing dependency between GVN and other passes