OSDN Git Service

android-x86/art.git
8 years agoMerge "Fix bogus interaction between code cache and instrumentation."
Nicolas Geoffray [Tue, 1 Mar 2016 18:51:27 +0000 (18:51 +0000)]
Merge "Fix bogus interaction between code cache and instrumentation."

8 years agoFix bogus interaction between code cache and instrumentation.
Nicolas Geoffray [Tue, 1 Mar 2016 18:43:46 +0000 (18:43 +0000)]
Fix bogus interaction between code cache and instrumentation.

Change-Id: Icc314089ec1a05248b8994476d478a543e629e4d

8 years agoMerge "Revert "Revert "Fast ART x86_64 interpretator"""
Bill Buzbee [Tue, 1 Mar 2016 18:19:42 +0000 (18:19 +0000)]
Merge "Revert "Revert "Fast ART x86_64 interpretator"""

8 years agoMerge "Fixed bug on incorrectly revisiting same block."
Aart Bik [Tue, 1 Mar 2016 17:18:37 +0000 (17:18 +0000)]
Merge "Fixed bug on incorrectly revisiting same block."

8 years agoMerge "x86 Fast Interpreter: Fix CFI"
Bill Buzbee [Tue, 1 Mar 2016 15:35:07 +0000 (15:35 +0000)]
Merge "x86 Fast Interpreter: Fix CFI"

8 years agoMerge "Use the interpreter as a heartbeat for the JIT."
Nicolas Geoffray [Tue, 1 Mar 2016 15:17:42 +0000 (15:17 +0000)]
Merge "Use the interpreter as a heartbeat for the JIT."

8 years agoMerge "Fix the signature of the IndexOf entry point."
Roland Levillain [Tue, 1 Mar 2016 14:38:42 +0000 (14:38 +0000)]
Merge "Fix the signature of the IndexOf entry point."

8 years agoUse the interpreter as a heartbeat for the JIT.
Nicolas Geoffray [Mon, 29 Feb 2016 15:35:39 +0000 (15:35 +0000)]
Use the interpreter as a heartbeat for the JIT.

When doing a partial code cache collection, update all entrypoints to
interpreter, so that the next full collection will remove code
that wasn't executed during that window.

bug:27398183
bug:23128949
bug:26846185

Change-Id: I4423f5c4810dac183dc8973078bf218818745e80

8 years agoMerge "Dump more information to diagnose problem."
Nicolas Geoffray [Tue, 1 Mar 2016 13:31:16 +0000 (13:31 +0000)]
Merge "Dump more information to diagnose problem."

8 years agoMerge "Optimizing: Do not depend on sharpening in test 577"
Roland Levillain [Tue, 1 Mar 2016 13:19:49 +0000 (13:19 +0000)]
Merge "Optimizing: Do not depend on sharpening in test 577"

8 years agoDump more information to diagnose problem.
Nicolas Geoffray [Tue, 1 Mar 2016 12:18:47 +0000 (12:18 +0000)]
Dump more information to diagnose problem.

bug:27424509
Change-Id: Id502cf408a7f117a2a891534f5c999d60f9370b1

8 years agox86 Fast Interpreter: Fix CFI
Serguei Katkov [Tue, 1 Mar 2016 09:53:22 +0000 (15:53 +0600)]
x86 Fast Interpreter: Fix CFI

With this change gdb can fall through x86 Fast Interpreter frame.

Change-Id: Ia5efe0059ecbdb09491d37ab47367e222d29f1d3
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
8 years agoMerge "Improve documentation about StringFactory.newStringFromChars."
Roland Levillain [Tue, 1 Mar 2016 10:24:08 +0000 (10:24 +0000)]
Merge "Improve documentation about StringFactory.newStringFromChars."

8 years agoRevert "Revert "Fast ART x86_64 interpretator""
Serguei Katkov [Tue, 1 Mar 2016 10:10:48 +0000 (16:10 +0600)]
Revert "Revert "Fast ART x86_64 interpretator""

CFI is updated. Now unwinder can fall through fast interpreter.

This reverts commit c4a575f58007036ff3408b15c2ec48108add20f3.

Change-Id: Ibb0a2ef41e4d02ab0b4ecc4f030ba0e72971aa9d
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
8 years agoMerge "Revert "Disable symbolizing traces on volantis.""
Nicolas Geoffray [Tue, 1 Mar 2016 09:30:56 +0000 (09:30 +0000)]
Merge "Revert "Disable symbolizing traces on volantis.""

