OSDN Git Service

android-x86/art.git
8 years agoUse per character suffix for multi image
Mathieu Chartier [Wed, 9 Mar 2016 00:50:20 +0000 (16:50 -0800)]
Use per character suffix for multi image

E.g. if you pull the oat files from the device, you get oat files
with the following names:
system@framework@boot.art

But the name stored in the image header is:
boot.art

So we need to append system@framework@ as a file name prefix to each
image file to get the actual one.

Required for adding oatdump support for app images.

Bug: 22858531
Bug: 27408512

Change-Id: I93dd3f16652400f232e6175670fcd572395879e0

8 years agoDelete alloc tracking map outside of critical section
Mathieu Chartier [Wed, 2 Mar 2016 20:52:37 +0000 (12:52 -0800)]
Delete alloc tracking map outside of critical section

There can be lock order violations otherwise due to runtime shutdown
lock that may get acquired in the condition variable destructor.

Bug: 27506909

(cherry picked from commit 0b8b4a609120b90081d898dbf3c26f68fe80de96)

Change-Id: I6972c450db8856e30c13e27aea94b01943618f64

8 years agoFix allocation tracking race
Mathieu Chartier [Tue, 23 Feb 2016 18:37:32 +0000 (10:37 -0800)]
Fix allocation tracking race

Need to instrument the stubs before calling
Heap::SetAlloctrackingEnabled or else we can get this DCHECK failing
DCHECK(!IsAllocTrackingEnabled())

Bug: 27506909

(cherry picked from commit 16e51beb9a771ffe7be833173e3dd5f2dac63892)

Change-Id: I45d6f716ed55371d41e7b7673209166401dbc62e

8 years agoMerge "Support multidex run-test with Jack" into nyc-dev
Sebastien Hertz [Tue, 8 Mar 2016 14:03:31 +0000 (14:03 +0000)]
Merge "Support multidex run-test with Jack" into nyc-dev

8 years agoMerge "More run-test with Jack" into nyc-dev
Sebastien Hertz [Tue, 8 Mar 2016 14:03:08 +0000 (14:03 +0000)]
Merge "More run-test with Jack" into nyc-dev

8 years agoMerge "Handle unexpected cases in profile saver" into nyc-dev
Calin Juravle [Tue, 8 Mar 2016 13:32:08 +0000 (13:32 +0000)]
Merge "Handle unexpected cases in profile saver" into nyc-dev

8 years agoHandle unexpected cases in profile saver
Calin Juravle [Tue, 8 Mar 2016 12:52:52 +0000 (12:52 +0000)]
Handle unexpected cases in profile saver

There are some unexpected cases that should not occur in a normal run.
Log warnings but avoid crashing if:
- dex location is empty
- we cannot figure the real paths of the locations.

Bug: 27532729
Change-Id: I2c9ee8d616378d1d6f771b071f61321a2916ce27

8 years agoSupport multidex run-test with Jack
Sebastien Hertz [Thu, 3 Mar 2016 17:08:17 +0000 (18:08 +0100)]
Support multidex run-test with Jack

Updates default-build script to compile multidex run-tests with
Jack. Such test needs a 'multidex.jpp' file specifying how to
partition classes in the output dex files (mainly how to stick some
classes in the classes.dex file and others in a classes2.dex file).

Bug: 19467889

(cherry picked from commit 4856ca7f652b889c176a2af747d5cc4b334fc1c6)

Change-Id: I056d49d50f62f9fadbc6749fb4b185d5bb3dea12

8 years agoMore run-test with Jack
Sebastien Hertz [Mon, 29 Feb 2016 15:54:16 +0000 (16:54 +0100)]
More run-test with Jack

Updates the following tests
* 004-ReferenceMap: updates expectations
* 004-StackWalk: updates expectations
* 089-many-methods: updates expectations
* 138-duplicate-classes-check2: add Jack support
* 454-get-vreg: updates expectations

Bug: 19467889

(cherry picked from commit c94ff128d770f5126d7685972b95a789c0b55cb0)

Change-Id: Ie9927201e45046d4b89a4b028d0844bf25831d0b

8 years agoFix lock order violation
Mathieu Chartier [Tue, 8 Mar 2016 01:41:39 +0000 (17:41 -0800)]
Fix lock order violation

Release class linker lock before acquiring heap bitmap lock.

Bug: 27493510
Change-Id: I7809e0f591513b85d295d43e639152ce92984f9c

8 years agoAdd verification for image ArtMethod declaring classes
Mathieu Chartier [Tue, 8 Mar 2016 00:13:54 +0000 (16:13 -0800)]
Add verification for image ArtMethod declaring classes

Try and see if any ArtMethods in the image have declaring classes
that are not marked in the heap live bitmap. Trying to mark these
would cause a SIGSEGV since the bitmap is read only.

