OSDN Git Service

android-x86/art.git
7 years agoSmarter image layout
Mathieu Chartier [Fri, 23 Sep 2016 21:51:44 +0000 (21:51 +0000)]
Smarter image layout
am: 4e9c4e7466

Change-Id: Iba240ee3bbb768f258ab7bc3aa22325fd4d7992a

7 years agoSmarter image layout
Mathieu Chartier [Tue, 20 Sep 2016 22:33:31 +0000 (15:33 -0700)]
Smarter image layout

Put strings in the dex file that resolves them.

Depth first traversal with overrides for class and dex cache. The
work list keeps track of what oat_index with each pushed item. This
means the static fields of a class will usually be in the same image.

Added layout test to image_test to make sure things are somewhat
reasonably attributed.

Bug: 28640955

Test: test-art-host

Change-Id: I67a536c33aeed603b252d8e0f75622c9efbf2559

7 years agoMerge "Make image test multi image" into nyc-mr1-dev
Mathieu Chartier [Thu, 22 Sep 2016 02:48:10 +0000 (02:48 +0000)]
Merge "Make image test multi image" into nyc-mr1-dev
am: 41be588f4f

Change-Id: I427a63c24354ca8f6f8df788881730b95128e16b

7 years agoMake image test multi image
Mathieu Chartier [Thu, 22 Sep 2016 02:48:09 +0000 (02:48 +0000)]
Make image test multi image
am: 25adcfb7dc

Change-Id: Iea181f7ef946b7a063d3424845774517011fc706

7 years agoMerge "Make image test multi image" into nyc-mr1-dev
TreeHugger Robot [Thu, 22 Sep 2016 02:00:45 +0000 (02:00 +0000)]
Merge "Make image test multi image" into nyc-mr1-dev

7 years agoMake image test multi image
Mathieu Chartier [Wed, 21 Sep 2016 22:24:18 +0000 (15:24 -0700)]
Make image test multi image

Required for testing multi image layout in future CLs.

Bug: 28640955

Test: clean-oat-hos, test-art-host, device booting

Change-Id: I14809f56e711b4a87e01056c327eddbbd087f4ee

7 years agoEnsure class is initialized when reading its fields from debugger.
Jeff Hao [Tue, 20 Sep 2016 18:12:03 +0000 (18:12 +0000)]
Ensure class is initialized when reading its fields from debugger.
am: 894f3fd2bb

Change-Id: Iadd8832ab37487dd838c164c066637972c549c17

7 years agoEnsure class is initialized when reading its fields from debugger.
Jeff Hao [Wed, 14 Sep 2016 22:56:35 +0000 (15:56 -0700)]
Ensure class is initialized when reading its fields from debugger.

Bug: 31016523
Test: mm run-jdwp-tests-ri & mm run-jdwp-tests-host

(cherry-picked from commit de19a25625823496bcf8f92352f709c7a3924bfa)

Change-Id: I02f6c66116f4507c89f7ca1cb480d7029d97c485

7 years agoMerge "Fix vtable corruption issue" into nyc-mr1-dev
Alex Light [Fri, 9 Sep 2016 21:56:37 +0000 (21:56 +0000)]
Merge "Fix vtable corruption issue" into nyc-mr1-dev
am: 949ce9c1da

Change-Id: Ic5fc1c6cd47d3620676a5fb4357f09f4727087b9

7 years agoFix vtable corruption issue
Alex Light [Fri, 9 Sep 2016 21:56:37 +0000 (21:56 +0000)]
Fix vtable corruption issue
am: b47a1cc17f

Change-Id: I0f94ef0789b8a15525e38765e45c4a3383af643e

7 years agoMerge "Fix vtable corruption issue" into nyc-mr1-dev
TreeHugger Robot [Fri, 9 Sep 2016 21:51:51 +0000 (21:51 +0000)]
Merge "Fix vtable corruption issue" into nyc-mr1-dev

7 years agoDon't assume resolved classses are filled in for ResolvedFieldAccessTest
Mathieu Chartier [Fri, 9 Sep 2016 20:20:59 +0000 (20:20 +0000)]
Don't assume resolved classses are filled in for ResolvedFieldAccessTest
am: c90450a201

Change-Id: Iacd940d12b4d9a54cd2f7ac21063f6178cf35031

7 years agoFix vtable corruption issue
Alex Light [Wed, 7 Sep 2016 19:04:20 +0000 (12:04 -0700)]
Fix vtable corruption issue

We were adding duplicate methods to the vtable in some cases where
default methods (and conflict methods) were used. This caused issues
where they were not correctly overridden in subclasses that implement
these methods directly. When overridden only one of the vtable entries
was updated meaning it was still possible to reach the overridden code
using a virtual call.

This change prevents the duplicate methods from being added to the
vtable in this circumstance. It also adds a debug check that ensures
that the vtable has no duplicates to prevent regressions.

Bug: 31280371

Test: mma test-art-host
Test: mma test-art-host-run-test-960-default-smali

Change-Id: I17d88fb8949c8d5d75b4de3c734fd98660b81e61
(cherry picked from commit 1f3925d4f067438d3689ef2736fd2af063c98668)

7 years agoDon't assume resolved classses are filled in for ResolvedFieldAccessTest
Mathieu Chartier [Fri, 9 Sep 2016 00:34:25 +0000 (17:34 -0700)]
Don't assume resolved classses are filled in for ResolvedFieldAccessTest

The assumption that the dex cache type for class of the field is
resolved is not correct since FindClass does not fill in the
resolved type array. This resulted in crashes if dex_access_to ==
nullptr.