8 years agoRevert "Disable symbolizing traces on volantis."
Nicolas Geoffray [Tue, 1 Mar 2016 09:28:26 +0000 (09:28 +0000)]
Revert "Disable symbolizing traces on volantis."

Devices have been updated to M.

This reverts commit 95303c682bba971128950ef82c8f6c247917ffff.

Change-Id: Ib6620f88b939700e53af87d2003ea8bbe222e1bc

8 years agoMerge "Disable flaky 130-hprof test."
Nicolas Geoffray [Tue, 1 Mar 2016 09:10:43 +0000 (09:10 +0000)]
Merge "Disable flaky 130-hprof test."

8 years agoDisable flaky 130-hprof test.
Nicolas Geoffray [Tue, 1 Mar 2016 09:09:35 +0000 (09:09 +0000)]
Disable flaky 130-hprof test.

bug:27337759
Change-Id: I167bd42ef539bce46978b07f755efd57bc61b2f2

8 years agoFixed bug on incorrectly revisiting same block.
Aart Bik [Mon, 29 Feb 2016 21:56:44 +0000 (13:56 -0800)]
Fixed bug on incorrectly revisiting same block.

Rationale:
Aart's fuzz tester found this particular bug, where
revisiting a block (after dynamic bce) would cause
static array length based bce to feed into itself
and thus incorrectly remove a needed bounds check.

bug=27376274

Change-Id: I9163f283af355d444b4cec707f194fe2b67c2572

8 years agoMerge "[MIPS] Add Fast Art interpreter for Mips32."
Bill Buzbee [Mon, 29 Feb 2016 18:54:10 +0000 (18:54 +0000)]
Merge "[MIPS] Add Fast Art interpreter for Mips32."

8 years agoMerge "Revert "Revert "Improve immune spaces logic"""
Mathieu Chartier [Mon, 29 Feb 2016 18:42:22 +0000 (18:42 +0000)]
Merge "Revert "Revert "Improve immune spaces logic"""

8 years agoRevert "Revert "Improve immune spaces logic""
Mathieu Chartier [Sun, 28 Feb 2016 21:10:58 +0000 (13:10 -0800)]
Revert "Revert "Improve immune spaces logic""

Test was flaky due to missing guard page at the end of the region.

Bug: 27136196

This reverts commit 07dbbca0b42cb8da1811de8209b4a7d4becfc7b2.

Change-Id: I4eb345f34e66b8684cd71a7897e3a8caa2f84140

8 years agoFix the signature of the IndexOf entry point.
Roland Levillain [Mon, 29 Feb 2016 18:26:54 +0000 (18:26 +0000)]
Fix the signature of the IndexOf entry point.

The IndexOf entry point was declared as taking four
arguments (void*, uint32_t, uint32_t, uint32_t) whereas all
actual implementations use three arguments (void*, uint32_t,
uint32_t).  As that fourth argument is not documented, drop
it from the intrinsic declaration to have it match the
implementations.

Change-Id: I65d747033192025ccd2b9a5e8f8ed05b77a21941

8 years agoImprove documentation about StringFactory.newStringFromChars.
Roland Levillain [Mon, 29 Feb 2016 16:23:48 +0000 (16:23 +0000)]
Improve documentation about StringFactory.newStringFromChars.

Make it clear that the native method requires its third
argument to be non-null, and therefore that the intrinsics
do not need a null check for it.

Bug: 27378573
Change-Id: Id2f78ceb0f7674f1066bc3f216b738358ca25542

8 years agoMerge "Bug fix for polymorphic inlining."
Nicolas Geoffray [Mon, 29 Feb 2016 14:30:18 +0000 (14:30 +0000)]
Merge "Bug fix for polymorphic inlining."

8 years agoMerge "Cleanup polymorphic inlining to the same target."
Nicolas Geoffray [Mon, 29 Feb 2016 14:30:00 +0000 (14:30 +0000)]
Merge "Cleanup polymorphic inlining to the same target."

8 years agoCleanup polymorphic inlining to the same target.
Nicolas Geoffray [Thu, 25 Feb 2016 16:17:54 +0000 (16:17 +0000)]
Cleanup polymorphic inlining to the same target.

- Don't do expensive lookups, just fetch the ArtMethods from the
  imtable or vtable.
- Don't perform the optimization if we may end up in the conflicting
  trampoline.

bug:27398183

Change-Id: I327c9f7c3a85d570a057ff8f18602e8e52402fdc