TODO: Disable for performance.

Bug: 27493510
Change-Id: I231b07b84d98dcd7ee1557c18956c86264058ee1

8 years agoAdd systrace logging to ScopedCodeCacheWrite
Mathieu Chartier [Mon, 7 Mar 2016 21:48:08 +0000 (13:48 -0800)]
Add systrace logging to ScopedCodeCacheWrite

Shows if we are taking a long time to mprotect.

Bug: 27502458

Change-Id: Ib83aed3d15b252baaf8f0cffab6bf58d69471d64

8 years agoMerge "Increase kDumpWaitTimeout 10x for target builds" into nyc-dev
Mathieu Chartier [Mon, 7 Mar 2016 21:22:25 +0000 (21:22 +0000)]
Merge "Increase kDumpWaitTimeout 10x for target builds" into nyc-dev

8 years agoIncrease kDumpWaitTimeout 10x for target builds
Mathieu Chartier [Mon, 7 Mar 2016 19:59:01 +0000 (11:59 -0800)]
Increase kDumpWaitTimeout 10x for target builds

New timeout is 100s, the old one was occasionally hit by overloaded
device. This caused a confusing crash in the barrier destructor
since not all the threads had went through the barrier yet.

Bug: 27334917
Change-Id: I5bcdaa39cfc104f3555f62b6117b417c8bf36e7a

8 years agoDon't use ScopedObjectAccess in Heap::DumpSpaces
Mathieu Chartier [Mon, 7 Mar 2016 18:25:04 +0000 (10:25 -0800)]
Don't use ScopedObjectAccess in Heap::DumpSpaces

ScopedObjectAccess does not work well if the mutator lock is
excusively held while in a suspend thread state. This caused
deadlocks and DCHECK failures.

Bug: 27493316
Change-Id: I75ab223b2d15ab4e53753f1046c580228fc1866e

8 years agoMerge "Add some debugging for zygote crash." into nyc-dev
Nicolas Geoffray [Mon, 7 Mar 2016 15:54:45 +0000 (15:54 +0000)]
Merge "Add some debugging for zygote crash." into nyc-dev

8 years agoAdd some debugging for zygote crash.
Nicolas Geoffray [Mon, 7 Mar 2016 15:44:08 +0000 (15:44 +0000)]
Add some debugging for zygote crash.

bug:27340451

(cherry picked from commit de166544d6539942d3507ce47910f601c97b7532)

Change-Id: Ie4400064d81e260b41bd1408a9ed54be8ca0479e

8 years agoMerge "Use MarkIfNotInToSpace for SemiSpace::MarkObject" into nyc-dev
Mathieu Chartier [Sat, 5 Mar 2016 02:33:27 +0000 (02:33 +0000)]
Merge "Use MarkIfNotInToSpace for SemiSpace::MarkObject" into nyc-dev

8 years agoMerge "Add more systracing everywhere" into nyc-dev
Mathieu Chartier [Sat, 5 Mar 2016 02:06:07 +0000 (02:06 +0000)]
Merge "Add more systracing everywhere" into nyc-dev

8 years agoUse MarkIfNotInToSpace for SemiSpace::MarkObject
Mathieu Chartier [Fri, 4 Mar 2016 18:30:39 +0000 (10:30 -0800)]
Use MarkIfNotInToSpace for SemiSpace::MarkObject

SemiSpace::MarkObject is called from ModUnionScanImageRootVisitor
which. These roots may be visited multiple times by the GC. One
example is the allocation stack traces and a class visiting the same
ArtMethod twice.

Bug: 27435111

(cherry picked from commit 9a9aee662ebde18bed2a8e263c921df4f529b27b)

Change-Id: I2387a6efaed79d37f2ee47725637af29e78e3548

8 years agoFix potential linear alloc memory leak
Mathieu Chartier [Wed, 2 Mar 2016 18:30:23 +0000 (10:30 -0800)]
Fix potential linear alloc memory leak

Previously, if we created a linear alloc for a class loader but
never created the class table, the linear alloc would never get
freed since it would have no corresponding ClassLoaderData.

Fixes valgrind-test-art-host-gtest-oat_test

Bug: 27384882
Bug: 22858531

(cherry picked from commit 5b83050affa6a3b1d3863c0b903f9d48fe4aefb2)

Change-Id: I71b650eac4e33212a7f03c43141db99e635a19ad

8 years agoAdd more systracing everywhere
Mathieu Chartier [Fri, 4 Mar 2016 22:58:03 +0000 (14:58 -0800)]
Add more systracing everywhere

Added to:
JIT
DexFile functions
Oat file manager

Added helper ScopedTrace to prevent errors and reduce excess code.

Bug: 27502458