Also implemented for ResolvedMethodAccessTest

Bug: 31277064

Test: Launch ZeroTouch with profile guided compilation.

Change-Id: I40cfb15f3ae4fbfe941fd01ea46211bd86b6e6f7

7 years agoSave environment snapshot and use at fork/exec
David Sehr [Wed, 31 Aug 2016 20:15:46 +0000 (20:15 +0000)]
Save environment snapshot and use at fork/exec
am: 0e4a2f0d6b

Change-Id: I0f0ab67798266911cd8209dfdd9cde0cf371c815

7 years agoSave environment snapshot and use at fork/exec
David Sehr [Wed, 17 Aug 2016 02:22:57 +0000 (19:22 -0700)]
Save environment snapshot and use at fork/exec

Some applications may inadvertently or maliciously set of environment
variables such as LD_LIBRARY_PATH before spawning subprocesses.
To make this more difficult, save the environment at the time the
runtime starts and use the saved copy anytime Exec is called.

BUG: 30160149
TEST: make test-art-{host,target}

Change-Id: I887b78bdb21ab20855636a96da14a74c767bbfef
(cherry picked from commit d106d9f871c957286ccdeb79c1c2a5ed41f859a6)

7 years agoPass the right class loader when inlining. am: c770fe0480 am: 5b5ee2a89f
Nicolas Geoffray [Mon, 29 Aug 2016 23:25:25 +0000 (23:25 +0000)]
Pass the right class loader when inlining. am: c770fe0480 am: 5b5ee2a89f
am: 91373ca410

Change-Id: I3d75cc076f4d7eb9db65ed686a8e27f6e93afa76

7 years agoPass the right class loader when inlining. am: c770fe0480
Nicolas Geoffray [Mon, 29 Aug 2016 22:50:54 +0000 (22:50 +0000)]
Pass the right class loader when inlining. am: c770fe0480
am: 5b5ee2a89f

Change-Id: I47bfba0654850a6e15ef0337556ed6a12e02fb90

7 years agoPass the right class loader when inlining.
Nicolas Geoffray [Mon, 29 Aug 2016 22:47:31 +0000 (22:47 +0000)]
Pass the right class loader when inlining.
am: c770fe0480

Change-Id: If6f2946d649addef8381079eb0132d35ee1fd62f

7 years agoPass the right class loader when inlining.
Nicolas Geoffray [Thu, 28 Jul 2016 02:49:14 +0000 (03:49 +0100)]
Pass the right class loader when inlining.

Otherwise, method and type resolution can resolve to the wrong
things and as a side effect update the dex cache with wrong data.

bug:30403437
Change-Id: I23f94486f51c65e0a1328c6185b36084627e09b3
test:./art/test/run-test --host --jit --dev --no-prebuild 613
(cherry picked from commit 0a210d9b108c87c0e7c1d430a92ce6fc89790c95)

7 years agoAdd lock when iterating over BacktraceMap.
Christopher Ferris [Fri, 26 Aug 2016 18:00:45 +0000 (18:00 +0000)]
Add lock when iterating over BacktraceMap.
am: 250a966717

Change-Id: I220924343cbf4a510473fba8d896b438307dc567

7 years agoAdd lock when iterating over BacktraceMap.
Christopher Ferris [Fri, 17 Jun 2016 06:19:36 +0000 (23:19 -0700)]
Add lock when iterating over BacktraceMap.

In order to avoid a race condition in the maps data, acquire
a read lock while iterating over the maps data.

Bug: 29387050
Bug: 31067025

(cherry picked from commit 56f8b5631ab2874dc2ec385802e38555acac0d90)

Change-Id: I48ecd2705b4aa4eedfed1daae2eb3b9b8bf8dda9

7 years agoCard mark holding class instead of declaring class
Mathieu Chartier [Thu, 25 Aug 2016 20:34:45 +0000 (20:34 +0000)]
Card mark holding class instead of declaring class
am: db16f2a0a7

Change-Id: Ifa6f51e997bc1283cc892d3b00ed8c8b2f187307

7 years agoCard mark holding class instead of declaring class
Mathieu Chartier [Fri, 5 Aug 2016 17:46:36 +0000 (10:46 -0700)]
Card mark holding class instead of declaring class

For profiling info, we need to mark the card of the holding class
instead of declaring class. This is required for GC correctness since
the GC relies on the card table to track cross space references.

Test: test-art-host ART_TEST_JIT=true

Bug: 30655270

(cherry picked from commit 65975776f807d55c83af6cca1e447f8daa794413)

Change-Id: I3de518693d3cac1ad9770eae671db740ebdf1d8d

7 years agoRevert "Revert "Use try lock to fix class resolution race""
Mathieu Chartier [Wed, 24 Aug 2016 16:36:42 +0000 (16:36 +0000)]
Revert "Revert "Use try lock to fix class resolution race""
am: 23da026ec7

Change-Id: Icc27f56679886cddbacdd2fcb198bdeeafdd1904

7 years agoRevert "Use try lock to fix class resolution race"
Mathieu Chartier [Wed, 24 Aug 2016 16:36:37 +0000 (16:36 +0000)]
Revert "Use try lock to fix class resolution race"
am: adc538a57a

Change-Id: I5dc4f5291800c124beed080e46bfee437b40669b

7 years agoUse try lock to fix class resolution race
Mathieu Chartier [Wed, 24 Aug 2016 16:36:32 +0000 (16:36 +0000)]
Use try lock to fix class resolution race
am: 1386f8619b

Change-Id: Ic196684640f2bad1b24837bdefd902305b4eb785