8 years agoBug fix for polymorphic inlining.
Nicolas Geoffray [Mon, 29 Feb 2016 11:46:58 +0000 (11:46 +0000)]
Bug fix for polymorphic inlining.

The code used to wrongly propagate try/catch information to
new blocks. Since it has the same logic as Hraph::InlineInto,
extract the code that updates loop and try/catch information
to blocks to a shared method.

bug:27330865
bug:27372101
bug:27360329

Change-Id: I4386f724d8d412bde5bcc04fda6955bc3bacf5a9

8 years agoOptimizing: Do not depend on sharpening in test 577
Goran Jakovljevic [Mon, 29 Feb 2016 11:15:34 +0000 (12:15 +0100)]
Optimizing: Do not depend on sharpening in test 577

The sharpening may or may not remove the ArtMethod*
parameter, so the test must not depend on its absence.
This fixes the test 577 checker test on mips/mips64.

Change-Id: I01a2fc1bd2755804326a2ac284ee81e99fc91aa6

8 years agoMerge "Disable symbolizing traces on volantis."
Nicolas Geoffray [Mon, 29 Feb 2016 09:49:55 +0000 (09:49 +0000)]
Merge "Disable symbolizing traces on volantis."

8 years agoDisable symbolizing traces on volantis.
Nicolas Geoffray [Mon, 29 Feb 2016 09:35:26 +0000 (09:35 +0000)]
Disable symbolizing traces on volantis.

Change-Id: I1ba6b5a173e77e635d721dea8433cfcb8b0b787b

8 years agoMerge "Revert "Improve immune spaces logic""
Nicolas Geoffray [Sat, 27 Feb 2016 11:30:49 +0000 (11:30 +0000)]
Merge "Revert "Improve immune spaces logic""

8 years agoRevert "Improve immune spaces logic"
Nicolas Geoffray [Sat, 27 Feb 2016 11:30:25 +0000 (11:30 +0000)]
Revert "Improve immune spaces logic"

test is flaky. For example:

[ RUN      ] ImmuneSpacesTest.MultiImage
art/runtime/gc/collector/immune_spaces_test.cc:351: Failure
Value of: space5->Limit()
  Actual: 0xb6d72000
Expected: reinterpret_cast<uint8_t*>(spaces.GetLargestImmuneRegion().End())
Which is: 0xb6d93000
[  FAILED  ] ImmuneSpacesTest.MultiImage (1076 ms)

Bug: 27136196

This reverts commit 17b8bce064fe4c0b29117abe489b7f8c2c950d43.

Change-Id: I9168421dd6ebabc271ed5c2cdbc5a27c211dcf5a

8 years agoMerge "Improve immune spaces logic"
Mathieu Chartier [Sat, 27 Feb 2016 01:22:19 +0000 (01:22 +0000)]
Merge "Improve immune spaces logic"

8 years agoImprove immune spaces logic
Mathieu Chartier [Tue, 23 Feb 2016 03:32:16 +0000 (19:32 -0800)]
Improve immune spaces logic

We now properly include the largest continuous region with the most
image bytes. Oat bytes are considered as part of the region but are
not counted when comparing. This can result in more image bytes in
cases where large oat files were previously included for the immune
region.

Also added handling for adjacent oat files:
[image][image][oat][oat][space] will now properly be a single region.

Bug: 27136196
Change-Id: If2c002176dd32122e320e8a94551df46bd95256a

8 years agoMerge "ART: Add unstarted-runtime functions"
Andreas Gampe [Fri, 26 Feb 2016 23:44:02 +0000 (23:44 +0000)]
Merge "ART: Add unstarted-runtime functions"

8 years agoART: Add unstarted-runtime functions
Andreas Gampe [Mon, 22 Feb 2016 18:03:12 +0000 (10:03 -0800)]
ART: Add unstarted-runtime functions

Add more functions to allow compile-time initialization of
code.

Bug: 27248115

(cherry picked from commit 0866f4ed6338faa4a193b7e819fc7cd72bd7b0ae)

Change-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985

8 years agoMerge "Support new JDWP InterfaceType.InvokeMethod command"
Alex Light [Fri, 26 Feb 2016 23:35:49 +0000 (23:35 +0000)]
Merge "Support new JDWP InterfaceType.InvokeMethod command"

8 years agoMerge "Add and use loaded class profiling"
Mathieu Chartier [Fri, 26 Feb 2016 22:23:38 +0000 (22:23 +0000)]
Merge "Add and use loaded class profiling"

