OSDN Git Service

android-x86/art.git
8 years agoART: Add test case for Select implementations
David Brazdil [Tue, 2 Feb 2016 10:09:14 +0000 (10:09 +0000)]
ART: Add test case for Select implementations

Change-Id: I487f9cdde321d2bad8239464000ffa20c57c82de

8 years agoMerge "ART: Release DexFile in OatFileAssistant"
David Brazdil [Mon, 1 Feb 2016 16:50:36 +0000 (16:50 +0000)]
Merge "ART: Release DexFile in OatFileAssistant"

8 years agoART: Release DexFile in OatFileAssistant
David Brazdil [Mon, 1 Feb 2016 16:32:50 +0000 (16:32 +0000)]
ART: Release DexFile in OatFileAssistant

Change-Id: I4ff0041191d2fe7a33c2b55f163a33e92da62b6b

8 years agoMerge "Ensure instruction cache is flushed in compiler tests with Clang."
Roland Levillain [Mon, 1 Feb 2016 15:48:42 +0000 (15:48 +0000)]
Merge "Ensure instruction cache is flushed in compiler tests with Clang."

8 years agoMerge "Ignore image checksum for ExtractOnly oat files"
David Brazdil [Mon, 1 Feb 2016 15:27:34 +0000 (15:27 +0000)]
Merge "Ignore image checksum for ExtractOnly oat files"

8 years agoEnsure instruction cache is flushed in compiler tests with Clang.
Roland Levillain [Mon, 1 Feb 2016 15:23:20 +0000 (15:23 +0000)]
Ensure instruction cache is flushed in compiler tests with Clang.

Invoke __builtin___clear_cache with Clang in
art::CommonCompilerTest::MakeExecutable.  This fixes
"Illegal instruction" failures in codegen_test on angler.

Factor this logic in a function and use it in
art::jit::JitCodeCache::CommitCodeInternal too.

Bug: 26786447
Change-Id: I81fa056c8d7c6bf2168c9340deeab82231cb1084

8 years agoIgnore image checksum for ExtractOnly oat files
David Brazdil [Thu, 28 Jan 2016 15:05:49 +0000 (15:05 +0000)]
Ignore image checksum for ExtractOnly oat files

Oat files compiled with --compiler-filter=verify-at-runtime contain
no compiled code and therefore are independent of the boot image.
This patch stores an ExtractOnly flag in the oat header and skips
the image checksum test if the flag is set, rendering the oat file
up to date even after OTAs.

Bug: 26813999

Change-Id: I25291d5b49d9e9d0018844e957a2dc88ef6bdc27

8 years agoMerge "Be on the safe side: emit an environment for runtime calls."
Nicolas Geoffray [Mon, 1 Feb 2016 15:02:23 +0000 (15:02 +0000)]
Merge "Be on the safe side: emit an environment for runtime calls."

8 years agoMerge "Track libcore change aa517a356a38b8cd6764667e1edd735aaf5978e9."
Narayan Kamath [Mon, 1 Feb 2016 14:01:36 +0000 (14:01 +0000)]
Merge "Track libcore change aa517a356a38b8cd6764667e1edd735aaf5978e9."

8 years agoTrack libcore change aa517a356a38b8cd6764667e1edd735aaf5978e9.
Narayan Kamath [Mon, 1 Feb 2016 13:22:18 +0000 (13:22 +0000)]
Track libcore change aa517a356a38b8cd6764667e1edd735aaf5978e9.

Change-Id: I32a995eb62e3268c20fa5c2ac8dc2bf190c6fb7a

8 years agoMerge "Invoke all other registered handlers only for generated code"
Calin Juravle [Mon, 1 Feb 2016 13:43:27 +0000 (13:43 +0000)]
Merge "Invoke all other registered handlers only for generated code"

8 years agoBe on the safe side: emit an environment for runtime calls.
Nicolas Geoffray [Mon, 1 Feb 2016 12:23:22 +0000 (12:23 +0000)]
Be on the safe side: emit an environment for runtime calls.

Even if those runtime calls don't throw, they may be interrupted
and be asked to dump their stack. Since dumping a stack also dumps
locked Java objects, we need a DexRegisterMap at these locations
to know the location of those objects.

Adds 0.05% to boot image code size.

bug:26168076
Change-Id: I7c3975addea9ddf3123183b07108b0701bb26fc8