7 years agoRevert "Revert "Use try lock to fix class resolution race""
Mathieu Chartier [Fri, 29 Jul 2016 23:26:01 +0000 (16:26 -0700)]
Revert "Revert "Use try lock to fix class resolution race""

Fix possible deadlock in EnsureResolved caused by interaction with
GC. Since we were sleeping while holding the mutator lock, it could
block thread suspension. This would deadlock if the thread that
had locked h_class is already suspended since we would spin forever
and not make progress.

Bug: 27417671
Bug: 30500547

Test: test-art-host ART_TEST_GC_STRESS=true

This reverts commit 69bf969c055c31a75d17ea92aeee756042678114.

(cherry picked from commit 4b0ef1c980a1f3b0201d77e33bdb2f7df12c9114)

Change-Id: If5766c2c3c8a130cbb83735cdb9970038570dafd

7 years agoRevert "Use try lock to fix class resolution race"
Mathieu Chartier [Fri, 29 Jul 2016 20:06:45 +0000 (20:06 +0000)]
Revert "Use try lock to fix class resolution race"

This reverts commit a704eda0078989a73cac111ed309aca50d2e289b.

Bug: 27417671
Bug: 30500547

(cherry picked from commit 69bf969c055c31a75d17ea92aeee756042678114)

Change-Id: I4354d1c9f1c554f054e99efd7aa52d8a2c5d402c

7 years agoUse try lock to fix class resolution race
Mathieu Chartier [Wed, 13 Jul 2016 16:53:35 +0000 (09:53 -0700)]
Use try lock to fix class resolution race

There was some possible deadlocks related to EnsureResolved caused by
acquiring an object lock.

Scenario:
Thread 1 acquires lock on obj1
Thread 1 begins to resolve / initialize class1
Thread 1 blocks since it sees that class1 is already being resolved and
gets preempted before it can acquire the object lock on class1
Thread 2 finishes resolving and initializing class1 and locks class1
Thread 2 blocks attempting to lock obj1
Thread 1 blocks attempting to lock class1
Deadlock

Fixed the deadlock by changing EnsureResolved to use a try lock for the
unresolved case.

Added a test.

Test: Device boot, test-art-host, monitor_test

Bug: 27417671

(cherry picked from commit a704eda0078989a73cac111ed309aca50d2e289b)

Change-Id: I1150b19bdc1a5cc87ae95eda4f2b6b4bca215a60

7 years agoMerge "Revert "Save environment snapshot and use at fork/exec"" into nyc-mr1-dev
David Sehr [Tue, 23 Aug 2016 17:10:20 +0000 (17:10 +0000)]
Merge "Revert "Save environment snapshot and use at fork/exec"" into nyc-mr1-dev
am: 7ae0862d40

Change-Id: I8cb8282d61aea83ec09bbcd68e9bdb329a02db51

7 years agoRevert "Save environment snapshot and use at fork/exec"
David Sehr [Tue, 23 Aug 2016 17:10:20 +0000 (17:10 +0000)]
Revert "Save environment snapshot and use at fork/exec"
am: 47393386aa

Change-Id: Id9ef46ef85495132dd9b9d3e8471fe94cd06d75c

7 years agoMerge "Revert "Save environment snapshot and use at fork/exec"" into nyc-mr1-dev
David Sehr [Tue, 23 Aug 2016 16:44:25 +0000 (16:44 +0000)]
Merge "Revert "Save environment snapshot and use at fork/exec"" into nyc-mr1-dev

7 years agoRevert "Save environment snapshot and use at fork/exec"
David Sehr [Tue, 23 Aug 2016 15:59:24 +0000 (15:59 +0000)]
Revert "Save environment snapshot and use at fork/exec"

This reverts commit 1488ff8aa3b041734ef0fbd113df512a2376e44e.

Change-Id: I3c237c94ffa865378f8efd9aa2b0fb2ad33867c2

7 years agoMerge "Save environment snapshot and use at fork/exec" into nyc-mr1-dev
David Sehr [Mon, 22 Aug 2016 23:37:09 +0000 (23:37 +0000)]
Merge "Save environment snapshot and use at fork/exec" into nyc-mr1-dev
am: 19d9b1e227

Change-Id: Iad472ba0d242bfad43211692d1c28b4f43f00600

7 years agoSave environment snapshot and use at fork/exec
David Sehr [Mon, 22 Aug 2016 23:37:09 +0000 (23:37 +0000)]
Save environment snapshot and use at fork/exec
am: 1488ff8aa3

Change-Id: I904562490ccc66831a4513864719019bd4b761ad

7 years agoMerge "Save environment snapshot and use at fork/exec" into nyc-mr1-dev
David Sehr [Mon, 22 Aug 2016 23:07:35 +0000 (23:07 +0000)]
Merge "Save environment snapshot and use at fork/exec" into nyc-mr1-dev

7 years agoFix debugger calling new String().
Jeff Hao [Mon, 22 Aug 2016 20:35:56 +0000 (20:35 +0000)]
Fix debugger calling new String().
am: 95ca9d2099

Change-Id: Ia5b2477311036d4d55fb84f4895ba6167fea3d13

7 years agoFix debugger calling new String().
Jeff Hao [Sat, 20 Aug 2016 01:31:39 +0000 (18:31 -0700)]
Fix debugger calling new String().

Used to return an empty string instead of the newly created String.
Requires accompanying jdwp test fix to test String contents.

Bug: 30951794
Test: mm -j24 run-jdwp-tests-host

Merges two cherry-picks:
f15ec05896ddc5fec1f224ef97bdfebb72b5a855
9e0878494cdacd0877a1614041efc38ebb053017