8 years agoAdd and use loaded class profiling
Mathieu Chartier [Thu, 10 Dec 2015 00:38:30 +0000 (16:38 -0800)]
Add and use loaded class profiling

Class profiling is a way to keep track of which classes are resolved.
From here the compiler can use this information to generate a smaller
app image.

TODO: Add tests for profile stuff.

Bug: 22858531

(cherry picked from commit 8913fc1a27df8cf3b37fd99e94d87f290591328e)

Change-Id: Ifcd09230cbdc266305bc1247e0d31e7920eb353e

8 years agoMerge "Assembly TLAB allocation fast path for arm."
Hiroshi Yamauchi [Fri, 26 Feb 2016 20:03:27 +0000 (20:03 +0000)]
Merge "Assembly TLAB allocation fast path for arm."

8 years agoMerge "Add JNI tests for lambdas"
Alex Light [Fri, 26 Feb 2016 19:02:32 +0000 (19:02 +0000)]
Merge "Add JNI tests for lambdas"

8 years agoMerge "Implement fp to bits methods as intrinsics."
Aart Bik [Fri, 26 Feb 2016 18:27:29 +0000 (18:27 +0000)]
Merge "Implement fp to bits methods as intrinsics."

8 years agoAdd JNI tests for lambdas
Alex Light [Fri, 26 Feb 2016 00:13:54 +0000 (16:13 -0800)]
Add JNI tests for lambdas

Bug: 27259142

Change-Id: I2a1b31db85dc487c1e6a62609d4497c3a4d4d3a6

8 years agoImplement fp to bits methods as intrinsics.
Aart Bik [Thu, 25 Feb 2016 19:32:32 +0000 (11:32 -0800)]
Implement fp to bits methods as intrinsics.

Rationale:
Better optimization, better performance.

Results on libcore benchmark:

Most gain is from moving the invariant call out of the loop
after we detect everything is a side-effect free intrinsic.
But generated code in general case is much cleaner too.

Before:
timeFloatToIntBits() in 181 ms.
timeFloatToRawIntBits() in 35 ms.
timeDoubleToLongBits() in 208 ms.
timeDoubleToRawLongBits() in 35 ms.

After:
timeFloatToIntBits() in 36 ms.
timeFloatToRawIntBits() in 35 ms.
timeDoubleToLongBits() in 35 ms.
timeDoubleToRawLongBits() in 34 ms.

bug=11548336

Change-Id: I6e001bd3708e800bd75a82b8950fb3a0fc01766e

8 years agoMerge "Optimizing: Reduce memory usage of HInstructions."
Vladimir Marko [Fri, 26 Feb 2016 16:39:57 +0000 (16:39 +0000)]
Merge "Optimizing: Reduce memory usage of HInstructions."

8 years agoOptimizing: Reduce memory usage of HInstructions.
Vladimir Marko [Thu, 25 Feb 2016 11:37:38 +0000 (11:37 +0000)]
Optimizing: Reduce memory usage of HInstructions.

Pack narrow fields and flags into a single 32-bit field.

Change-Id: Ib2f7abf987caee0339018d21f0d498f8db63542d

8 years agoMerge "Revert "Revert "ART: Support interpreter switching in x86 mterp"""
Bill Buzbee [Fri, 26 Feb 2016 14:10:54 +0000 (14:10 +0000)]
Merge "Revert "Revert "ART: Support interpreter switching in x86 mterp"""

8 years agoMerge "Optimizing: Add ARM and ARM64 intrinsics support for StringGetCharsNoCheck"
Nicolas Geoffray [Fri, 26 Feb 2016 13:43:56 +0000 (13:43 +0000)]
Merge "Optimizing: Add ARM and ARM64 intrinsics support for StringGetCharsNoCheck"

8 years agoMerge "Revert "Fast ART x86_64 interpretator""
Nicolas Geoffray [Fri, 26 Feb 2016 08:57:18 +0000 (08:57 +0000)]
Merge "Revert "Fast ART x86_64 interpretator""

8 years agoRevert "Fast ART x86_64 interpretator"
Nicolas Geoffray [Fri, 26 Feb 2016 08:56:45 +0000 (08:56 +0000)]
Revert "Fast ART x86_64 interpretator"

Fails gcstress configuration.

This reverts commit c669beb798e273dd3d44cfa6a7a95ff90eba7209.

Change-Id: Ifac92471f91a116fc271d0dde8356fbbb0a08048

8 years ago[MIPS] Add Fast Art interpreter for Mips32.
Douglas Leung [Fri, 26 Feb 2016 04:05:47 +0000 (20:05 -0800)]
[MIPS] Add Fast Art interpreter for Mips32.