8 years agoMerge "ART: Disallow uses of uninitialized references"
David Brazdil [Mon, 1 Feb 2016 12:19:53 +0000 (12:19 +0000)]
Merge "ART: Disallow uses of uninitialized references"

8 years agoART: Disallow uses of uninitialized references
David Brazdil [Tue, 19 Jan 2016 14:25:29 +0000 (14:25 +0000)]
ART: Disallow uses of uninitialized references

The following instructions accepted uninitialized reference types
as their arguments:
 - instance-of
 - check-cast
 - throw
 - iput-object (stored value argument)
 - sput-object
 - invoke-* (non-this arguments)

Monitor-enter and monitor-exit are allowed.

Bug: 26594149

Change-Id: I2a4decb1fba274b8969b17bc237ac0fd19b93c80

8 years agoMerge "Revert "Disable test after failing test was pushed.""
Narayan Kamath [Mon, 1 Feb 2016 11:41:40 +0000 (11:41 +0000)]
Merge "Revert "Disable test after failing test was pushed.""

8 years agoRevert "Disable test after failing test was pushed."
Narayan Kamath [Mon, 1 Feb 2016 10:40:38 +0000 (10:40 +0000)]
Revert "Disable test after failing test was pushed."

This reverts commit fd825201137046db7ffa4371ad6d374beda89735.

The change that fixes this test has been submitted.

Change-Id: I35612987b6b149f538b6c6d757eaa626b5349bbd

8 years agoMerge "Clean up UpdateOatFile for app images"
Mathieu Chartier [Sat, 30 Jan 2016 00:58:56 +0000 (00:58 +0000)]
Merge "Clean up UpdateOatFile for app images"

8 years agoClean up UpdateOatFile for app images
Mathieu Chartier [Fri, 29 Jan 2016 04:33:36 +0000 (20:33 -0800)]
Clean up UpdateOatFile for app images

Check that for the there is only one oat file name for the app image
case.

Avoid calling GetOatElfInformation unless necessary.

Bug: 22858531
Change-Id: I88d258a1cc2823956ecc4fca9a6f7b2d3c4b986e

8 years agoMerge "Add oat checksum check for app image loading"
Mathieu Chartier [Sat, 30 Jan 2016 00:07:45 +0000 (00:07 +0000)]
Merge "Add oat checksum check for app image loading"

8 years agoMerge "ART: Do not reopen oat file in ImageWriter::UpdateOatFile()."
Mathieu Chartier [Fri, 29 Jan 2016 23:48:56 +0000 (23:48 +0000)]
Merge "ART: Do not reopen oat file in ImageWriter::UpdateOatFile()."

8 years agoMerge "Regression test ensuring unresolved classes are not put in dex cache."
Jeff Hao [Fri, 29 Jan 2016 23:43:04 +0000 (23:43 +0000)]
Merge "Regression test ensuring unresolved classes are not put in dex cache."

8 years agoRegression test ensuring unresolved classes are not put in dex cache.
Jeff Hao [Fri, 29 Jan 2016 02:22:36 +0000 (18:22 -0800)]
Regression test ensuring unresolved classes are not put in dex cache.

Bug: 26792072

(cherry-picked from commit 2bf56594e78ab7b01ee85c1d885c92cb469dfdf2)

Change-Id: I4e9f4ab0b8ff215c39d854ee041c1acfedcf0b6d

8 years agoAdd oat checksum check for app image loading
Mathieu Chartier [Fri, 29 Jan 2016 20:22:17 +0000 (12:22 -0800)]
Add oat checksum check for app image loading

Bug: 26846419
Bug: 22858531

Change-Id: If30028b7d6b5749f5bdbed0c219d014a3b50a11b

8 years agoMerge "Add a comment on ReadBarrier::Mark() about ALWAYS_INLINE."
Hiroshi Yamauchi [Fri, 29 Jan 2016 22:18:47 +0000 (22:18 +0000)]
Merge "Add a comment on ReadBarrier::Mark() about ALWAYS_INLINE."

8 years agoMerge "Fix issue with exception type resolution during linking."
Alex Light [Fri, 29 Jan 2016 21:42:26 +0000 (21:42 +0000)]
Merge "Fix issue with exception type resolution during linking."

8 years agoMerge "Do not use atomic increment in allocation as fence."
Hans Boehm [Fri, 29 Jan 2016 20:40:09 +0000 (20:40 +0000)]
Merge "Do not use atomic increment in allocation as fence."