Change-Id: Idc4725b82798a9b6d636c72e76715bc97ad30d23

7 years agoSave environment snapshot and use at fork/exec
David Sehr [Wed, 17 Aug 2016 02:22:57 +0000 (19:22 -0700)]
Save environment snapshot and use at fork/exec

Some applications may inadvertently or maliciously set of environment
variables such as LD_LIBRARY_PATH before spawning subprocesses.
To make this more difficult, save the environment at the time the
runtime starts and use the saved copy anytime Exec is called.

BUG=b/30160149
TEST=make test-art-{host,target}-gtest-utils_test

Change-Id: Ice0097bf0de30db3d4ead124caf93316f39e3df3

7 years agoMerge "Fix pending exception failure for encoded statics" into nyc-mr1-dev
Mathieu Chartier [Thu, 11 Aug 2016 18:03:33 +0000 (18:03 +0000)]
Merge "Fix pending exception failure for encoded statics" into nyc-mr1-dev
am: b6f58cbfad

Change-Id: I69786ff4810ccf8b625832382d9f752b5811ba99

7 years agoFix pending exception failure for encoded statics
Mathieu Chartier [Thu, 11 Aug 2016 18:03:33 +0000 (18:03 +0000)]
Fix pending exception failure for encoded statics
am: 5464c73567

Change-Id: Id83316ec538a13bd70e77b669c60ba37ee76d4ea

7 years agoMerge "Fix pending exception failure for encoded statics" into nyc-mr1-dev
Mathieu Chartier [Thu, 11 Aug 2016 17:56:04 +0000 (17:56 +0000)]
Merge "Fix pending exception failure for encoded statics" into nyc-mr1-dev

7 years agoMerge "ART: Check for more low-space situations in zygote" into nyc-mr1-dev
Andreas Gampe [Thu, 11 Aug 2016 02:09:09 +0000 (02:09 +0000)]
Merge "ART: Check for more low-space situations in zygote" into nyc-mr1-dev
am: 546ca1b013

Change-Id: I9a6e6f16636c369eb03e407a47e083183c465732

7 years agoART: Check for more low-space situations in zygote
Andreas Gampe [Thu, 11 Aug 2016 02:09:09 +0000 (02:09 +0000)]
ART: Check for more low-space situations in zygote
am: f242f66cf7

Change-Id: I8043e4a91d7aebe9a7c9fbd90cb0382eb8fa6789

7 years agoMerge "ART: Check for more low-space situations in zygote" into nyc-mr1-dev
TreeHugger Robot [Thu, 11 Aug 2016 02:01:53 +0000 (02:01 +0000)]
Merge "ART: Check for more low-space situations in zygote" into nyc-mr1-dev

7 years agoFix pending exception failure for encoded statics
Mathieu Chartier [Wed, 10 Aug 2016 20:57:39 +0000 (13:57 -0700)]
Fix pending exception failure for encoded statics

ReadValueToField may allocate a string and cause OOME, we were
not checking this each loop iteration. Throwing an exception
with a pending exception causes an abort.

Bug: 30690988

Test: test-art-host

(cherry picked from commit da595bec0f9af0b087822e4febc282fe8ec28192)

Change-Id: I4701a4dcc63553aeb5c7970f99fd7f136443b266

7 years agoART: Check for more low-space situations in zygote
Andreas Gampe [Wed, 10 Aug 2016 03:19:18 +0000 (20:19 -0700)]
ART: Check for more low-space situations in zygote

Even if a boot image exists and can be loaded, the rest of the
platform may not be able to boot. We previously only checked
after full image generation and missed this case.

Also prune the cache if there wasn't even space to put the boot
marker.

Bug: 30765660
Change-Id: Icd43746e681c62ce2e4e8745fb17bda65ca60372

7 years agoPut the deletion of profiling info under a GC critical section.
Nicolas Geoffray [Wed, 10 Aug 2016 10:43:16 +0000 (10:43 +0000)]
Put the deletion of profiling info under a GC critical section.
am: 99c959f386

Change-Id: I8302de355f210b78573d2a4b14a7bc1c53c2af7f

7 years agoPut the deletion of profiling info under a GC critical section.
Nicolas Geoffray [Sat, 30 Jul 2016 21:49:11 +0000 (22:49 +0100)]
Put the deletion of profiling info under a GC critical section.

Otherwise the GC could see dangling pointers.

bug:30033802

(cherry picked from commit cf48fa030780c3185f225d558b704c396f7713cc)

Change-Id: I2c43e973878f50dc147aa0af81551ecc942a790d

7 years agoFix profiling output to properly display class info.
Jeff Hao [Mon, 1 Aug 2016 23:38:02 +0000 (23:38 +0000)]
Fix profiling output to properly display class info.
am: 6b9c54c8ae

Change-Id: I789734e0aaa3d217b4221cab79e5a268c9c21675

7 years agoFix profiling output to properly display class info.
Jeff Hao [Wed, 27 Jul 2016 17:35:03 +0000 (10:35 -0700)]
Fix profiling output to properly display class info.

The profiler stores class def indexes, not type ids.

Bug: 30436198

(cherry-picked from commit 58d40f3a7245e65d57a5daf6bf27c3b209260044)

Change-Id: I63524957547c5e0dbaf1d752220de8d05473638f

7 years agoPass the right class loader when inlining.
Nicolas Geoffray [Thu, 28 Jul 2016 04:26:16 +0000 (04:26 +0000)]
Pass the right class loader when inlining.
am: 0a210d9b10