Change-Id: I6b9714dc8c01b8c9080bcba175faec1d2de08f8f

8 years agoOptimizing: Add ARM and ARM64 intrinsics support for StringGetCharsNoCheck
Tim Zhang [Tue, 19 Jan 2016 15:39:24 +0000 (23:39 +0800)]
Optimizing: Add ARM and ARM64 intrinsics support for StringGetCharsNoCheck

This change refers to x86 implementation of StringGetCharsNoCheck and
arm implementation of SystemArrayCopy.

Change-Id: I1cb86854a2a8fa8736af7726b8efacd00d416f6f

8 years agoMerge "Add lz4hc image compression format"
Mathieu Chartier [Fri, 26 Feb 2016 00:44:06 +0000 (00:44 +0000)]
Merge "Add lz4hc image compression format"

8 years agoMerge "Fast ART x86_64 interpretator"
Bill Buzbee [Thu, 25 Feb 2016 23:18:19 +0000 (23:18 +0000)]
Merge "Fast ART x86_64 interpretator"

8 years agoAdd lz4hc image compression format
Mathieu Chartier [Thu, 25 Feb 2016 21:52:10 +0000 (13:52 -0800)]
Add lz4hc image compression format

Smaller than lz4 and decompresses at the same speed. Compression is
a bit slower.

Example saves on old FB APK:
Uncompressed: 44748800 bytes
LZ4: 12443648 bytes
LZ4HC: 11055104 bytes

Generating the image slows down by ~1s per 20MB of image due to
slower compression. Decompression is about the same speed but there
should be a slight speedup since less data needs to be read from
flash.

Added test.

Bug: 22858531

Change-Id: Ib2704305b9bec5b0ba3b1e871f59f4eedff330b7

8 years agoAssembly TLAB allocation fast path for arm.
Hiroshi Yamauchi [Fri, 11 Dec 2015 23:46:19 +0000 (15:46 -0800)]
Assembly TLAB allocation fast path for arm.

Speedup (GSS GC with TLAB on N5):
    BinaryTrees:  1872 ->  796 ms (-57%)
    MemAllocTest: 2522 -> 2219 ms (-12%)

Bug: 9986565
Change-Id: Icb9d1259461f3abe83a4a82c8aff911937eaf57d

8 years agoMerge "Add a decompression scoped timing for image loading"
Mathieu Chartier [Thu, 25 Feb 2016 21:55:13 +0000 (21:55 +0000)]
Merge "Add a decompression scoped timing for image loading"

8 years agoMerge "AOT compile framework code as non-debuggable"
Mingyao Yang [Thu, 25 Feb 2016 20:55:22 +0000 (20:55 +0000)]
Merge "AOT compile framework code as non-debuggable"

8 years agoAdd a decompression scoped timing for image loading
Mathieu Chartier [Thu, 25 Feb 2016 20:28:40 +0000 (12:28 -0800)]
Add a decompression scoped timing for image loading

Shows up in systrace.

Bug: 22858531
Change-Id: Ic165cd0106dd019c002b600d37560b71b4e351d1

8 years agoMerge "Add StrictMath.round tests for large integers."
Vladimir Marko [Thu, 25 Feb 2016 20:26:31 +0000 (20:26 +0000)]
Merge "Add StrictMath.round tests for large integers."

8 years agoMerge "Recognize for (int i = 0; i != x.length; i++) loops"
Aart Bik [Thu, 25 Feb 2016 18:48:50 +0000 (18:48 +0000)]
Merge "Recognize for (int i = 0; i != x.length; i++) loops"

8 years agoRevert "Revert "ART: Support interpreter switching in x86 mterp""
Bill Buzbee [Thu, 25 Feb 2016 17:37:46 +0000 (17:37 +0000)]
Revert "Revert "ART: Support interpreter switching in x86 mterp""

Fixes the invoke template.  Previously, it was permitting
an interpreter switch *before* advancing the Dalvik PC.
This meant that on a switch, the invoke would be interpreted
twice.

This reverts commit a14bf4460268064e0adc4bb210d237209be33eaf.

Change-Id: I285d19077c8dd58ce607a4c42ed20549942fab45

8 years agoMerge "Disable test 097-duplicate-method for investigation"
Sebastien Hertz [Thu, 25 Feb 2016 18:36:09 +0000 (18:36 +0000)]
Merge "Disable test 097-duplicate-method for investigation"