Change-Id: Ifaeff8913d79eefc797380987d13cc00456266f8

8 years agoOnly visit app image classes in class loader
Mathieu Chartier [Thu, 3 Mar 2016 00:08:31 +0000 (16:08 -0800)]
Only visit app image classes in class loader

Only update dex cache arrays of added classes since the declaring
class is in image DCHECK fails for other classes in the class loader.

Also some cleanup to prevent app images leaving invalid state if
they get rejected.

Bug: 22858531
Bug: 27431418

(cherry picked from commit 6973100705716bffce3768a8a0908d7ca1d02ec1)

Change-Id: Ib05364c44f2b943e3341ef2b1dd43337833de143

8 years agoAdd systrace to VerifyClass
Mathieu Chartier [Thu, 3 Mar 2016 03:23:17 +0000 (19:23 -0800)]
Add systrace to VerifyClass

Useful to see if verifier is preempting anything.

Bug: 27398183
Change-Id: I3e318d2c9c5cbc4254b3ffe8e6e8c7b98a0f2ef7

8 years agoMerge "Update GetDexOptNeeded to handle the different levels of compilation" into...
Calin Juravle [Thu, 3 Mar 2016 10:54:00 +0000 (10:54 +0000)]
Merge "Update GetDexOptNeeded to handle the different levels of compilation" into nyc-dev

8 years agoClear inline caches if a ProfilingInfo gets revived.
Nicolas Geoffray [Wed, 2 Mar 2016 17:09:35 +0000 (17:09 +0000)]
Clear inline caches if a ProfilingInfo gets revived.

This avoids stalled class references.

Bug: 27398183
Bug: 23128949
Bug: 26846185

(cherry picked from commit 511e41b4ec2d378a5c434598ebd0b3d6136fff9d)

Change-Id: I5e33496859e65456d185cc09ca12736dd6414d77

8 years agoRevert "Revert "Use the interpreter as a heartbeat for the JIT.""
Nicolas Geoffray [Wed, 2 Mar 2016 12:05:30 +0000 (12:05 +0000)]
Revert "Revert "Use the interpreter as a heartbeat for the JIT.""

Bug: 27398183
Bug: 23128949
Bug: 26846185

This reverts commit a96917a6983a5abbe973255a3846fda549fb1657.

(cherry picked from commit 35122443e5f8606cc5a660ac32745a06aefb341b)

Change-Id: Ib02401c76bf28e1aac6bbce01f97ddd0373c1ba5

8 years agoUpdate GetDexOptNeeded to handle the different levels of compilation
Calin Juravle [Thu, 18 Feb 2016 18:47:37 +0000 (18:47 +0000)]
Update GetDexOptNeeded to handle the different levels of compilation

extract-only or profile-guide oat files are considered up to date from
runtime perspective as they don't necessary need (re)compilation or
relocation. However, it is useful to return a more refined code to the
caller so that they can decide whether or not that's good enough.

For example, the package manager might decide to still compile a
previous extract-only and during profile guide compilation we should
always recompile even if we have an oat file.

Note that dex files compiled via ClassLoaders will still be fully
compiled.

This change introduces:
- a new key in the oat header kCompilationType to capture what type of
compilation has been made. Note tha the key might be missing. The
distinction is needed in order to avoid recompilation of a previous
fully compiled file during profile guide compilation analysis.
- a new argument to GetDexOptNeeded which tells the runtime to cast its
opinion whether or not the oat file is up to date relative to the
desired target type of compilation.

Bug: 27189430
Change-Id: Icd9794b1df6f6e21242e1dd1d5b5d064963dbbb7

8 years agoFix allocation tracking race
Mathieu Chartier [Tue, 1 Mar 2016 02:13:38 +0000 (18:13 -0800)]
Fix allocation tracking race

Check if changed from uninstrumented to instrumented during GC for
alloc. If we changed, retry the allocation with kInstrumented = true.

Added stress test.

Bug: 27337759

(cherry picked from commit eebc3af4453f5c1fb5fd80c710cfd49566080d28)

Change-Id: I8fa50975b558199fcf142c8555476053001ace50

8 years agoLower JIT thread priority
Andreas Gampe [Tue, 1 Mar 2016 04:49:38 +0000 (20:49 -0800)]
Lower JIT thread priority

Modify the JIT thread to run at a lower priority in order to allow
UI-critical threads to get enough CPU time.

Bug: 27417985
Change-Id: I5b962a7970ae81dac9e01a8011128c538cd78e40

8 years agoMerge "Record foreign dex files loaded by the app in the profile" into nyc-dev
Calin Juravle [Tue, 1 Mar 2016 17:59:18 +0000 (17:59 +0000)]
Merge "Record foreign dex files loaded by the app in the profile" into nyc-dev