Change-Id: I21bb2189eb9220bab756a58408fc7099ff710996

7 years agoPass the right class loader when inlining.
Nicolas Geoffray [Thu, 28 Jul 2016 02:49:14 +0000 (03:49 +0100)]
Pass the right class loader when inlining.

Otherwise, method and type resolution can resolve to the wrong
things and as a side effect update the dex cache with wrong data.

bug:30403437
Change-Id: I23f94486f51c65e0a1328c6185b36084627e09b3
test:./art/test/run-test --host --jit --dev --no-prebuild 613

7 years agoJIT: Don\'t update the dex cache of another class loader.
Nicolas Geoffray [Thu, 21 Jul 2016 23:32:11 +0000 (23:32 +0000)]
JIT: Don\'t update the dex cache of another class loader.
am: e50a7b834b

Change-Id: Ib2019ac3afafebaa01c8b74f7e8e1744c85f367d

7 years agoJIT: Don't update the dex cache of another class loader.
Nicolas Geoffray [Tue, 19 Jul 2016 16:06:23 +0000 (17:06 +0100)]
JIT: Don't update the dex cache of another class loader.

This only works for properly delegating class loaders. But Java allows
non-delegating ones :(

bug:29964720

test:612-jit-dex-cache

(cherry picked from commit 491617a612c8a1c890e72d8ba780a151ddee8e11)
(cherry picked from commit a2d7cbb44e570ec0a9064dc93f57441e6ab9e45a)

(cherry picked from commit ae093d69f58c2b6257c3e5b82a32c135a1f33641)

Change-Id: I73df55286a9bdb3f96963e0756e3a8b784aa9077

7 years agoJIT: Don't update the dex cache of another class loader.
Nicolas Geoffray [Tue, 19 Jul 2016 16:06:23 +0000 (17:06 +0100)]
JIT: Don't update the dex cache of another class loader.

This only works for properly delegating class loaders. But Java allows
non-delegating ones :(

bug:29964720

test:612-jit-dex-cache

(cherry picked from commit 491617a612c8a1c890e72d8ba780a151ddee8e11)
(cherry picked from commit a2d7cbb44e570ec0a9064dc93f57441e6ab9e45a)

Change-Id: I2523ce1fd4cd36dc83394d0f77ffc3f844e80c69

7 years agoMerge "Do allocation fence before pushing on allocation stack" into nyc-mr1-dev
TreeHugger Robot [Tue, 19 Jul 2016 22:34:10 +0000 (22:34 +0000)]
Merge "Do allocation fence before pushing on allocation stack" into nyc-mr1-dev

7 years agoDo allocation fence before pushing on allocation stack
Mathieu Chartier [Mon, 18 Jul 2016 18:11:45 +0000 (11:11 -0700)]
Do allocation fence before pushing on allocation stack

Heap::VisitObjects relies on having valid classes for objects in
the allocation stack. If the writes reorder, the thread calling
VisitObjects could see the free list pointer instead of the class
of the object. I believe this is causing crashes in VisitObjects.

Bug: 28790624

Test: Volantis booted

(cherry picked from commit 011dc2c4b9f3a064cba801679aedd3251fe191e3)

Change-Id: Ib620acbcd641ccd59fea9a66f5587c5026110a22

7 years agoMerge "Add API for getting location of odex or oat file" into nyc-mr1-dev
Philip Cuadra [Thu, 14 Jul 2016 22:26:20 +0000 (22:26 +0000)]
Merge "Add API for getting location of odex or oat file" into nyc-mr1-dev

7 years agoAdd API for getting location of odex or oat file
Philip Cuadra [Tue, 12 Jul 2016 23:37:40 +0000 (16:37 -0700)]
Add API for getting location of odex or oat file

Add an API for getting the file path of odex or oat file given a dex
path.

Bug 28251566

Change-Id: Ibebaa20f15d8135b25d9eb5927b7979801ebf0b2

7 years agoFix a bug in ClassTableGet code generation for IMTs.
Nicolas Geoffray [Wed, 13 Jul 2016 13:13:48 +0000 (14:13 +0100)]
Fix a bug in ClassTableGet code generation for IMTs.

Introduced by:
  https://android-review.googlesource.com/#/c/244980/

test:566-polymorphic-inling for fixing x86 crash. Also
fixes a performance regression.
bug:29188168

(cherry picked from commit ff484b95b25a5181a6a8a191cbd11da501c97651)

Change-Id: Iae5a63cb24017222c3fefda695a0a39673719f51

7 years agoMerge "ART: Remove zygote OTA code" into nyc-mr1-dev
Andreas Gampe [Wed, 13 Jul 2016 18:29:47 +0000 (18:29 +0000)]
Merge "ART: Remove zygote OTA code" into nyc-mr1-dev

7 years agoMerge "Fix System.arraycopy when doing same array copying." into nyc-mr1-dev
Nicolas Geoffray [Mon, 11 Jul 2016 12:33:16 +0000 (12:33 +0000)]
Merge "Fix System.arraycopy when doing same array copying." into nyc-mr1-dev

7 years agoART: Remove zygote OTA code
Andreas Gampe [Sat, 9 Jul 2016 17:51:12 +0000 (10:51 -0700)]
ART: Remove zygote OTA code

The renaming and relabeling of the A/B artifacts is now done in
a special-purpose script started by init, so as to not complicate
the logic here (e.g., name of the current slot).

Partially reverts commit 754479f7aa056602de8282f4f03718b42c20b89b.

Bug: 25612095
Bug: 28069686
Change-Id: I4d965361000fd448e199c9af059b6d18bfe928bb

7 years agoRevert "Revert "Optimize IMT""
Artem Udovichenko [Thu, 30 Jun 2016 09:18:25 +0000 (09:18 +0000)]
Revert "Revert "Optimize IMT""

This reverts commit 88f288e3564d79d87c0cd8bb831ec5a791ba4861.

Test: Includes smali tests to exercise cts failures that led to revert.
These tests check that objects that don't implement any interfaces are
handled properly when interface methods are invoked on them.

Bug: 29188168 (for initial CL)
Bug: 29778499 (reason for revert)

Change-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115

7 years agoFix System.arraycopy when doing same array copying.
Nicolas Geoffray [Thu, 7 Jul 2016 11:07:42 +0000 (12:07 +0100)]
Fix System.arraycopy when doing same array copying.

At compile time, if constant source < constant destination, and we don't
know if the arrays are the same, then we must emit code that checks
if the two arrays are the same. If so, we jump to the slow path.

test:610-arraycopy

bug:30030084

(cherry picked from commit 9f65db89353c46f6b189656f7f55a99054e5cfce)

Change-Id:Ida67993d472b0ba4056d9c21c68f6e5239421f7d

7 years agoWork around Jack optimizations in arm64 shifter operand test.
Vladimir Marko [Tue, 26 Apr 2016 16:55:55 +0000 (17:55 +0100)]
Work around Jack optimizations in arm64 shifter operand test.

And also in the ror test.

Bug: 28392114

(cherry picked from commit 5bc80b9994bde67184adc1a168538c2a9b99fc8b)

Change-Id: I597a2556a81792d7a5289cc4925cb057ee57438d

7 years agoART: Add very-large threshold to dex2oat
Andreas Gampe [Sat, 25 Jun 2016 04:05:23 +0000 (21:05 -0700)]
ART: Add very-large threshold to dex2oat

Add a variable threshold to dex2oat. If the total dex file size for
an app reaches this threshold, dex2oat will punt all compilation and
compile the app with verify-at-runtime. This ensures smaller compile
time and memory thrashing, while still extracting the dex files and
thus helping with dirty memory later.

Added tests.

Bug: 29557002
Bug: 29790079
Test: m test-art-host-gtest-dex2oat_test
Change-Id: I78870e4a80ccaafcbbe56839e61ced0acd2ca05e

7 years agoFix merging HLoadClass with HNewInstance.
Vladimir Marko [Wed, 29 Jun 2016 19:10:20 +0000 (19:10 +0000)]
Fix merging HLoadClass with HNewInstance.
am: 2b8b6040d0

Change-Id: I31021cee60cd328e952f33bf8d98c6f26319c779

7 years agoFix merging HLoadClass with HNewInstance.
Vladimir Marko [Wed, 29 Jun 2016 13:59:07 +0000 (14:59 +0100)]
Fix merging HLoadClass with HNewInstance.

Do not merge HLoadClass with HNewInstance if they do not
come from the same dex instruction. This is the same check
as for moving the clinit check responsibility around.

Test: Added a regression test, run standard ART test suite
plus gcstress and ndebug modes on host and Nexus 9.

Bug: 29570861
Bug: 29321958

(cherry picked from commit c7591b4c0dd405a766f4d701deea6c3750101978)

Change-Id: I0f019c36dd991889caad2666e61bbcc6d9d9c91f

7 years agoMerge changes I2814a0b8,I05a7961f into nyc-mr1-dev
TreeHugger Robot [Wed, 29 Jun 2016 16:01:21 +0000 (16:01 +0000)]
Merge changes I2814a0b8,I05a7961f into nyc-mr1-dev

* changes:
  ART: Add dex2oat swap-usage parameters
  OatFileAssistantTest: do not relocate image randomly.

7 years agoART: Add dex2oat swap-usage parameters
Andreas Gampe [Fri, 24 Jun 2016 21:55:38 +0000 (14:55 -0700)]
ART: Add dex2oat swap-usage parameters

Make the dex2oat swap usage decision dependent on parameters that
can be changed on the command line. Both the dex file size and dex
file count can be modified through the following to new parameters:

  --swap-dex-size-threshold
  --swap-dex-count-threshold

The defaults remain the same (20MB and 2).

Factor out some dex2oat setup code from oat_file_assistant_test
and use it in a new dex2oat test.

Bug: 29557002
Test: m test-art-host-gtest-dex2oat_test
Test: m test-art-host-gtest-oat_file_assistant_test
Test: m test-art-host
Change-Id: I2814a0b895d960416d20b31c4b0052f98c9cb5e6

7 years agoRevert "Optimize IMT"
Jeff Hao [Tue, 28 Jun 2016 23:47:09 +0000 (23:47 +0000)]
Revert "Optimize IMT"

This reverts commit 0790af1391b316c5c12b4e135be357008c060696.

Bug: 29188168 (for initial CL)
Bug: 29778499 (reason for revert)

Change-Id: I2c3e4ec2cebdd40faec67ddb721b7acdc8e90061

7 years agoART: Disable no-prebuild test for run-test 608
Andreas Gampe [Mon, 27 Jun 2016 23:04:02 +0000 (23:04 +0000)]
ART: Disable no-prebuild test for run-test 608
am: 0748ed9fcf

Change-Id: I24f3f299b9f7159b17857a503559436905667b65

7 years agoDo not remove loads/store with unresolved accesses.
Nicolas Geoffray [Mon, 27 Jun 2016 22:58:49 +0000 (22:58 +0000)]
Do not remove loads/store with unresolved accesses.
am: c2f1735e04

Change-Id: I83f86184e8ab5bd1143b8f66d35bd4c752995ea4

7 years agoART: Disable no-prebuild test for run-test 608
Andreas Gampe [Mon, 27 Jun 2016 21:55:02 +0000 (14:55 -0700)]
ART: Disable no-prebuild test for run-test 608

This test relies on unresolved types, which is not the case in a
no-prebuild setting (as all parts will be on the classpath).

Bug: 29433999
Change-Id: I11b1c6b446905aacd7a520796d0b2217319cefc7
Test: m ART_TEST_RUN_TEST_NO_PREBUILD=true test-art-host-run-test
(cherry picked from commit 06b7c4de44979f1cb51707d2236142bc733ebf75)

7 years agoDo not remove loads/store with unresolved accesses.
Nicolas Geoffray [Mon, 27 Jun 2016 09:03:29 +0000 (10:03 +0100)]
Do not remove loads/store with unresolved accesses.

Due to AOT and compiling classes that are not ready yet
(eg missing a super class), we need to be conservative when
accessing fields and can end up in a situation where the same
field can be resolved and unresolved within the same method
(because of inlining). Therefore, disable removing loads and
stores in a method when there are unresolved accesses.

bug:29433999

(cherry picked from commit b93a16517dce12b83e9d5d3b599446e25fcc157a)

Change-Id: I8fcfb52c584222474a8220eb16c6581350b702e0

7 years agoOatFileAssistantTest: do not relocate image randomly.
Richard Uhler [Tue, 26 Apr 2016 17:24:38 +0000 (10:24 -0700)]
OatFileAssistantTest: do not relocate image randomly.

Manually relocate the boot image to a known location before starting
the runtime so that the image won't be randomly relocated. This fixes
flaky test failures due to the image randomly being relocated by 0.

Bug: 28294887
Bug: 29557002

(cherry picked from commit a48403eb54494ac52f81c9ecc9da723075ac65da)

Change-Id: I05a7961f1237a05e89d3f631c959e260ccfe0b70

7 years agoMerge \"Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.\" into...
Oleksiy Vyalov [Wed, 22 Jun 2016 22:56:10 +0000 (22:56 +0000)]
Merge \"Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.\" into nyc-dev
am: f7a0543d88

Change-Id: Ifd8495cb08cf25f94ac0b87dc844f95c41ccda25

7 years agoMerge "Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable." into...
Oleksiy Vyalov [Wed, 22 Jun 2016 22:43:47 +0000 (22:43 +0000)]
Merge "Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable." into nyc-dev

7 years agoCall prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.
Oleksiy Vyalov [Tue, 21 Jun 2016 23:21:37 +0000 (16:21 -0700)]
Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.

Enabled Yama security may prevent non-privileged debugger from
attaching to the app. However, if app is marked is debuggable
then it should acceptable to allow debugger with arbitrary pid
to connect the app.

Bug: 29549463

Change-Id: I50c79dbca272dc473e489cc61471628e2fdc4a03

7 years agoFix braino in the test to make it work on target.
Nicolas Geoffray [Wed, 22 Jun 2016 08:55:00 +0000 (08:55 +0000)]
Fix braino in the test to make it work on target.
am: af17a5e38a

Change-Id: I900bac835a6380a770d56b41c1749b276f79577a

7 years agoPropagate flags to ShouldHaveEmbeddedVTable
Mathieu Chartier [Wed, 15 Jun 2016 22:07:03 +0000 (15:07 -0700)]
Propagate flags to ShouldHaveEmbeddedVTable

Pass kVerifyFlags and kReadBarrierrOption to ShouldHaveEmbeddedVTable
from ShouldHaveImt.

Bug: 29188168

(cherry picked from commit efeb9f01308c5c4b723ff905cf5bea1636f7a549)

Change-Id: Ia76d8cd340fbb0527955f4ef611d6e14bebf8dd9

7 years agoOptimize IMT
Nelli Kim [Fri, 13 May 2016 10:08:53 +0000 (13:08 +0300)]
Optimize IMT

* Remove IMT for classes which do not implement interfaces
* Remove IMT for array classes
* Share same IMT

Saved memory (measured on hammerhead):
boot.art:
Total number of classes: 3854
Number of affected classes: 1637
Saved memory: 409kB

Chrome (excluding classes in boot.art):
Total number of classes: 2409
Number of affected classes: 1259
Saved memory: 314kB

Google Maps (excluding classes in boot.art):
Total number of classes: 6988
Number of affected classes: 2574
Saved memory: 643kB

Performance regression on benchmarks/InvokeInterface.java benchmark
(measured timeCall10Interface)
1st launch: 9.6%
2nd launch: 6.8%

Bug: 29188168

(cherry picked from commit badee9820fcf5dca5f8c46c3215ae1779ee7736e)

Change-Id: If8db765e3333cb78eb9ef0d66c2fc78a5f17f497

7 years agoFix braino in the test to make it work on target.
Nicolas Geoffray [Tue, 21 Jun 2016 12:05:24 +0000 (13:05 +0100)]
Fix braino in the test to make it work on target.

bug:29449194

(cherry picked from commit d8aa513eba9c6100a829168d31938610a99eecbb)

Change-Id: I58bd94a6c8cef7b6ac52dfb375a1df1937510767

7 years agoMerge changes from topic 'PHENOMENAL_CHANGE' into nyc-mr1-dev
Mathieu Chartier [Tue, 21 Jun 2016 01:05:30 +0000 (01:05 +0000)]
Merge changes from topic 'PHENOMENAL_CHANGE' into nyc-mr1-dev

* changes:
  Use collector specific helper classes
  Avoid duplicate class for mark compact

7 years agoART: Use null for the BootClassLoader in LoadLibrary
Andreas Gampe [Sat, 18 Jun 2016 02:31:06 +0000 (02:31 +0000)]
ART: Use null for the BootClassLoader in LoadLibrary
am: f7e0db0ce1

Change-Id: Ibd9858ffa97d23d896efbf6d55da1c0a44db5e9a

7 years agoUse collector specific helper classes
Mathieu Chartier [Thu, 16 Jun 2016 18:44:28 +0000 (11:44 -0700)]
Use collector specific helper classes

Changed to use inner classes. Also changed some visitors to lambdas.

Bug: 29413717
Bug: 19534862

(cherry picked from commit a07f55913824ab4215a9a4f827fa9c043c0d44d9)

Change-Id: I631c8bfe5f795eda4623c5bb4f357f2dd12358e2

7 years agoAvoid duplicate class for mark compact
Mathieu Chartier [Thu, 16 Jun 2016 17:28:43 +0000 (10:28 -0700)]
Avoid duplicate class for mark compact

Renamed BitmapSetSlowPathVisitor to MCBitmapSetSlowPathVisitor for
the mark compact case.

Bug: 29413717

(cherry picked from commit d528f6819571ce5276cb71134044c55408a901a1)

Change-Id: Id5a7040c0c22a7a66309b8cbd7f874819852b10e

7 years agoART: Use null for the BootClassLoader in LoadLibrary
Andreas Gampe [Fri, 17 Jun 2016 19:46:14 +0000 (12:46 -0700)]
ART: Use null for the BootClassLoader in LoadLibrary

We must translate the fake BootClassLoader object to the internally
used null when loading libraries.

Bug: 29449194
Change-Id: I823d34e209149b5b96529a423c60a1d77bf8e9d1

7 years agoUse ScopedObjectAccess in ThreadList::Dump
Mathieu Chartier [Sat, 11 Jun 2016 00:04:20 +0000 (17:04 -0700)]
Use ScopedObjectAccess in ThreadList::Dump

Prevent deadlocks if two different threads are calling Dump at the
same time:

Thread 1: Requests thread 2 to suspend
Thread 2: Requests thread 1 to suspend
Both threads are suspended and blocked on ScopedObjectAccess in
thread dumping.

Added to suspend all stress, reduced thread count to 4 temporarily
since this is the maximum number of simultaneous checkpoints.

Bug: 28988206
Bug: 26118154

(cherry picked from commit e99f53203904c23a26e53ca1bf6a4e45814146fe)

Change-Id: I9e4b8391ebad0bca0e42a03819c58c99ddba6b35

7 years agoRevert "Skip DumpForSigQuit if debugger is active"
Mathieu Chartier [Fri, 17 Jun 2016 00:02:52 +0000 (17:02 -0700)]
Revert "Skip DumpForSigQuit if debugger is active"

Bug: 26118154

This reverts commit 0b8f1bfdfc721a41d98d13e12c4c67f62f698dfc.

Change-Id: I03c743c1385e2488be1e21ee2ce34a74e6f22546

7 years agoART: Turn off unattached thread dumping
Andreas Gampe [Tue, 14 Jun 2016 00:56:06 +0000 (00:56 +0000)]
ART: Turn off unattached thread dumping
am: a3e8fc3aab

Change-Id: If0995694634388a42bde1e527f07ff8f16335776

7 years agoART: Turn off unattached thread dumping
Andreas Gampe [Mon, 13 Jun 2016 23:15:33 +0000 (16:15 -0700)]
ART: Turn off unattached thread dumping

May be responsible for lack of ANR dumps in some situations.

Bug: 29248079
Change-Id: Ib742c063b1d77216eddfbf4392d17d024e028bf8

7 years agoRemove too aggressive DCHECKs.
Nicolas Geoffray [Mon, 13 Jun 2016 12:49:44 +0000 (12:49 +0000)]
Remove too aggressive DCHECKs.
am: f7d994622a

Change-Id: I4ea0b0a4b1d72168e517b3ccc81ec9c9ed5bdbf0

7 years agoRemove too aggressive DCHECKs.
Nicolas Geoffray [Fri, 10 Jun 2016 15:06:34 +0000 (16:06 +0100)]
Remove too aggressive DCHECKs.

A class can move from a state greater or equal than resolved
to erroneous concurrently to the verifier or the compiler.

bug:29239283
Change-Id: I89f3fe1c1d9556c6c99b8e005b3ec02de7f01b85

7 years agoMerge \"Fix dex file leak in oat file manager\" into nyc-dev
Mathieu Chartier [Fri, 10 Jun 2016 16:44:27 +0000 (16:44 +0000)]
Merge \"Fix dex file leak in oat file manager\" into nyc-dev
am: 28ea938d90

Change-Id: Icd02f322782eefaac6559425ddec5989ed13a2c2

7 years agoMerge "Fix dex file leak in oat file manager" into nyc-dev
Mathieu Chartier [Fri, 10 Jun 2016 16:38:49 +0000 (16:38 +0000)]
Merge "Fix dex file leak in oat file manager" into nyc-dev

7 years agoMerge \"ART: Fix swap usage determination in dex2oat\" into nyc-dev
Andreas Gampe [Fri, 10 Jun 2016 01:46:26 +0000 (01:46 +0000)]
Merge \"ART: Fix swap usage determination in dex2oat\" into nyc-dev
am: 6822c26c81

Change-Id: I396c40f75164b90999f91283771bdd71ceaae3be