8 years agoDisable test 097-duplicate-method for investigation
Sebastien Hertz [Thu, 25 Feb 2016 17:50:23 +0000 (18:50 +0100)]
Disable test 097-duplicate-method for investigation

Broekn by latest Jack release (1.2-a19)

Bug: 27358065
Change-Id: Ifd66522bde4c5b93435c6d9ab11ebb407f842df6

8 years agoAdd StrictMath.round tests for large integers.
Vladimir Marko [Thu, 25 Feb 2016 17:50:41 +0000 (17:50 +0000)]
Add StrictMath.round tests for large integers.

This is a follow-up to
    https://android-review.googlesource.com/203175 .

Bug: 27166445
Change-Id: I850999c782017650017fad7e27c83b60b57edaf9

8 years agoSupport new JDWP InterfaceType.InvokeMethod command
Alex Light [Thu, 25 Feb 2016 00:35:59 +0000 (16:35 -0800)]
Support new JDWP InterfaceType.InvokeMethod command

This command is used to invoke static methods in interfaces.

Bug: 27218415

Change-Id: Ie4dc1876a20567240267f309dc18f1aec2c1b4c2

8 years agoMerge "Make sure constantIndexing2 is optimized with DEOPT."
Aart Bik [Thu, 25 Feb 2016 17:38:08 +0000 (17:38 +0000)]
Merge "Make sure constantIndexing2 is optimized with DEOPT."

8 years agoRecognize for (int i = 0; i != x.length; i++) loops
Aart Bik [Wed, 24 Feb 2016 22:17:53 +0000 (14:17 -0800)]
Recognize for (int i = 0; i != x.length; i++) loops

Rationale:
Idiom occurs in real-life and is very straightforwardly
recognized by existing induction/range machinery.

Change-Id: I965a16e9de72f3523ea5023d30ed1c4e47ed5010

8 years agoMerge "Dump the number of OSR compiled code."
Nicolas Geoffray [Thu, 25 Feb 2016 16:46:48 +0000 (16:46 +0000)]
Merge "Dump the number of OSR compiled code."

8 years agoMerge "Optimizing: ARM64 negated bitwise operations simplification"
Roland Levillain [Thu, 25 Feb 2016 16:36:21 +0000 (16:36 +0000)]
Merge "Optimizing: ARM64 negated bitwise operations simplification"

8 years agoOptimizing: ARM64 negated bitwise operations simplification
Kevin Brodsky [Mon, 11 Jan 2016 13:43:31 +0000 (13:43 +0000)]
Optimizing: ARM64 negated bitwise operations simplification

Use negated instructions on ARM64 to replace [bitwise operation + not]
patterns, that is:
a & ~b (BIC)
a | ~b (ORN)
a ^ ~b (EON)

The simplification only happens if the Not is only used by the bitwise
operation. It does not happen if both inputs are Not's (this should be
handled by a generic simplification applying De Morgan's laws).

Change-Id: I0e112b23fd8b8e10f09bfeff5994508a8ff96e9c

8 years agoMerge "ART: Profile all branches for on-stack replacement"
Bill Buzbee [Thu, 25 Feb 2016 15:54:27 +0000 (15:54 +0000)]
Merge "ART: Profile all branches for on-stack replacement"

8 years agoMerge "Verify encoded stack maps in debug builds."
David Srbecky [Thu, 25 Feb 2016 15:45:58 +0000 (15:45 +0000)]
Merge "Verify encoded stack maps in debug builds."

8 years agoMerge "Revert "Revert "ARM/ARM64: Extend support of instruction combining."""
Vladimir Marko [Thu, 25 Feb 2016 15:37:05 +0000 (15:37 +0000)]
Merge "Revert "Revert "ARM/ARM64: Extend support of instruction combining."""

8 years agoMerge "Implement << operator for DexRegisterLocation::Kind."
David Srbecky [Thu, 25 Feb 2016 15:15:58 +0000 (15:15 +0000)]
Merge "Implement << operator for DexRegisterLocation::Kind."

8 years agoVerify encoded stack maps in debug builds.
David Srbecky [Wed, 24 Feb 2016 16:39:26 +0000 (16:39 +0000)]
Verify encoded stack maps in debug builds.

Read all stack map data back after we write it and DCHECK the content.

Change-Id: Ia679594ac9e5805f6d4c56686030af153b45ea8b

8 years agoImplement << operator for DexRegisterLocation::Kind.
David Srbecky [Thu, 25 Feb 2016 13:23:56 +0000 (13:23 +0000)]
Implement << operator for DexRegisterLocation::Kind.