8 years agoRecord foreign dex files loaded by the app in the profile
Calin Juravle [Wed, 24 Feb 2016 10:13:09 +0000 (10:13 +0000)]
Record foreign dex files loaded by the app in the profile

A foreign dex file is a file which is not owned by the app
(it's not part of its code paths or its private data directory).

When such a dex file is loaded by the app, the runtime will record
a marker in a dedicated profile folder (foreing_dex_profile_path).
The marker is just a file named after the canonical location of the
dex file where '/' is replaced by '@'.

The markers will be used by the system server system server to
decide if the apk should be fully or profile guide compiled.

Bug: 27334750
Bug: 26080105
Change-Id: If4fa8208be4e2f6f0b748b8a5417c4ae9c2d5df6

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.

(cherry picked from commit 032c0051eb47f1f62586602894e5833356f4f9ec)

Change-Id: I7f9fcb0785ec45aaeded8ed65b7fa1abcf798282

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.

(cherry picked from commit 07dbbca0b42cb8da1811de8209b4a7d4becfc7b2)

Change-Id: I5da504491dc4ff5d665891df5c93d892790d990d

8 years agoMerge "Forgot to initialize JIT memory use fields." into nyc-dev
Nicolas Geoffray [Mon, 29 Feb 2016 16:55:49 +0000 (16:55 +0000)]
Merge "Forgot to initialize JIT memory use fields." into nyc-dev

8 years agoMerge "Introduce partial code cache collection." into nyc-dev
Nicolas Geoffray [Mon, 29 Feb 2016 16:55:15 +0000 (16:55 +0000)]
Merge "Introduce partial code cache collection." into nyc-dev

8 years agoMerge "Cleanup polymorphic inlining to the same target." into nyc-dev
Nicolas Geoffray [Mon, 29 Feb 2016 16:19:10 +0000 (16:19 +0000)]
Merge "Cleanup polymorphic inlining to the same target." into nyc-dev

8 years agoMerge "Bug fix for polymorphic inlining." into nyc-dev
Nicolas Geoffray [Mon, 29 Feb 2016 16:18:48 +0000 (16:18 +0000)]
Merge "Bug fix for polymorphic inlining." into nyc-dev

8 years agoForgot to initialize JIT memory use fields.
Nicolas Geoffray [Wed, 24 Feb 2016 17:18:25 +0000 (17:18 +0000)]
Forgot to initialize JIT memory use fields.

bug:23128949

(cherry picked from commit b0d220835f2ddc03510f17fcc4fb4c64b426a0f5)

Change-Id: Iea81925ebd0fd60fe58a972269313a98f93fdac5

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.

bug:23128949

(cherry picked from commit fcdd72941810f03460a8efca0c6255439be80c35)

Change-Id: I7f6c428511ee7fe346c665be8f02880bcc317cae

8 years agoIntroduce partial code cache collection.
Nicolas Geoffray [Tue, 23 Feb 2016 13:56:43 +0000 (13:56 +0000)]
Introduce partial code cache collection.

It will collect code that is known unused (because it deoptimized),
and osr code.

bug:26846185

(cherry picked from commit 8d37250f7b9a7839b11488f45a1842b025026f94)

Change-Id: Iffe87e356066a3f0bd28cb3df41c17bf2ac9ea0f

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

(cherry picked from commit 4f97a212b6ff801eb9f7f88a87f44e0584339cca)

Change-Id: Ia4007743ae00860f679f96f45eb14d26e6dc3fce

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

(cherry picked from commit a1d8ddfaf09545f99bc326dff97ab604d4574eb6)

Change-Id: Ice0373ec0a1c24d78121634a377f6f502e814cfb

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

(cherry picked from commit 17b8bce064fe4c0b29117abe489b7f8c2c950d43)

Change-Id: Ic69489fef1ba72f735ee613d5416eeadc703c06e

8 years agoMerge "Support new JDWP InterfaceType.InvokeMethod command" into nyc-dev
Alex Light [Fri, 26 Feb 2016 23:41:30 +0000 (23:41 +0000)]
Merge "Support new JDWP InterfaceType.InvokeMethod command" into nyc-dev

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.

(cherry picked from commit 4a28e1e4e02aa44aa6fd20e22d50f9d73f6279cc)

Bug: 27218415

Change-Id: Ie4dc1876a20567240267f309dc18f1aec2c1b4c2

8 years agoMerge "Add and use loaded class profiling" into nyc-dev
Mathieu Chartier [Fri, 26 Feb 2016 21:07:19 +0000 (21:07 +0000)]
Merge "Add and use loaded class profiling" into nyc-dev

8 years agoMerge "ART: Add unstarted-runtime functions" into nyc-dev
Andreas Gampe [Fri, 26 Feb 2016 20:58:51 +0000 (20:58 +0000)]
Merge "ART: Add unstarted-runtime functions" into nyc-dev

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

Change-Id: I91ccd686394cc2517512f66abb0e277f3d26d4da

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

(cherry picked from commit e9d2ca237620b0af28eed9fef52b09bddebdbc6f)

Bug: 27259142

Change-Id: I2a1b31db85dc487c1e6a62609d4497c3a4d4d3a6

8 years agoMerge "Simplify LoadNativeLibrary()" into nyc-dev
Dimitry Ivanov [Fri, 26 Feb 2016 18:03:54 +0000 (18:03 +0000)]
Merge "Simplify LoadNativeLibrary()" into nyc-dev

8 years agoMerge "Revert "Preload public libraries on Runtime::Start()"" into nyc-dev
Nicolas Geoffray [Fri, 26 Feb 2016 10:02:05 +0000 (10:02 +0000)]
Merge "Revert "Preload public libraries on Runtime::Start()"" into nyc-dev

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

(cherry picked from commit fc07555f6b8ce07b2c0897c6919597b53faa419d)

Change-Id: I13946fcd6cdf61645a4a60e619b343da8d9be341

8 years agoRevert "Preload public libraries on Runtime::Start()"
Nicolas Geoffray [Fri, 26 Feb 2016 08:48:04 +0000 (08:48 +0000)]
Revert "Preload public libraries on Runtime::Start()"

Loading is done in app_process.

Bug: http://b/27245894

This reverts commit 7bca74e53d3665bcd243d4e0277f6561c0c80271.

Change-Id: Ie2edbe88dea867fcd5cca109d279f1c19e4df6bb

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
Change-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985

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

(cherry picked from commit a6e81ed4c185b7362cd5199ebe5507d00883a9b0)

Change-Id: Idd0bbe1ea45fc6ab75a42bfeb0ef250e8b3e2f1b

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

(cherry picked from commit 31317c319667cf1d7d0f61229ccb5e76f22606cf)

Change-Id: Id4997fb9abc28fa8c1dd1e78ff01234637b229d3

8 years agoMerge "Preload public libraries on Runtime::Start()" into nyc-dev
Dimitry Ivanov [Thu, 25 Feb 2016 00:39:57 +0000 (00:39 +0000)]
Merge "Preload public libraries on Runtime::Start()" into nyc-dev

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

8 years agoSimplify LoadNativeLibrary()
Dimitry Ivanov [Wed, 24 Feb 2016 21:33:33 +0000 (13:33 -0800)]
Simplify LoadNativeLibrary()

With ApplicationLoaders.getClassLoader() ensuring
linker-namespace initialization there is no longer
need for LoadNativeLibrary() and callers to pass
along namespace-specific information to art.

This change removes unnecessary parameters of such
calls.

Bug: http://b/27189432
Bug: http://b/22548808
Change-Id: I341d35a2d5195e634678b352f4361f8712984b69

8 years agoAdd MapAnonymous handling for null error_str
Mathieu Chartier [Wed, 24 Feb 2016 18:09:23 +0000 (10:09 -0800)]
Add MapAnonymous handling for null error_str

We use MapAnonymous with null error_str for app image loading when
we want to fail quickly. Also avoid doing CheckNonOverlapping in
CheckMapRequest if error_msg is null. The result from
CheckNonOverlapping is unused and CheckNonOverlapping is slow since
it creates a backtrace map.

Bug: 22858531
Bug: 26746779

(cherry picked from commit 83723aedac536fd8a3cd6e1662dbd6260e576194)

Change-Id: I0ff03a778b36303aa1e256fe7238dece5b3bbfab

8 years agoFix profman path for the gtest.
Calin Juravle [Tue, 23 Feb 2016 16:53:30 +0000 (16:53 +0000)]
Fix profman path for the gtest.

(cherry picked from commit de4fb63be26cd561111cad4574cac5e0c2314d11)

Change-Id: If710aaf047b6f557abd0cebfe9169c58fcb248a6

8 years agoRevert "Revert "Add profman tool: responsible to process profiles""
Calin Juravle [Tue, 23 Feb 2016 12:00:03 +0000 (12:00 +0000)]
Revert "Revert "Add profman tool: responsible to process profiles""

This reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.

(cherry picked from commit 2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e)

Change-Id: I38086cc9de939bad33bcd13b1677e1626af61c29

8 years agoMake JNI work correctly with default methods.
Alex Light [Mon, 22 Feb 2016 21:43:29 +0000 (13:43 -0800)]
Make JNI work correctly with default methods.

Also adds some tests for JNI and DefaultMethods.

Bug: 27259142
Bug: 24618811

(cherry picked from commit 3612149aee482ab7a17da68b0ef5fef3879729a2)

Change-Id: I31222e3e41059d803be1dbb0f40e1144ac4bf457

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.

Bug: 27315287
Change-Id: Iaa66848fc07a0c779bc6e047bd154e2a4b87e1c8

8 years agoDon't allocate mspaces of less than a page.
Nicolas Geoffray [Tue, 23 Feb 2016 13:52:01 +0000 (13:52 +0000)]
Don't allocate mspaces of less than a page.

Fixes jit tests in debug mode.

bug:26846185

(cherry picked from commit 7ca4b77c98ffdf7a4db26fd9f84b2cfcc274c4aa)

Change-Id: I73d357ee47f532c3d7ae65ddacbd5c88170dfe1d

8 years agoMerge remote-tracking branch 'goog/master' into nyc-dev
Nicolas Geoffray [Tue, 23 Feb 2016 11:12:17 +0000 (11:12 +0000)]
Merge remote-tracking branch 'goog/master' into nyc-dev

bug:27173201
bug:23128949
bug:26846185
Change-Id: I7333734be71a83dc4808735ead80ae3a4dcd841d

8 years agoMerge "Dex-wide ArenaPool scoping for AOT compilation" am: e4c77b4d37
Vladimir Marko [Tue, 23 Feb 2016 10:57:44 +0000 (10:57 +0000)]
Merge "Dex-wide ArenaPool scoping for AOT compilation" am: e4c77b4d37
am: c4199dff25

* commit 'c4199dff25d960878bde79bcc2ee676b080955c1':
  Dex-wide ArenaPool scoping for AOT compilation

8 years agoMerge "Add a new kReservedCapacity to decide when to start GC code." am: 08e992e41e
Nicolas Geoffray [Tue, 23 Feb 2016 10:57:27 +0000 (10:57 +0000)]
Merge "Add a new kReservedCapacity to decide when to start GC code." am: 08e992e41e
am: 075bf626e8

* commit '075bf626e80a7ad6858d734cb88bcbe293caa33d':
  Add a new kReservedCapacity to decide when to start GC code.

8 years agoMerge "Dex-wide ArenaPool scoping for AOT compilation"
Vladimir Marko [Tue, 23 Feb 2016 10:54:41 +0000 (10:54 +0000)]
Merge "Dex-wide ArenaPool scoping for AOT compilation"
am: e4c77b4d37

* commit 'e4c77b4d37024c1ed74e72494e69605942fead61':
  Dex-wide ArenaPool scoping for AOT compilation

8 years agoMerge "Add a new kReservedCapacity to decide when to start GC code."
Nicolas Geoffray [Tue, 23 Feb 2016 10:54:32 +0000 (10:54 +0000)]
Merge "Add a new kReservedCapacity to decide when to start GC code."
am: 08e992e41e

* commit '08e992e41e5e234ecc6b38a4ab53d4876fd077b6':
  Add a new kReservedCapacity to decide when to start GC code.

8 years agoMerge "Dex-wide ArenaPool scoping for AOT compilation"
Vladimir Marko [Tue, 23 Feb 2016 10:52:23 +0000 (10:52 +0000)]
Merge "Dex-wide ArenaPool scoping for AOT compilation"

8 years agoMerge "Add a new kReservedCapacity to decide when to start GC code."
Nicolas Geoffray [Tue, 23 Feb 2016 10:52:11 +0000 (10:52 +0000)]
Merge "Add a new kReservedCapacity to decide when to start GC code."

8 years agoMerge "Fix static dex2oat build" am: 4764d4e253
Calin Juravle [Tue, 23 Feb 2016 10:45:40 +0000 (10:45 +0000)]
Merge "Fix static dex2oat  build" am: 4764d4e253
am: f006a4bc9d

* commit 'f006a4bc9d112af0f90bf09d194da2bf681af806':
  Fix static dex2oat  build

8 years agoMerge "Fix static dex2oat build"
Calin Juravle [Tue, 23 Feb 2016 10:42:41 +0000 (10:42 +0000)]
Merge "Fix static dex2oat  build"
am: 4764d4e253

* commit '4764d4e253aaea1595bbe1f5aaa8677ea9319b79':
  Fix static dex2oat  build

8 years agoMerge "Fix static dex2oat build"
Calin Juravle [Tue, 23 Feb 2016 10:41:25 +0000 (10:41 +0000)]
Merge "Fix static dex2oat  build"

8 years agoMerge "Build jdwp tests with Jack in vogar" into nyc-dev
Sebastien Hertz [Tue, 23 Feb 2016 08:51:55 +0000 (08:51 +0000)]
Merge "Build jdwp tests with Jack in vogar" into nyc-dev
am: b7555a478a

* commit 'b7555a478a1d2b16ad2093c8499449bfd3bf9bc8':
  Build jdwp tests with Jack in vogar

8 years agoMerge "Build jdwp tests with Jack in vogar" into nyc-dev
Sebastien Hertz [Tue, 23 Feb 2016 08:49:07 +0000 (08:49 +0000)]
Merge "Build jdwp tests with Jack in vogar" into nyc-dev

8 years agoMerge "Revert "Force Jack to consider multidex annotations"" am: 920e1230d6
Delphine Martin [Tue, 23 Feb 2016 08:43:09 +0000 (08:43 +0000)]
Merge "Revert "Force Jack to consider multidex annotations"" am: 920e1230d6
am: 16d7cbbd42

* commit '16d7cbbd42c6690592b4dda7823f2693b7829dba':
  Revert "Force Jack to consider multidex annotations"

8 years agoMerge "Revert "Force Jack to consider multidex annotations""
Delphine Martin [Tue, 23 Feb 2016 08:32:52 +0000 (08:32 +0000)]
Merge "Revert "Force Jack to consider multidex annotations""
am: 920e1230d6

* commit '920e1230d617ec1194dc22cab3ec9d704e1b30dc':
  Revert "Force Jack to consider multidex annotations"

8 years agoBuild jdwp tests with Jack in vogar
Sebastien Hertz [Wed, 17 Feb 2016 16:05:52 +0000 (17:05 +0100)]
Build jdwp tests with Jack in vogar

These tests are compiled with Jack in the CTS so we do the same
with vogar now.

Bug: 27218415

(cherry picked from commit 6705dabdb9a882cc7829abed41e0bb3196fc829c)

Change-Id: Idccaef9e2ee2434f6ad2568286504063b0fe5268

8 years agoMerge "Revert "Force Jack to consider multidex annotations""
Delphine Martin [Tue, 23 Feb 2016 08:19:30 +0000 (08:19 +0000)]
Merge "Revert "Force Jack to consider multidex annotations""

8 years agoMerge "Add regression test for alloc stack trace and unloading" am: 6a5c5b8f17
Mathieu Chartier [Tue, 23 Feb 2016 01:37:46 +0000 (01:37 +0000)]
Merge "Add regression test for alloc stack trace and unloading" am: 6a5c5b8f17
am: d1060f4d5b

* commit 'd1060f4d5b4e104260777f145f1083ee747a5957':
  Add regression test for alloc stack trace and unloading

8 years agoAdd regression test for alloc stack trace and unloading
Mathieu Chartier [Tue, 23 Feb 2016 01:32:53 +0000 (01:32 +0000)]
Add regression test for alloc stack trace and unloading
am: dcfb382456

* commit 'dcfb3824562a5d75c8080686211584b1b40002b5':
  Add regression test for alloc stack trace and unloading

8 years agoMerge "Add regression test for alloc stack trace and unloading"
Mathieu Chartier [Tue, 23 Feb 2016 01:30:53 +0000 (01:30 +0000)]
Merge "Add regression test for alloc stack trace and unloading"
am: 6a5c5b8f17

* commit '6a5c5b8f1738404bebc5f880e6cc0967cbb687e1':
  Add regression test for alloc stack trace and unloading

8 years agoAdd regression test for alloc stack trace and unloading
Mathieu Chartier [Tue, 23 Feb 2016 00:56:54 +0000 (16:56 -0800)]
Add regression test for alloc stack trace and unloading

Test creates allocations in a different loader, then unloads it.
This would free the ArtMethod except that we now visit them as
roots.

Bug: 26849503

(cherry picked from commit 8a7ef10d10ac1509b79d315fe865bd3c4731262b)

Change-Id: If63e26b49380e7b99244ee25e70e729a1736344a

8 years agoMerge "Add regression test for alloc stack trace and unloading"
Mathieu Chartier [Tue, 23 Feb 2016 01:21:13 +0000 (01:21 +0000)]
Merge "Add regression test for alloc stack trace and unloading"

8 years agoAdd regression test for alloc stack trace and unloading
Mathieu Chartier [Tue, 23 Feb 2016 00:56:54 +0000 (16:56 -0800)]
Add regression test for alloc stack trace and unloading

Test creates allocations in a different loader, then unloads it.
This would free the ArtMethod except that we now visit them as
roots.

Bug: 26849503
Change-Id: Ied9f5942ff9022b1cd39052363f119a630ffbaef

8 years agoMerge "Visit stack trace roots" am: 5039728b6c
Mathieu Chartier [Tue, 23 Feb 2016 00:41:09 +0000 (00:41 +0000)]
Merge "Visit stack trace roots" am: 5039728b6c
am: 9e75d48fb0

* commit '9e75d48fb0563adffa72a0d54146e6343366fd07':
  Visit stack trace roots

8 years agoVisit stack trace roots
Mathieu Chartier [Tue, 23 Feb 2016 00:34:22 +0000 (00:34 +0000)]
Visit stack trace roots
am: ac5fb70796

* commit 'ac5fb70796f7fbf210e664992b052c05438939eb':
  Visit stack trace roots

8 years agoMerge "Visit stack trace roots"
Mathieu Chartier [Tue, 23 Feb 2016 00:26:51 +0000 (00:26 +0000)]
Merge "Visit stack trace roots"
am: 5039728b6c

* commit '5039728b6ce61e70bfca5d35889ecbd4150a5af9':
  Visit stack trace roots

8 years agoVisit stack trace roots
Mathieu Chartier [Mon, 22 Feb 2016 22:49:04 +0000 (14:49 -0800)]
Visit stack trace roots

We need to visit the declaring classes of all the methods in the
allocation stack traces to prevent class unloading for these
methods. If the class gets unloaded, it will free the linear alloc
resulting in hprof crashing during dumping.

Also a bit of clean up.

Bug: 26849503

(cherry picked from commit a7deef9260bd53dfd6b51ace02b4e6200078d5ea)

Change-Id: If7df7259d0e5044dbcf35f5b4e86f6cf2e583adb

8 years agoMerge "Visit stack trace roots"
Mathieu Chartier [Tue, 23 Feb 2016 00:18:30 +0000 (00:18 +0000)]
Merge "Visit stack trace roots"

8 years agoVisit stack trace roots
Mathieu Chartier [Mon, 22 Feb 2016 22:49:04 +0000 (14:49 -0800)]
Visit stack trace roots

We need to visit the declaring classes of all the methods in the
allocation stack traces to prevent class unloading for these
methods. If the class gets unloaded, it will free the linear alloc
resulting in hprof crashing during dumping.

Also a bit of clean up.

Bug: 26849503

Change-Id: I5cc57436294e4399388cb497819148b8a3b973d9

8 years agoMerge "Revert "Add profman tool: responsible to process profiles"" am: a5502e31cb
Nicolas Geoffray [Mon, 22 Feb 2016 22:51:49 +0000 (22:51 +0000)]
Merge "Revert "Add profman tool: responsible to process profiles"" am: a5502e31cb
am: 12986557d2

* commit '12986557d2776f62eeff6d7c2523b233f18bf2a2':
  Revert "Add profman tool: responsible to process profiles"

8 years agoMerge "Fix class_linker_test for valgrind." am: 4a582f864c
Hiroshi Yamauchi [Mon, 22 Feb 2016 22:46:33 +0000 (22:46 +0000)]
Merge "Fix class_linker_test for valgrind." am: 4a582f864c
am: e8693f0624

* commit 'e8693f06247dd769eaad614c5573163f1b890b2f':
  Fix class_linker_test for valgrind.

8 years agoMerge "Fix CC collector thread flip and JNI critical section deadlocks." am: 8852d809b2
Hiroshi Yamauchi [Mon, 22 Feb 2016 22:46:25 +0000 (22:46 +0000)]
Merge "Fix CC collector thread flip and JNI critical section deadlocks." am: 8852d809b2
am: c8bdb4597e

* commit 'c8bdb4597eeab5b33e2382e0399e74de919f78f1':
  Fix CC collector thread flip and JNI critical section deadlocks.

8 years agoMerge "ART: Add Class.getEnclosingClass() to UnstartedRuntime" am: eacf4cbb21
Andreas Gampe [Mon, 22 Feb 2016 22:46:16 +0000 (22:46 +0000)]
Merge "ART: Add Class.getEnclosingClass() to UnstartedRuntime" am: eacf4cbb21
am: 1024d3e274

* commit '1024d3e2747d1efc54b5ff502411fca3d4efd0fd':
  ART: Add Class.getEnclosingClass() to UnstartedRuntime

8 years agoMerge "ART: Enable JitProfiling for Arm Mterp" am: e33d20e321
Bill Buzbee [Mon, 22 Feb 2016 22:46:07 +0000 (22:46 +0000)]
Merge "ART: Enable JitProfiling for Arm Mterp" am: e33d20e321
am: e0c79bead6

* commit 'e0c79bead65d3955adf5ebf2b121ce95c4225401':
  ART: Enable JitProfiling for Arm Mterp

8 years agoMerge "Optimizing/x86-64: Use MOVL in Load64BitValue() if IsUint<32>()." am: 8fda759172
Vladimir Marko [Mon, 22 Feb 2016 22:45:55 +0000 (22:45 +0000)]
Merge "Optimizing/x86-64: Use MOVL in Load64BitValue() if IsUint<32>()." am: 8fda759172
am: 5d82869763

* commit '5d82869763ae3238781a0746c6c653e5b1cd4f9a':
  Optimizing/x86-64: Use MOVL in Load64BitValue() if IsUint<32>().