8 years agoFix issue with exception type resolution during linking.
Alex Light [Fri, 29 Jan 2016 20:24:48 +0000 (12:24 -0800)]
Fix issue with exception type resolution during linking.

When using default methods that cross dex-files we would sometimes
attempt to lookup method information using the wrong dex file. This
fixes this issue.

Bug: 26872564

Change-Id: I3c4b64ef970017356962060f3bd3781b4629a3c8

8 years agoAdd a comment on ReadBarrier::Mark() about ALWAYS_INLINE.
Hiroshi Yamauchi [Fri, 29 Jan 2016 20:06:36 +0000 (12:06 -0800)]
Add a comment on ReadBarrier::Mark() about ALWAYS_INLINE.

This is a follow up on CL 199360.

Bug: 12687968
Bug: 26744236
Change-Id: I9930894a403e897b85d77caf92834afaa9a860a0

8 years agoMerge "Implement compare() on ARM64."
Aart Bik [Fri, 29 Jan 2016 19:01:38 +0000 (19:01 +0000)]
Merge "Implement compare() on ARM64."

8 years agoMerge "ART: Dump full exception on re-init failure message"
Andreas Gampe [Fri, 29 Jan 2016 18:50:18 +0000 (18:50 +0000)]
Merge "ART: Dump full exception on re-init failure message"

8 years agoImplement compare() on ARM64.
Aart Bik [Thu, 28 Jan 2016 22:36:22 +0000 (14:36 -0800)]
Implement compare() on ARM64.

Change-Id: I6b5982aeb7401cd90fc37431a72bdd2b7f3e322b

8 years agoMerge "Implementation of integer intrinsics on x86_64"
Aart Bik [Fri, 29 Jan 2016 17:43:30 +0000 (17:43 +0000)]
Merge "Implementation of integer intrinsics on x86_64"

8 years agoMerge "Optimizing compiler support for directly calling interface methods"
Alex Light [Fri, 29 Jan 2016 17:38:57 +0000 (17:38 +0000)]
Merge "Optimizing compiler support for directly calling interface methods"

8 years agoART: Do not reopen oat file in ImageWriter::UpdateOatFile().
Vladimir Marko [Fri, 29 Jan 2016 16:27:27 +0000 (16:27 +0000)]
ART: Do not reopen oat file in ImageWriter::UpdateOatFile().

Instead, pass the already opened file from Dex2Oat.

Bug: 26831001
Change-Id: I2341259499067f43ce620b590c5482d28f140e9f

8 years agoMerge "Disable test after failing test was pushed."
Nicolas Geoffray [Fri, 29 Jan 2016 13:45:43 +0000 (13:45 +0000)]
Merge "Disable test after failing test was pushed."

8 years agoDisable test after failing test was pushed.
Nicolas Geoffray [Fri, 29 Jan 2016 13:38:33 +0000 (13:38 +0000)]
Disable test after failing test was pushed.

bug:26869497

Change-Id: I950b9fc164b512290d96d0137957348006796338

8 years agoMerge "Re-enable test 566-polymorphic-inlining."
Nicolas Geoffray [Fri, 29 Jan 2016 12:09:43 +0000 (12:09 +0000)]
Merge "Re-enable test 566-polymorphic-inlining."

8 years agoRe-enable test 566-polymorphic-inlining.
Nicolas Geoffray [Fri, 29 Jan 2016 11:41:25 +0000 (11:41 +0000)]
Re-enable test 566-polymorphic-inlining.

- Can not rely on debug builds.
- Need to wait for the method to be compiled.

Change-Id: I26ce89075075da8555fd59ade56bd04bec23f4ce

8 years agoMerge "Re-enable test 496-checker-inlining-and-class-loader with CC."
Roland Levillain [Fri, 29 Jan 2016 11:53:50 +0000 (11:53 +0000)]
Merge "Re-enable test 496-checker-inlining-and-class-loader with CC."

8 years agoRe-enable test 496-checker-inlining-and-class-loader with CC.
Roland Levillain [Fri, 29 Jan 2016 11:37:48 +0000 (11:37 +0000)]
Re-enable test 496-checker-inlining-and-class-loader with CC.

This test might have been affected by an app image change.
Re-enable it so that we can monitor it on the concurrent
collector configurations.

Bug: 26786304
Bug: 12687968
Change-Id: Iab484418d4a507da6642eec86317d53cc0a2607a