This makes it comparable in DCHECK_EQ and similar methods.

Change-Id: I6b5b237be89325850ae6860d011fd6741189ab01

8 years agoART: Profile all branches for on-stack replacement
buzbee [Wed, 24 Feb 2016 22:24:24 +0000 (14:24 -0800)]
ART: Profile all branches for on-stack replacement

Change the switch, goto and mterp interpreters to profile
not-taken as well as taken branches.  This allows for on-stack
replacement when the cfg has been rearranged such that the loop
header was originally the fallthrough of a Dalvik byte-code branch.

Note that this increases the already-heavy cost of branch profiling.
Measuring on a Nexus 6 using a very branchy benchmark (logic subtest
from Caffeinemark), we see:

            No profiling     Taken only     Taken & not-taken
mterp          9728            3434              2384
C++ goto       3914            2422              2037
C++ switch     2986            2411              2112

As measured, the cost of branch profiling is dominating execution
time.  This will be addressed in follow-up CLs.

Change-Id: Ibc858f317398dd991ed8e4f3c3d72bd4c9a60594

8 years agoMerge "Revert "ART: Support interpreter switching in x86 mterp""
Nicolas Geoffray [Thu, 25 Feb 2016 13:35:36 +0000 (13:35 +0000)]
Merge "Revert "ART: Support interpreter switching in x86 mterp""

8 years agoRevert "ART: Support interpreter switching in x86 mterp"
Nicolas Geoffray [Thu, 25 Feb 2016 13:34:18 +0000 (13:34 +0000)]
Revert "ART: Support interpreter switching in x86 mterp"

Fails:
test-art-host-run-test-ndebug-prebuild-interpreter-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-304-method-tracing32
test-art-host-run-test-ndebug-prebuild-interpreter-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-545-tracing-and-jit32
test-art-host-run-test-ndebug-prebuild-interpreter-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-570-checker-osr32
test-art-host-run-test-ndebug-prebuild-interpreter-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-802-deoptimization32

This reverts commit 4429b110c7b4d9bda2c31b4df257e840831d01f6.

Change-Id: I30c42e22b44bb9c9bbd6efaedbc97516d575bf11

8 years agoDump the number of OSR compiled code.
Nicolas Geoffray [Thu, 25 Feb 2016 13:27:47 +0000 (13:27 +0000)]
Dump the number of OSR compiled code.

Change-Id: I20efc80e8556da8220dab92c3a7947f883d48cf8

8 years agoMerge "Split 530-checker-loops to please our run-test file size limit."
Nicolas Geoffray [Thu, 25 Feb 2016 12:43:58 +0000 (12:43 +0000)]
Merge "Split 530-checker-loops to please our run-test file size limit."

8 years agoMerge "ART: Support interpreter switching in x86 mterp"
Bill Buzbee [Thu, 25 Feb 2016 12:43:23 +0000 (12:43 +0000)]
Merge "ART: Support interpreter switching in x86 mterp"

8 years agoSplit 530-checker-loops to please our run-test file size limit.
Nicolas Geoffray [Thu, 25 Feb 2016 12:40:27 +0000 (12:40 +0000)]
Split 530-checker-loops to please our run-test file size limit.

Change-Id: Ib03303435918b333691625f3999b937072f8ec31

8 years agoMerge "Forgot to initialize JIT memory use fields."
Nicolas Geoffray [Thu, 25 Feb 2016 10:21:34 +0000 (10:21 +0000)]
Merge "Forgot to initialize JIT memory use fields."

8 years agoRevert "Revert "ARM/ARM64: Extend support of instruction combining.""
Artem Udovichenko [Tue, 26 Jan 2016 09:28:31 +0000 (12:28 +0300)]
Revert "Revert "ARM/ARM64: Extend support of instruction combining.""

This reverts commit 6b5afdd144d2bb3bf994240797834b5666b2cf98.

Change-Id: Ic27a10f02e21109503edd64e6d73d1bb0c6a8ac6

8 years agoMerge "Revert "Preload public libraries on Runtime::Start()""
Nicolas Geoffray [Thu, 25 Feb 2016 08:51:04 +0000 (08:51 +0000)]
Merge "Revert "Preload public libraries on Runtime::Start()""

8 years agoRevert "Preload public libraries on Runtime::Start()"
Nicolas Geoffray [Thu, 25 Feb 2016 08:50:50 +0000 (08:50 +0000)]
Revert "Preload public libraries on Runtime::Start()"

Breaks anyone not working on up-to-date devices/trees. I'll work on a revert of the revert.

Bug: http://b/27245894

This reverts commit ea9fc5bd31781fb380ace74ccddf2137c7dcc5d9.

Change-Id: Ie8fc286a64de4db2c905502a528005022803ed94

8 years agoMerge "Revert "Disable test due to toybox update.""
Nicolas Geoffray [Thu, 25 Feb 2016 08:42:33 +0000 (08:42 +0000)]
Merge "Revert "Disable test due to toybox update.""

8 years agoRevert "Disable test due to toybox update."
Nicolas Geoffray [Thu, 25 Feb 2016 08:41:31 +0000 (08:41 +0000)]
Revert "Disable test due to toybox update."

Bug: 26395656

This reverts commit 3e9be9904a7a3dfce076ba64a5f27e87c38e027d.

Change-Id: Ia994d695fdcebf00d6663aec3943539ab1347f87

8 years agoMerge "Preload public libraries on Runtime::Start()"
Dimitry Ivanov [Thu, 25 Feb 2016 01:05:56 +0000 (01:05 +0000)]
Merge "Preload public libraries on Runtime::Start()"

8 years agoPreload public libraries on Runtime::Start()
Dimitry Ivanov [Mon, 22 Feb 2016 22:26:48 +0000 (14:26 -0800)]
Preload public libraries on Runtime::Start()

Preloading public libraries on Runtime::Start()
instead of doing it in native_loader c-tor
ensures that the libraries are loaded only for
binaries that are using Android Runtime, and not
just linking against libandroid_runtime or libart.

Loading public libraries on Runtime::Start()
also helps some apps to save startup time and space
by ensuring that all NDK libraries are loaded
and ready to use.

Bug: http://b/27245894
Change-Id: I15679a72450f3d18a7dd503d0ae977cebcfd7f52
(cherry picked from commit 7bca74e53d3665bcd243d4e0277f6561c0c80271)

8 years agoMerge "Avoid single expensive test in 530-checker-loops."
Aart Bik [Wed, 24 Feb 2016 23:35:08 +0000 (23:35 +0000)]
Merge "Avoid single expensive test in 530-checker-loops."

8 years agoAvoid single expensive test in 530-checker-loops.
Aart Bik [Wed, 24 Feb 2016 23:18:55 +0000 (15:18 -0800)]
Avoid single expensive test in 530-checker-loops.

Rationale:
All tests run in "no time", except one instance
that iterates over full iteration space before
going OOB. Protect that instance with a HEAVY
boolean to avoid timing out in interpretation mode.

Impact on interpreted runtime:

1m6.936s   ->   0m0.031s

Change-Id: I413939b683c76b7be0f1259da8533d4b069eac6d

8 years agoART: Support interpreter switching in x86 mterp
buzbee [Wed, 24 Feb 2016 23:16:46 +0000 (15:16 -0800)]
ART: Support interpreter switching in x86 mterp

Because mterp only supports a subset of special modes and
instrumentation, it needs to recognize when new instrumentation
is added and bail out to the reference interpreter if needed.

The arm and arm64 mterp targets do this.  This CL adds the
functionality to x86 mterp.

Change-Id: I72783577e6f26b2695677b07d8fa57fb887a36c8

8 years agoMerge "Made art/runtime/arch/stub_test.cc compile with -O2 again."
Andreas Gampe [Wed, 24 Feb 2016 21:37:29 +0000 (21:37 +0000)]
Merge "Made art/runtime/arch/stub_test.cc compile with -O2 again."

8 years agoMerge "image: Allow methods with code in another oat file to work correctly"
Igor Murashkin [Wed, 24 Feb 2016 21:35:31 +0000 (21:35 +0000)]
Merge "image: Allow methods with code in another oat file to work correctly"

8 years agoimage: Allow methods with code in another oat file to work correctly
Igor Murashkin [Sat, 20 Feb 2016 00:41:44 +0000 (16:41 -0800)]
image: Allow methods with code in another oat file to work correctly

This fixes an issue when classes with default methods are in the boot
image and are used by an app image.

(cherry picked from commit 6e2237d6615c8f7b09c99d196e5effcfd087943b)

Bug: 27315287
Change-Id: Iaa66848fc07a0c779bc6e047bd154e2a4b87e1c8

8 years agoMerge "Use range analysis for better trip count analysis"
Aart Bik [Wed, 24 Feb 2016 21:01:45 +0000 (21:01 +0000)]
Merge "Use range analysis for better trip count analysis"