8 years agoMerge "Optimizing: Use dex pc 0 for pattern substitution-generated IGET."
Vladimir Marko [Fri, 29 Jan 2016 11:08:21 +0000 (11:08 +0000)]
Merge "Optimizing: Use dex pc 0 for pattern substitution-generated IGET."

8 years agoMerge "ART: Do not use AT register in MIPS DSS<->RP swap"
David Brazdil [Fri, 29 Jan 2016 11:05:33 +0000 (11:05 +0000)]
Merge "ART: Do not use AT register in MIPS DSS<->RP swap"

8 years agoOptimizing: Use dex pc 0 for pattern substitution-generated IGET.
Vladimir Marko [Fri, 29 Jan 2016 10:24:41 +0000 (10:24 +0000)]
Optimizing: Use dex pc 0 for pattern substitution-generated IGET.

In the read barrier configuration, HInstanceFieldGet needs
a slow-path with a runtime call with an associated stack map
and we assert that we have a valid dex pc for stack maps.
Fix the pattern substitution-generated HInstanceFieldGet to
use the valid, if bogus, dex pc 0.

Bug: 26854537
Bug: 12687968

Change-Id: I9f379ea530ce3f89af8db40169a6c41b525abbd7

8 years agoMerge "Revert "reflection: Add new 1.8 AnnotatedElement methods and tests""
Nicolas Geoffray [Fri, 29 Jan 2016 10:25:28 +0000 (10:25 +0000)]
Merge "Revert "reflection: Add new 1.8 AnnotatedElement methods and tests""

8 years agoRevert "reflection: Add new 1.8 AnnotatedElement methods and tests"
Nicolas Geoffray [Fri, 29 Jan 2016 10:25:01 +0000 (10:25 +0000)]
Revert "reflection: Add new 1.8 AnnotatedElement methods and tests"

Breaks interpreter access checks:

+Exception in thread "main" java.lang.InternalError: java.lang.IllegalAccessError: Method 'void java.lang.reflect.Proxy.doNewInstanceCheck()' is inaccessible to class '$Proxy0' (declaration of '$Proxy0' appears in generated class)

This reverts commit c167ee9b65f05f7c6f007d587fd1655388edaee9.

Change-Id: I6c9429cb6f298e89a2da22f7ded0728251321446

8 years agoART: Do not use AT register in MIPS DSS<->RP swap
David Brazdil [Fri, 29 Jan 2016 09:50:09 +0000 (09:50 +0000)]
ART: Do not use AT register in MIPS DSS<->RP swap

LoadFromOffset clobbers AT if stack offset does not fit in int16_t.
We should never hit that limit but let's stay on the safe side.

Change-Id: I77f564dc3edd0b47d06f8fafb5610c7c0205e9b2

8 years agoMerge "ART: Fix single-step interpretation for mterp"
Bill Buzbee [Fri, 29 Jan 2016 03:33:23 +0000 (03:33 +0000)]
Merge "ART: Fix single-step interpretation for mterp"

8 years agoDo not use atomic increment in allocation as fence.
Hans Boehm [Fri, 29 Jan 2016 01:19:15 +0000 (17:19 -0800)]
Do not use atomic increment in allocation as fence.

A sequentially consistent fetch_and_add implemented with ARM v8 acquire
release operations is not a fence.  Don't use it as one.

The result may also be somewhat faster, since a sequentially consistent
increment requires more fencing than needed for the increment.

Bug: 16377103
Change-Id: I5b1add098d3488aa755f140612e54521b80aa749

8 years agoART: Fix single-step interpretation for mterp
buzbee [Thu, 28 Jan 2016 23:48:55 +0000 (15:48 -0800)]
ART: Fix single-step interpretation for mterp

For bring-up (and failover) purposes, mterp can bail out to the
switch interpreter to handle a single opcode.  This CL fixes the
handoff of the result register (a bug that was masked by an earlier
revision which passed it around by reference, rather than by value.

Change-Id: Iba9e1576f52b3660348c89466438bdc0526227d0

8 years agoMerge "Fix "Never Interpret" option for all interpreters"
Bill Buzbee [Thu, 28 Jan 2016 23:59:33 +0000 (23:59 +0000)]
Merge "Fix "Never Interpret" option for all interpreters"

8 years agoFix "Never Interpret" option for all interpreters
buzbee [Thu, 28 Jan 2016 22:20:06 +0000 (14:20 -0800)]
Fix "Never Interpret" option for all interpreters

CL 196596 added support for an option to bypass interpretation.
However, it only covers 2 our of 3 interpreters (missing mterp).
This change moves the control up a level to the common interpreter
entry where it will take effect before we select which interpreter
to use.

Also, it corrects a somewhat academic bug in that the existing
code that assumes that (dex_pc == 0) means that we just entered a
method.  If a method's dex code internally branched to address 0,
we could issue bogus method entry events.  By moving this test up
a level, we should avoid this situation.  Note, though, that dx
would never generate this pattern, and it's hard to imagine even
hand-generated dex code that would trigger a deoptimization in this
situation.

Change-Id: I6684bbf63570e02f5b01ce423c656889a890de7d

8 years agoOptimizing compiler support for directly calling interface methods
Alex Light [Thu, 7 Jan 2016 22:49:16 +0000 (14:49 -0800)]
Optimizing compiler support for directly calling interface methods

This teaches the optimizing compiler how to perform invoke-super on
interfaces. This should make the invokes generally faster.

Bug: 24618811

Change-Id: I7f9b0fb1209775c1c8837ab5d21f8acba3cc72a5

8 years agoART: Dump full exception on re-init failure message
Andreas Gampe [Thu, 28 Jan 2016 23:31:39 +0000 (15:31 -0800)]
ART: Dump full exception on re-init failure message

It is a recurring issue to investigate the underlying issue. Just
dumping the top-level failure type is not very helpful. Take the
logcat hit and dump the full exception (including causes).

Change-Id: If071df9667473410222438e1c5f956c9b56b4d77

8 years agoMerge "Disable test for now."
Nicolas Geoffray [Thu, 28 Jan 2016 23:08:56 +0000 (23:08 +0000)]
Merge "Disable test for now."

8 years agoDisable test for now.
Nicolas Geoffray [Thu, 28 Jan 2016 23:07:47 +0000 (23:07 +0000)]
Disable test for now.

Change-Id: Ibc7f2a2b1fb35c7b0b9d8a34b5e6adc243a67776

8 years agoMerge "Clear image file in image writer"
Mathieu Chartier [Thu, 28 Jan 2016 23:00:23 +0000 (23:00 +0000)]
Merge "Clear image file in image writer"

8 years agoMerge "Remove ALWAYS_INLINE from ReadBarrier::Mark()."
Hiroshi Yamauchi [Thu, 28 Jan 2016 21:52:56 +0000 (21:52 +0000)]
Merge "Remove ALWAYS_INLINE from ReadBarrier::Mark()."

8 years agoRemove ALWAYS_INLINE from ReadBarrier::Mark().
Hiroshi Yamauchi [Thu, 28 Jan 2016 21:39:41 +0000 (13:39 -0800)]
Remove ALWAYS_INLINE from ReadBarrier::Mark().

This fixes a Ritzperf EAAC performance regression in the read barrier
config.

Bug: 26744236
Bug: 12687968
Change-Id: Ieaeb57def0e3a9eeb5fd8b1234658b45fd31ce77

8 years agoMerge "Fix image test with GSS"
Mathieu Chartier [Thu, 28 Jan 2016 20:15:55 +0000 (20:15 +0000)]
Merge "Fix image test with GSS"

8 years agoFix image test with GSS
Mathieu Chartier [Thu, 28 Jan 2016 17:49:55 +0000 (09:49 -0800)]
Fix image test with GSS

There was a gap between image space and non moving space for some
reason. No time for a better fix.

Bug: 26849108

Change-Id: If7fe9db060b7accbffd1b4636ce4e0d82a02ed7b

8 years agoClear image file in image writer
Mathieu Chartier [Thu, 28 Jan 2016 20:02:00 +0000 (12:02 -0800)]
Clear image file in image writer

The goal is to not erase the image file in installd in case we abort
compilation due to no new profile data. Currently aborting results in
an empty image file.

Bug: 22858531
Change-Id: I32eee3391f860f4a373db3d746d096cc36d623f2

8 years agoImplementation of integer intrinsics on x86_64
Aart Bik [Thu, 28 Jan 2016 01:00:35 +0000 (17:00 -0800)]
Implementation of integer intrinsics on x86_64

Rationale:
Efficient implementations of common integer operations.
Already tested in:
  564-checker-bitcount
  565-checker-rotate:
  566-checker-signum
  567-checker-compare
  568-checker-onebit  (extended to deal with run-time zero)

Change-Id: Ib48c76eee751e7925056d7f26797e9a9b5ae60dd

8 years agoMerge "Remove some more read barriers in image relocation"
Mathieu Chartier [Thu, 28 Jan 2016 19:02:13 +0000 (19:02 +0000)]
Merge "Remove some more read barriers in image relocation"

8 years agoRemove some more read barriers in image relocation
Mathieu Chartier [Thu, 28 Jan 2016 02:37:48 +0000 (18:37 -0800)]
Remove some more read barriers in image relocation

Bug: 26786304
Bug: 22858531
Change-Id: I70dacae7657ebf6dac2b3dad7726eebe5a2b2649

8 years agoMerge "Doh. Forgot to ensure it's compiled."
Nicolas Geoffray [Thu, 28 Jan 2016 18:19:15 +0000 (18:19 +0000)]
Merge "Doh. Forgot to ensure it's compiled."

8 years agoMerge "Optimizing: Try pattern substitution when we cannot inline."
Vladimir Marko [Thu, 28 Jan 2016 18:16:14 +0000 (18:16 +0000)]
Merge "Optimizing: Try pattern substitution when we cannot inline."

8 years agoDoh. Forgot to ensure it's compiled.
Nicolas Geoffray [Thu, 28 Jan 2016 18:15:53 +0000 (18:15 +0000)]
Doh. Forgot to ensure it's compiled.

Change-Id: I7b1786497c6bd0e83d8afe70fabecfacc8ca6a3a

8 years agoMerge "Fix issue with IMT dispatch."
Alex Light [Thu, 28 Jan 2016 18:15:07 +0000 (18:15 +0000)]
Merge "Fix issue with IMT dispatch."

8 years agoOptimizing: Try pattern substitution when we cannot inline.
Vladimir Marko [Fri, 22 Jan 2016 12:09:44 +0000 (12:09 +0000)]
Optimizing: Try pattern substitution when we cannot inline.

Change-Id: I7c01f4494bac8498accc0f087044ec509fee4c98

8 years agoMerge "Stop verifier ResolveClass from putting unresolved classes in dex cache."
Jeff Hao [Thu, 28 Jan 2016 18:07:16 +0000 (18:07 +0000)]
Merge "Stop verifier ResolveClass from putting unresolved classes in dex cache."

8 years agoStop verifier ResolveClass from putting unresolved classes in dex cache.
Jeff Hao [Thu, 28 Jan 2016 03:14:53 +0000 (19:14 -0800)]
Stop verifier ResolveClass from putting unresolved classes in dex cache.

Bug: 26792072

(cherry-picked from commit 340bd820b1d7552417beb47325f12caea8ba718b)

Change-Id: I6d1b5aaa4a05e42881aebf9d907fc66fce2144ad

8 years agoMerge "Factor out common code for SetPendingNext."
Richard Uhler [Thu, 28 Jan 2016 18:01:12 +0000 (18:01 +0000)]
Merge "Factor out common code for SetPendingNext."

8 years agoMerge "ART: Add missing swaps to MIPS codegen"
David Brazdil [Thu, 28 Jan 2016 17:42:55 +0000 (17:42 +0000)]
Merge "ART: Add missing swaps to MIPS codegen"

8 years agoART: Add missing swaps to MIPS codegen
David Brazdil [Thu, 28 Jan 2016 17:14:52 +0000 (17:14 +0000)]
ART: Add missing swaps to MIPS codegen

Change-Id: I0fb50280ddf43f817d991c15d3b6cdeb4635d6c2

8 years agoMerge "Do not enforce deterministic compilation with read barriers."
Roland Levillain [Thu, 28 Jan 2016 17:28:03 +0000 (17:28 +0000)]
Merge "Do not enforce deterministic compilation with read barriers."

8 years agoMerge "Add a comment to oatdump for 0 size symbols"
Tamas Berghammer [Thu, 28 Jan 2016 17:04:24 +0000 (17:04 +0000)]
Merge "Add a comment to oatdump for 0 size symbols"

8 years agoMerge "Change log to avoid polluting logcat."
Nicolas Geoffray [Thu, 28 Jan 2016 16:42:40 +0000 (16:42 +0000)]
Merge "Change log to avoid polluting logcat."

8 years agoAdd a comment to oatdump for 0 size symbols
Tamas Berghammer [Thu, 28 Jan 2016 16:30:14 +0000 (16:30 +0000)]
Add a comment to oatdump for 0 size symbols

The symbolizer inside oatdump generates 0 size symbols for the
trampoline symbols. Add a comment explaining why we emitting them with
0 size.

Change-Id: I16ed87554681ce57aafc26517a1e674647b5f9ac

8 years agoMerge "ART: Fix gtest after liveness CL"
David Brazdil [Thu, 28 Jan 2016 16:25:00 +0000 (16:25 +0000)]
Merge "ART: Fix gtest after liveness CL"

8 years agoART: Fix gtest after liveness CL
David Brazdil [Thu, 28 Jan 2016 16:22:40 +0000 (16:22 +0000)]
ART: Fix gtest after liveness CL

Change-Id: I2d029044cebe6e1ee7d7efb2e20541060f88c07c

8 years agoMerge "Implement first kind of polymorphic inlining."
Nicolas Geoffray [Thu, 28 Jan 2016 16:09:16 +0000 (16:09 +0000)]
Merge "Implement first kind of polymorphic inlining."

8 years agoImplement first kind of polymorphic inlining.
Nicolas Geoffray [Thu, 17 Dec 2015 14:57:09 +0000 (14:57 +0000)]
Implement first kind of polymorphic inlining.

Add HClassTableGet to fetch an ArtMethod from the vtable or imt,
and compare it to the only method the profiling saw.

Change-Id: I76afd3689178f10e3be048aa3ac9a97c6f63295d

8 years agoMerge "ART: Implement HSelect"
David Brazdil [Thu, 28 Jan 2016 15:52:08 +0000 (15:52 +0000)]
Merge "ART: Implement HSelect"

8 years agoART: Implement HSelect
David Brazdil [Mon, 14 Dec 2015 11:44:01 +0000 (11:44 +0000)]
ART: Implement HSelect

This patch adds a new HIR instruction to Optimizing. HSelect returns
one of two inputs based on the outcome of a condition.

This is only initial implementation which:
 - defines the new instruction,
 - repurposes BooleanSimplifier to emit it,
 - extends InstructionSimplifier to statically resolve it,
 - updates existing code and tests accordingly.

Code generators currently emit fallback if/then/else code and will be
updated in follow-up CLs to use platform-specific conditional moves
when possible.

Change-Id: Ib61b17146487ebe6b55350c2b589f0b971dcaaee

8 years agoMerge "ART: Implement support for instruction inlining"
David Brazdil [Thu, 28 Jan 2016 15:48:32 +0000 (15:48 +0000)]
Merge "ART: Implement support for instruction inlining"

8 years agoART: Implement support for instruction inlining
David Brazdil [Tue, 26 Jan 2016 11:28:37 +0000 (11:28 +0000)]
ART: Implement support for instruction inlining

Optimizing HIR contains 'non-materialized' instructions which are
emitted at their use sites rather than their defining sites. This
was not properly handled by the liveness analysis which did not
adjust the use positions of the inputs of such instructions.
Despite the analysis being incorrect, the current use cases never
produce incorrect code.

This patch generalizes the concept of inlined instructions and
updates liveness analysis to set the compute use positions correctly.

Change-Id: Id703c154b20ab861241ae5c715a150385d3ff621

8 years agoMerge "Emit symbol names for trampoline symbols in oatdump"
Tamas Berghammer [Thu, 28 Jan 2016 15:37:54 +0000 (15:37 +0000)]
Merge "Emit symbol names for trampoline symbols in oatdump"

8 years agoMerge "Fix ARM & ARM64 UnsafeCASObject intrinsic with heap poisoning."
Roland Levillain [Thu, 28 Jan 2016 15:33:33 +0000 (15:33 +0000)]
Merge "Fix ARM & ARM64 UnsafeCASObject intrinsic with heap poisoning."

8 years agoDo not enforce deterministic compilation with read barriers.
Roland Levillain [Thu, 28 Jan 2016 14:37:01 +0000 (14:37 +0000)]
Do not enforce deterministic compilation with read barriers.

Forcing determinism of the boot image compilation (on host)
does not work when read barriers are enabled, as the former
switches the GC to a non-concurrent one by passing the
option `-Xgc:nonconcurrent`.

Also make dex2oat abort when invoked with
`--force-determinism` while read barriers are enabled.

Bug: 12687968
Bug: 26687569
Change-Id: I37b388fccbe4502a90def8031a898f1a40df6a9f

8 years agoMerge "Re-enable some run-tests with CC after mterp fix."
Roland Levillain [Thu, 28 Jan 2016 12:32:01 +0000 (12:32 +0000)]
Merge "Re-enable some run-tests with CC after mterp fix."

8 years agoMerge "Don't crash if the perf map creation failed"
Tamas Berghammer [Thu, 28 Jan 2016 12:06:37 +0000 (12:06 +0000)]
Merge "Don't crash if the perf map creation failed"

8 years agoDon't crash if the perf map creation failed
Tamas Berghammer [Wed, 27 Jan 2016 16:15:56 +0000 (16:15 +0000)]
Don't crash if the perf map creation failed

The perf map file is used in the jit compiler to emit the symbol name
for the start address of each jitted function. The file is stored in
/data/misc/trace (previously /data) what is only accessible on
userdebug builds. This change modifies the code to work on user builds
with not using the perf map file if we failed to create it.

Change-Id: Icfecd4bdab94ffc528ec218f3ac2b872fbdacf37

8 years agoChange log to avoid polluting logcat.
Nicolas Geoffray [Thu, 28 Jan 2016 09:29:31 +0000 (09:29 +0000)]
Change log to avoid polluting logcat.

Change-Id: I804afe9e3a78876f4fc2d74ae084419530435840

8 years agoMerge "Revert "Revert "Lift the spill at each irreducible loop block restriction."""
Nicolas Geoffray [Thu, 28 Jan 2016 09:14:04 +0000 (09:14 +0000)]
Merge "Revert "Revert "Lift the spill at each irreducible loop block restriction."""

8 years agoRevert "Revert "Lift the spill at each irreducible loop block restriction.""
Nicolas Geoffray [Wed, 27 Jan 2016 14:15:23 +0000 (14:15 +0000)]
Revert "Revert "Lift the spill at each irreducible loop block restriction.""

This reverts commit 2818dbcd75ea9beadcba9d18e2f68523108d0cf5.

Change-Id: I92b2b60b4f08f50cacfea4132f1c28cfbd628f1a

8 years agoMerge changes from topic 'pointer_conversion'
Mathieu Chartier [Thu, 28 Jan 2016 03:02:05 +0000 (03:02 +0000)]
Merge changes from topic 'pointer_conversion'

* changes:
  Pass template args down
  Fix pointer conversion error in SetElementPtrSize

8 years agoPass template args down
Mathieu Chartier [Thu, 28 Jan 2016 00:37:19 +0000 (16:37 -0800)]
Pass template args down

Fixes failing DCHECK in dex2oatd

(cherry picked from commit 3df47c1c675e62cf0e5853699149c1181a48b28f)

Change-Id: I96a3b582705e4bffa39ee8e24ec43ff0d7a57ccd

8 years agoFix pointer conversion error in SetElementPtrSize
Mathieu Chartier [Wed, 27 Jan 2016 23:30:10 +0000 (15:30 -0800)]
Fix pointer conversion error in SetElementPtrSize

SetElementPtrSize used to cast from pointer to uint64_t which
could sign extend with 32 bit dex2oat for 64 bit app image.
Also removed C style casts and added more logging.

Bug: 22858531

(cherry picked from commit d22886357d4c53f74ca298faa7ad2555794e17e0)

Change-Id: I479124328fbc497cfcae20c43b4b55827e446527

8 years agoMerge "ART: Add option to ensure deterministic compilation"
Andreas Gampe [Thu, 28 Jan 2016 00:17:21 +0000 (00:17 +0000)]
Merge "ART: Add option to ensure deterministic compilation"

8 years agoART: Add option to ensure deterministic compilation
Andreas Gampe [Wed, 20 Jan 2016 21:33:13 +0000 (13:33 -0800)]
ART: Add option to ensure deterministic compilation

To ensure reliable stable generation of a boot image, add a flag
for forced determinism, trading compile time for a deterministic
output.

We have to run certain passes in the compiler-driver single-threaded.
It is also necessary to try to make the heap layout deterministic.
Switch to nonconcurrent GC, use the free-list implementation for LOS,
and try to allocate the main space at a known location. This is best
effort at the moment.

To allow the compiler phase to be parallelized, const-strings need
to be created beforehand.

The identity hashcode seed needs to be pinned.

Besides the Dex object we also need to null the DexFile pointer in
dex caches.

For classes, we need to remove the clinit thread ID.

Fix oatdump alignment padding accounting.

Bug: 26687569
Change-Id: Ia82120e8f715bb3691d861817b12778ac677355a