OSDN Git Service

android-x86/art.git
7 years agoMerge "Adjustments for changes made to java.lang.Class"
Neil Fuller [Wed, 17 Aug 2016 12:17:06 +0000 (12:17 +0000)]
Merge "Adjustments for changes made to java.lang.Class"

7 years agoAdjustments for changes made to java.lang.Class
Neil Fuller [Tue, 16 Aug 2016 18:53:07 +0000 (19:53 +0100)]
Adjustments for changes made to java.lang.Class

Fix up the runtime after removal of the annotationType field
from java.lang.Class.

Test: make test-art-host / boot a device
Change-Id: I5f37567d2b5ec381b35e66fef29287abe307b840

7 years agoMerge "Always mark zygote large objects for CC"
Treehugger Robot [Wed, 17 Aug 2016 03:18:36 +0000 (03:18 +0000)]
Merge "Always mark zygote large objects for CC"

7 years agoAlways mark zygote large objects for CC
Mathieu Chartier [Tue, 16 Aug 2016 19:15:59 +0000 (12:15 -0700)]
Always mark zygote large objects for CC

Prevent needing to gray holders of zygote large objects.
System wide zygote space PSS after boot:
12644 kB -> 5571 kB for CC.

Also PSS reduction in zygote large objects themselves since their
gray bit would have been set each GC.
Overall LOS savings hard to measure, could be up to 316 * 4KB per
app since there are 316 zygote large objects.

Also clear mod-union tables for image spaces to prevent dirty
image pages if any of the image spaces point to zygote large objects.
System wide .art mmap: 37432 kB -> 34372 kB

System server before (N6P):
LOS shared dirty: 12888 kB
Zygote space shared dirty: 700 kB
Zygote space private dirty: 868 kB
.art private dirty: 1696 kB

After:
LOS shared dirty 13672 kB
Zygote space shared dirty: 1072 kB
Zygote space private dirty: 496 kB
.art private dirty: 1432 kB

Bug: 29516968

Test: test-art-host with baker CC, debug N6P phone booting

Change-Id: Ia37ce2c11217cf56885bd1d1dc084332fcbb7843

7 years agoMerge "jni: Fast path for @FastNative annotated java methods"
Treehugger Robot [Tue, 16 Aug 2016 21:51:02 +0000 (21:51 +0000)]
Merge "jni: Fast path for @FastNative annotated java methods"

7 years agojni: Fast path for @FastNative annotated java methods
Igor Murashkin [Fri, 29 Jul 2016 16:51:58 +0000 (09:51 -0700)]
jni: Fast path for @FastNative annotated java methods

Adds a faster path for java methods annotated with
dalvik.annotation.optimization.FastNative .

Intended to replace usage of fast JNI (registering with "!(FOO)BAR" descriptors).

Performance Microbenchmark Results (Angler):
* Regular JNI cost in nanoseconds: 115
* Fast JNI cost in nanoseconds: 60
* @FastNative cost in nanoseconds: 36

Summary: Up to 67% faster (vs fast jni) JNI transition cost

Change-Id: Ic23823ae0f232270c068ec999fd89aa993894b0e

7 years agoMerge "Update ahat README and manifest for release 0.7."
Treehugger Robot [Tue, 16 Aug 2016 19:53:15 +0000 (19:53 +0000)]
Merge "Update ahat README and manifest for release 0.7."

7 years agoMerge "Remove unused GetDalvikCacheFilenameOrDie."
Treehugger Robot [Tue, 16 Aug 2016 17:59:51 +0000 (17:59 +0000)]
Merge "Remove unused GetDalvikCacheFilenameOrDie."

7 years agoMerge "Welcome to JavaFuzz as our latest A[a]rt tools team member!"
Treehugger Robot [Tue, 16 Aug 2016 16:34:36 +0000 (16:34 +0000)]
Merge "Welcome to JavaFuzz as our latest A[a]rt tools team member!"

7 years agoWelcome to JavaFuzz as our latest A[a]rt tools team member!
Aart Bik [Tue, 9 Aug 2016 17:49:54 +0000 (10:49 -0700)]
Welcome to JavaFuzz as our latest A[a]rt tools team member!

Rationale:
JavaFuzz is tool for generating random Java programs with
the objective of fuzz testing the ART infrastructure. Each
randomly generated Java program can be run under various
modes of execution, such as using the interpreter, using
the optimizing compiler, using an external reference
implementation, or using various target architectures.
Any difference between the outputs (a divergence) may
indicate a bug in one of the execution modes.

Test: tbd

Bug=30610121

Change-Id: I92dcac35f5229996936d01a0ba7f5acf6dc7b433

7 years agoRemove unused GetDalvikCacheFilenameOrDie.
Richard Uhler [Mon, 15 Aug 2016 23:12:57 +0000 (16:12 -0700)]
Remove unused GetDalvikCacheFilenameOrDie.

Change-Id: I8987fa488a89865d4a5fb56dd00cc396ee33bcce
Test: m test-art-host-gtest-utils_test32
Test: m build-art-host-tests
Test: m build-art-target-tests

7 years agoMerge "Change gcstress runtest option"
Mathieu Chartier [Mon, 15 Aug 2016 22:28:19 +0000 (22:28 +0000)]
Merge "Change gcstress runtest option"

7 years agoMerge "ART: Refactor ImageSpace loading"
Treehugger Robot [Mon, 15 Aug 2016 21:32:30 +0000 (21:32 +0000)]
Merge "ART: Refactor ImageSpace loading"

7 years agoUpdate ahat README and manifest for release 0.7.
Richard Uhler [Mon, 15 Aug 2016 18:01:01 +0000 (11:01 -0700)]
Update ahat README and manifest for release 0.7.

Change-Id: Iccc5db7112cb92e24e9e294273a3ce2b0d4b7aba
Test: Launch ahat and verify it reports 0.7 as the version.

7 years agoART: Refactor ImageSpace loading
Andreas Gampe [Sat, 13 Aug 2016 04:53:32 +0000 (21:53 -0700)]
ART: Refactor ImageSpace loading

Make the code more straightforward so it is easier to reason
about and extend.

Also change return types to unique pointers so it's clear that
it is the caller's responsibility to free those when necessary.

Bug: 30832951
Test: m test-art-host
Test: device booting
Change-Id: I3216eb702e45357a48af5158dacbe40e79bd1ae9

7 years agoMerge "Clean up use of GetDalvikCache."
Treehugger Robot [Mon, 15 Aug 2016 17:12:02 +0000 (17:12 +0000)]
Merge "Clean up use of GetDalvikCache."

7 years agoMerge "Improve READ_BARRIER_MARK_REG for arm32"
Mathieu Chartier [Mon, 15 Aug 2016 16:50:11 +0000 (16:50 +0000)]
Merge "Improve READ_BARRIER_MARK_REG for arm32"

7 years agoMerge "Revert "Enable IntermediateAddress for primitive arrays with read barriers.""
Treehugger Robot [Mon, 15 Aug 2016 14:35:48 +0000 (14:35 +0000)]
Merge "Revert "Enable IntermediateAddress for primitive arrays with read barriers.""

7 years agoRevert "Enable IntermediateAddress for primitive arrays with read barriers."
Roland Levillain [Mon, 15 Aug 2016 13:17:06 +0000 (13:17 +0000)]
Revert "Enable IntermediateAddress for primitive arrays with read barriers."

This CL breaks the angler-userdebug build with
`ART_USE_READ_BARRIER=true`.

Test: Build angler-userdebug with `ART_USE_READ_BARRIER=true`.
Bug: 30762467
Bug: 26601270
Bug: 12687968

This reverts commit 12ecf0800d465acdaa3deccd383ff8ed3428a183.

Change-Id: Ia2069ac9436d2336311dd8d0f183c02e587586ae

7 years agoMerge "ARM64: VIXL: Support a newer version of VIXL."
Roland Levillain [Mon, 15 Aug 2016 10:03:32 +0000 (10:03 +0000)]
Merge "ARM64: VIXL: Support a newer version of VIXL."

7 years agoChange gcstress runtest option
Mathieu Chartier [Fri, 12 Aug 2016 23:11:24 +0000 (16:11 -0700)]
Change gcstress runtest option

No longer passes down SS as the collector. Motivation is to allow
running gcstress with concurrent copying.

New usage is for SS:
mm test-art-host ART_TEST_GC_STRESS=true ART_DEFAULT_GC_TYPE=SS

Bug: 30807718

Test: mm test-art-host ART_TEST_GC_STRESS=true ART_DEFAULT_GC_TYPE=SS

Change-Id: I4416c1ca9ead027536acc9d24b1ec80d5a68c6a1

7 years agoImprove READ_BARRIER_MARK_REG for arm32
Mathieu Chartier [Fri, 12 Aug 2016 20:19:44 +0000 (13:19 -0700)]
Improve READ_BARRIER_MARK_REG for arm32

Use blocked register IP as scratch, avoid pushing in fast path.

Clean up slow path to not have simpler logic and one less memory
write.

Add simple fast path handling for region space TLAB object
allocation.

Test: test-art-target, N6P booting with CC baker

Bug: 30162165

Change-Id: I6594e42d3d6277ffe7bb79df09df8be6bee85eb5

7 years agoMerge "Fix heap poisoning"
Mathieu Chartier [Sat, 13 Aug 2016 00:06:30 +0000 (00:06 +0000)]
Merge "Fix heap poisoning"

7 years agoMerge "Make test work when running ndebug."
Treehugger Robot [Fri, 12 Aug 2016 23:16:45 +0000 (23:16 +0000)]
Merge "Make test work when running ndebug."

7 years agoFix heap poisoning
Mathieu Chartier [Fri, 12 Aug 2016 22:44:44 +0000 (15:44 -0700)]
Fix heap poisoning

Was wrong register.

Test: test-art-host-run-test CC table lookup + poisoning.

Bug: 30162165
Change-Id: If347a40963bcc2fb9e21c54b5405c852bcd3af08

7 years agoMerge "Revert "Revert "Iterative move coalescing for gc regalloc"""
Treehugger Robot [Fri, 12 Aug 2016 22:07:41 +0000 (22:07 +0000)]
Merge "Revert "Revert "Iterative move coalescing for gc regalloc"""

7 years agoMerge "ART: Remove zygote OTA code"
Treehugger Robot [Fri, 12 Aug 2016 21:58:25 +0000 (21:58 +0000)]
Merge "ART: Remove zygote OTA code"

7 years agoMake test work when running ndebug.
Alex Light [Fri, 12 Aug 2016 21:43:48 +0000 (14:43 -0700)]
Make test work when running ndebug.

Change-Id: Iea58ccef51fddaeae4b1fb7084a7956400a81dfe
Test: ART_TEST_RUN_TEST_NDEBUG=true mma -j40 test-art-host-run-test-900-hello-plugin

7 years agoMerge "Use TestCodeGeneratorX86 in codegen unit tests"
Treehugger Robot [Fri, 12 Aug 2016 20:54:05 +0000 (20:54 +0000)]
Merge "Use TestCodeGeneratorX86 in codegen unit tests"

7 years agoRevert "Revert "Iterative move coalescing for gc regalloc""
Matthew Gharrity [Fri, 12 Aug 2016 16:10:45 +0000 (16:10 +0000)]
Revert "Revert "Iterative move coalescing for gc regalloc""

This reverts commit 6f61ee5623a676ce983ccfa1aba9b2ae1237e163,
and fixes the arena allocator issues in the original CL.
Functionality from the original CL has not changed.

Test: m valgrind-test-art-host-gtest-register_allocator_test
Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host-run-test

Change-Id: Idd979f4e03f0c2800e0c07a0a7d392c8a4230aab

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
(cherry picked from commit ff2a8ef2ed6b3f21da26f85197170d7d2a9f5134)

7 years agoClean up use of GetDalvikCache.
Richard Uhler [Fri, 12 Aug 2016 16:05:13 +0000 (09:05 -0700)]
Clean up use of GetDalvikCache.

Switch the only caller of the non-void version of GetDalvikCache that set
create_if_absent true to use the void version of GetDalvikCache. Then no
callers of the non-void version of GetDalvikCache set create_if_absent to
true, so that argument is no longer needed. And without create_if_absent,
there is no case when the function will abort, so the 'OrDie" option is no
longer necessary.

Change-Id: I83f60dcc8a8f3b1f91fd2971e9028f6a7dd8384d
Test: m art-test-host
Test: m art-test-target

7 years agoMerge "ART: Reduce stack frame size limit on host"
Treehugger Robot [Fri, 12 Aug 2016 18:19:54 +0000 (18:19 +0000)]
Merge "ART: Reduce stack frame size limit on host"

7 years agoMerge "Optimize x86_64 TLAB allocation speed"
Mathieu Chartier [Fri, 12 Aug 2016 17:34:56 +0000 (17:34 +0000)]
Merge "Optimize x86_64 TLAB allocation speed"

7 years agoMerge changes I852b4daf,Id648eaed
Treehugger Robot [Fri, 12 Aug 2016 17:33:34 +0000 (17:33 +0000)]
Merge changes I852b4daf,Id648eaed

* changes:
  Add basic runtime-plugins support.
  Create a basic agent loading framework.

7 years agoMerge "ART: Configure stack guard size in the Makefile"
Treehugger Robot [Fri, 12 Aug 2016 17:11:01 +0000 (17:11 +0000)]
Merge "ART: Configure stack guard size in the Makefile"

7 years agoMerge "Fix duplicate checks in JNI macro assemblers."
Treehugger Robot [Fri, 12 Aug 2016 15:14:44 +0000 (15:14 +0000)]
Merge "Fix duplicate checks in JNI macro assemblers."

7 years agoMerge "Adjust spacing before NOLINT comments in ART."
Roland Levillain [Fri, 12 Aug 2016 13:45:57 +0000 (13:45 +0000)]
Merge "Adjust spacing before NOLINT comments in ART."

7 years agoFix duplicate checks in JNI macro assemblers.
Vladimir Marko [Fri, 12 Aug 2016 13:26:15 +0000 (14:26 +0100)]
Fix duplicate checks in JNI macro assemblers.

Instead of checking one register twice, check the other
register passed to the function.

Test: Run ART test suite on host and Nexus 5.
Bug: 30739460
Change-Id: If868ea14f5c192982488ed065b279a019b5b7cf4

7 years agoARM64: VIXL: Support a newer version of VIXL.
Artem Serov [Mon, 8 Aug 2016 14:11:24 +0000 (15:11 +0100)]
ARM64: VIXL: Support a newer version of VIXL.

Please note that compiling VIXL with -Wshadow is a known VIXL issue.

This will be resolved in a later version of VIXL, when we can drop
the deprecated API for getters and setters.

For more info take a look at VIXL_DEPRECATED in the VIXL source code.

Change-Id: Iea30b1a7b065f9b16a92c6cc7ebdc50ef068b348

7 years agoAdjust spacing before NOLINT comments in ART.
Roland Levillain [Thu, 11 Aug 2016 22:53:33 +0000 (23:53 +0100)]
Adjust spacing before NOLINT comments in ART.

Note that neither clang-tidy nor cpplint.py complain about
these style "issues", precisely because of the NOLINT
comments.

Test: WITH_TIDY=1 WITH_TIDY_CHECKS='-*,misc-macro-parentheses' mmma art
Change-Id: Id692fd394ffbd4fe208cbbe4407b4d5e208462bb

7 years agoMerge "ARM: Add vldm/vstm assembler support."
Vladimir Marko [Fri, 12 Aug 2016 11:23:40 +0000 (11:23 +0000)]
Merge "ARM: Add vldm/vstm assembler support."

7 years agoMerge "Initialize Heap's collector pointers to null."
Treehugger Robot [Fri, 12 Aug 2016 10:22:57 +0000 (10:22 +0000)]
Merge "Initialize Heap's collector pointers to null."

7 years agoMerge "Revert "Iterative move coalescing for gc regalloc""
Treehugger Robot [Fri, 12 Aug 2016 08:01:43 +0000 (08:01 +0000)]
Merge "Revert "Iterative move coalescing for gc regalloc""

7 years agoRevert "Iterative move coalescing for gc regalloc"
Andreas Gampe [Fri, 12 Aug 2016 06:33:15 +0000 (06:33 +0000)]
Revert "Iterative move coalescing for gc regalloc"

There are lifetime issues with allocators and coloring
iterations that got flagged by valgrind.

This reverts commit 465ed699e810868fe5bb39730e6d149a4734372d.

Change-Id: I9e08172321af61d109c116a4f0742fa809e8094b
Test: m test-art-host

7 years agoMerge "Remove kRestrictCompilationFiltersToImage"
Treehugger Robot [Fri, 12 Aug 2016 06:28:56 +0000 (06:28 +0000)]
Merge "Remove kRestrictCompilationFiltersToImage"

7 years agoMerge "Enable compiled-methods= dex2oat switch"
Treehugger Robot [Fri, 12 Aug 2016 06:16:40 +0000 (06:16 +0000)]
Merge "Enable compiled-methods= dex2oat switch"

7 years agoART: Reduce stack frame size limit on host
Andreas Gampe [Fri, 12 Aug 2016 04:11:59 +0000 (21:11 -0700)]
ART: Reduce stack frame size limit on host

Clang isn't that bad anymore.

Change-Id: Id9f3e3e34a743b43c6b535d2757be7869a8cf7ea

7 years agoART: Configure stack guard size in the Makefile
Andreas Gampe [Fri, 12 Aug 2016 01:35:58 +0000 (18:35 -0700)]
ART: Configure stack guard size in the Makefile

Configure the stack guard reserved size through defines set in
the Makefile. This can be used to increase the gap depending on
the configuration, which may be required to safely support Java
stack overflows in instrumented builds.

Bug: 30766843
Change-Id: Icdd3209e3a261ea8383ef8eab38153255339b04a
Test: m test-art-host

7 years agoMerge "Iterative move coalescing for gc regalloc"
Andreas Gampe [Fri, 12 Aug 2016 01:43:26 +0000 (01:43 +0000)]
Merge "Iterative move coalescing for gc regalloc"

7 years agoOptimize x86_64 TLAB allocation speed
Mathieu Chartier [Wed, 10 Aug 2016 01:37:09 +0000 (18:37 -0700)]
Optimize x86_64 TLAB allocation speed

Added assembly fast path code for resolved and initialized object
region TLAB allocations. Removed 3 instructions from TLAB fast path.

Added assembly fast path for array TLAB region allocators.

Should have more speedups for read barrier fast paths during
resolved and initialized alloc entrypoints.

Bug: 30162165

Test: test-art-host CC baker

Change-Id: I64dd06be5f18c8d6a5de0f15f0e2e7d488e99f18

7 years agoUse TestCodeGeneratorX86 in codegen unit tests
Matthew Gharrity [Fri, 12 Aug 2016 00:20:05 +0000 (17:20 -0700)]
Use TestCodeGeneratorX86 in codegen unit tests

The codegen unit tests are supposed to use special "test" code
generators when targeting ARM and x86 (due to differing calling
conventions between the C++ source code and the generated code),
yet TestCodeGeneratorX86 was not being used. This fixes that.

(The tests were only succeeding because the register allocator happened
to not assign the EBX register.)

Test: m test-art-host-gtest-codegen_test

Change-Id: Ia3dd6998c38e9ff27b8c2734457f86b3fed44ab4

7 years agoAdd basic runtime-plugins support.
Alex Light [Thu, 11 Aug 2016 17:48:03 +0000 (10:48 -0700)]
Add basic runtime-plugins support.

This allows one to pass shared-libraries on the command line that the
runtime will load as plugins. They have access to runtime code and can
install hooks to add functionality. Currently the only hook they can
touch is JavaVMExt::AddEnvironmentHook to register a callback for
GetEnv(). More hooks might be added in the future.

Test: ./test/run-test 900
Change-Id: I852b4daf5a3fa71e9888722bc07794632c0e5010

7 years agoCreate a basic agent loading framework.
Alex Light [Thu, 28 Jul 2016 17:07:45 +0000 (10:07 -0700)]
Create a basic agent loading framework.

Currently we only allow agents to be loaded at runtime startup, though
this is expected to change soon.

Test: ./test/run-test --host 900
Change-Id: Id648eaed4bbbe6fdef41d64922d023a4db0bfa54

7 years agoIterative move coalescing for gc regalloc
Matthew Gharrity [Fri, 22 Jul 2016 15:52:13 +0000 (08:52 -0700)]
Iterative move coalescing for gc regalloc

Implement iterative move coalescing for graph coloring
register allocation. Based on Andrew Appel's implementation
in "Modern Compiler Implementation in Java", modified to
support constraints such as pair intervals.

Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host

Change-Id: I8642297d3bd798a4fc4de4b356ac3304098471a5

7 years agoInitialize Heap's collector pointers to null.
Vladimir Marko [Thu, 11 Aug 2016 17:25:53 +0000 (18:25 +0100)]
Initialize Heap's collector pointers to null.

Test: Run ART test suite on host.
Bug: 30807718
Change-Id: I9b83b44df250b00af48dc1aa653d78aea84d0874

7 years agoMerge "x86/x86-64: Shorter fast-path for read barrier field load."
Treehugger Robot [Thu, 11 Aug 2016 18:41:55 +0000 (18:41 +0000)]
Merge "x86/x86-64: Shorter fast-path for read barrier field load."

7 years agoMerge "ARM64: Use libvixld when compiling for debug mode."
Treehugger Robot [Thu, 11 Aug 2016 18:37:50 +0000 (18:37 +0000)]
Merge "ARM64: Use libvixld when compiling for debug mode."

7 years agoMerge "Full enable new round implementation on x86/x86_64"
Aart Bik [Thu, 11 Aug 2016 18:24:10 +0000 (18:24 +0000)]
Merge "Full enable new round implementation on x86/x86_64"

7 years agoARM: Add vldm/vstm assembler support.
Artem Serov [Fri, 15 Jul 2016 14:01:13 +0000 (15:01 +0100)]
ARM: Add vldm/vstm assembler support.

Change-Id: Id97417de8ebd07fc1fbee5d17e4b1c620a2c44cc

7 years agoARM64: Use libvixld when compiling for debug mode.
Alexandre Rames [Thu, 11 Aug 2016 16:04:14 +0000 (17:04 +0100)]
ARM64: Use libvixld when compiling for debug mode.

VIXL debug mode checks are valuable to catch dangerous code that can
lead to bugs.

This patch includes a couple of fixes for issues spotted by VIXL in debug mode.

Change-Id: I388ae1ffd9256ad74d0b6ce06f79cc7927a5f28a

7 years agox86/x86-64: Shorter fast-path for read barrier field load.
Vladimir Marko [Thu, 11 Aug 2016 13:16:57 +0000 (14:16 +0100)]
x86/x86-64: Shorter fast-path for read barrier field load.

Test: Tested with ART_USE_READ_BARRIER=true on host.
Bug: 29966877
Bug: 12687968
Change-Id: I73359495910dacb2cc28f1a21ef9e610bab5a476

7 years agoMerge "ARM/ARM64: Improve assembler macros for kSaveEverything frame."
Vladimir Marko [Thu, 11 Aug 2016 09:01:22 +0000 (09:01 +0000)]
Merge "ARM/ARM64: Improve assembler macros for kSaveEverything frame."

7 years agoMerge "ART: Check for more low-space situations in zygote"
Treehugger Robot [Thu, 11 Aug 2016 05:38:00 +0000 (05:38 +0000)]
Merge "ART: Check for more low-space situations in zygote"

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.

(cherry picked from commit f242f66cf7137ef681e44a494758976e11579260)

Bug: 30765660
Test: m test-art-host
Change-Id: Icd43746e681c62ce2e4e8745fb17bda65ca60372

7 years agoMerge "Fix pending exception failure for encoded statics"
Treehugger Robot [Thu, 11 Aug 2016 00:37:21 +0000 (00:37 +0000)]
Merge "Fix pending exception failure for encoded statics"

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

Change-Id: I2c9751bf0544cf115d9d8e914e58ebccc81bcbf4

7 years agoFull enable new round implementation on x86/x86_64
Aart Bik [Wed, 10 Aug 2016 21:05:54 +0000 (14:05 -0700)]
Full enable new round implementation on x86/x86_64

Rationale:
Running JIT on Fugu does not always provide a constant area.
In such cases, we need to construct FP constants through stack.
This only applies to x86.

Test: 580-checker-round

BUG=26327751

Change-Id: I7e2c80dafbafbe647cfe9ecb039920bb534c666a

7 years agoARM/ARM64: Improve assembler macros for kSaveEverything frame.
Vladimir Marko [Wed, 10 Aug 2016 11:30:05 +0000 (12:30 +0100)]
ARM/ARM64: Improve assembler macros for kSaveEverything frame.

On ARM, use vpush/vpop {d0-d15} instead of {s0-s31}.
On ARM64, use 16-byte aligned stp/ldp for FP registers.

Test: Run ART test suite on Nexus 9.
Bug: 30212852
Change-Id: I36c04d3f1f7e03661c501977c3c9ffa7d2942d2f

7 years agoMerge "Fix negative array size checking"
Treehugger Robot [Wed, 10 Aug 2016 19:06:01 +0000 (19:06 +0000)]
Merge "Fix negative array size checking"

7 years agoFix negative array size checking
Mathieu Chartier [Wed, 10 Aug 2016 17:08:58 +0000 (10:08 -0700)]
Fix negative array size checking

Mask out the alignment after the size check. Was broken in previous
CL.

Test: target test 412 --64 with CC + baker

Bug: 30162165
Change-Id: Ic4eb7229fb742490cd9193baf0faa2be6b454f38

7 years agoMerge "ART: Fix JIT profile saver"
Treehugger Robot [Wed, 10 Aug 2016 16:06:07 +0000 (16:06 +0000)]
Merge "ART: Fix JIT profile saver"

7 years agoART: Fix JIT profile saver
Serguei Katkov [Mon, 1 Aug 2016 10:47:04 +0000 (17:47 +0700)]
ART: Fix JIT profile saver

We miss the case when jit activity notification count exceeds
the threshold. Fix it.

Bug: 30583550
Test: manual test in master

Change-Id: Ib10a34d3c2f5d3cf674b1c4d7a3c1204784865d3
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
7 years agoMerge "Rename callee save enumerators."
Vladimir Marko [Wed, 10 Aug 2016 14:28:27 +0000 (14:28 +0000)]
Merge "Rename callee save enumerators."

7 years agoMerge "Instruction: Add new formats 45cc and 4rcc."
Narayan Kamath [Wed, 10 Aug 2016 14:15:28 +0000 (14:15 +0000)]
Merge "Instruction: Add new formats 45cc and 4rcc."

7 years agoMerge "ARM: Embed constants in add/sub-long."
Vladimir Marko [Wed, 10 Aug 2016 13:29:15 +0000 (13:29 +0000)]
Merge "ARM: Embed constants in add/sub-long."

7 years agoRename callee save enumerators.
Vladimir Marko [Wed, 3 Aug 2016 17:49:58 +0000 (18:49 +0100)]
Rename callee save enumerators.

And related image method enumerators, macros, etc.
Clean up some entrypoint assembly comments.

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

Test: Run ART test suite on host and Nexus 9.
Bug: 30212852
Change-Id: I2707342d4255c88c547655be83ed97a67e12ae9e

7 years agoInstruction: Add new formats 45cc and 4rcc.
Narayan Kamath [Wed, 3 Aug 2016 11:46:23 +0000 (12:46 +0100)]
Instruction: Add new formats 45cc and 4rcc.

These are new 4 byte formats with the following properties.

- The first three (16 bit) words of these instructions have the same
  format as 35c and 3rc respectively.
- The fourth 16 bit word encodes an additional constant index reference.

This change includes placeholder opcodes for invoke-polymorphic and
invoke-polymorphic/range which will be the first dex instructions that
use this new format. In addition to a method_idx that gives the invoked
method, these instructions also provide a proto_idx which gives the
(static) type signature of the call site.

The only reason these are included in this change is because we need
an instruction with a given format to write a unit_test using the Instruction
API.

bug: 30550796
test: make test-art-host

Change-Id: I02612ddee47169757175a8079d82f811f6545945

7 years agoMerge "Revert experimental lambda feature."
Narayan Kamath [Wed, 10 Aug 2016 10:20:49 +0000 (10:20 +0000)]
Merge "Revert experimental lambda feature."

7 years agoMerge "JDWP: fix method argument count"
Sebastien Hertz [Wed, 10 Aug 2016 05:18:48 +0000 (05:18 +0000)]
Merge "JDWP: fix method argument count"

7 years agoMerge "Add a graph coloring art test option"
Treehugger Robot [Wed, 10 Aug 2016 03:52:13 +0000 (03:52 +0000)]
Merge "Add a graph coloring art test option"

7 years agoMerge "ART: Extract JNI macro assembler for arm"
Treehugger Robot [Wed, 10 Aug 2016 00:20:25 +0000 (00:20 +0000)]
Merge "ART: Extract JNI macro assembler for arm"

7 years agoEnable compiled-methods= dex2oat switch
Wojciech Staszkiewicz [Tue, 9 Aug 2016 21:30:55 +0000 (14:30 -0700)]
Enable compiled-methods= dex2oat switch

Pass compiled_methods instead of nullptr from dex2oat to
compiler driver.

Test: Run dex2oat with compiled-methods and dump-passes
set. Look at the dump-passes output and verify that only
methods provided in compiled-methods are compiled.

Change-Id: Ic7249878f7bde5fdb18f9cc348b7ba82de486df8

7 years agoAdd a graph coloring art test option
Matthew Gharrity [Tue, 9 Aug 2016 01:03:46 +0000 (18:03 -0700)]
Add a graph coloring art test option

Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host

Change-Id: I1bd7c20cdd372ed227204c990484d123c67bdfa8

7 years agoART: Extract JNI macro assembler for arm
Andreas Gampe [Tue, 9 Aug 2016 00:32:34 +0000 (17:32 -0700)]
ART: Extract JNI macro assembler for arm

Extract the JNI assembler parts from the regular assembler.

Change-Id: Ice39ffeb854f8651e93443dd69f4c9e0e802975c
Test: m test-art-target (N6)

7 years agoMerge "ART: Extract JNI macro assembler for arm64"
Treehugger Robot [Tue, 9 Aug 2016 22:23:24 +0000 (22:23 +0000)]
Merge "ART: Extract JNI macro assembler for arm64"

7 years agoMerge "Card mark holding class instead of declaring class"
Mathieu Chartier [Tue, 9 Aug 2016 19:05:06 +0000 (19:05 +0000)]
Merge "Card mark holding class instead of declaring class"

7 years agoMerge "Revert "Revert "ARM64 asm for region space array allocation"""
Treehugger Robot [Tue, 9 Aug 2016 18:34:17 +0000 (18:34 +0000)]
Merge "Revert "Revert "ARM64 asm for region space array allocation"""

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

Change-Id: Ia4690219ded0df38032b644440273e06bc303956

7 years agoRevert "Revert "ARM64 asm for region space array allocation""
Mathieu Chartier [Mon, 8 Aug 2016 16:41:04 +0000 (09:41 -0700)]
Revert "Revert "ARM64 asm for region space array allocation""

Also added missing large object check. No regression from the check
N6P CC EAAC time at 1313 for 10 samples vs 1314 before reverts.

Bug: 30162165
Bug: 12687968

Test: test-art-target with CC + heap poisoning

This reverts commit 6ae7f3a4541e70f04243a6fe469aa3bd51e16d79.

Change-Id: Ie28f652f619898d7d37eeebf3f31a88af8fac949

7 years agoMerge "Clean up VLOG(oat) in OatFileAssistant."
Treehugger Robot [Tue, 9 Aug 2016 16:17:30 +0000 (16:17 +0000)]
Merge "Clean up VLOG(oat) in OatFileAssistant."

7 years agoMerge "MIPS64: Properly preserve $gp in art_quick_test_suspend"
Vladimir Marko [Tue, 9 Aug 2016 16:10:22 +0000 (16:10 +0000)]
Merge "MIPS64: Properly preserve $gp in art_quick_test_suspend"

7 years agoJDWP: fix method argument count
Sebastien Hertz [Mon, 8 Aug 2016 08:20:28 +0000 (10:20 +0200)]
JDWP: fix method argument count

The arguments count must include 'this' for instance method.

Bug: 30673627
Test: make test-art-host
Test: art/tools/run-jdwp-tests.sh --mode=host --variant=X64
Change-Id: Ie582e3bb3e27a2572ce5d3c66990f02650eee61b

7 years agoMerge "Fix setting FdFile::ReadOnlyMode() flag"
Treehugger Robot [Tue, 9 Aug 2016 14:31:56 +0000 (14:31 +0000)]
Merge "Fix setting FdFile::ReadOnlyMode() flag"

7 years agoMIPS64: Properly preserve $gp in art_quick_test_suspend
Goran Jakovljevic [Tue, 9 Aug 2016 13:15:39 +0000 (15:15 +0200)]
MIPS64: Properly preserve $gp in art_quick_test_suspend

$gp register was restored in RESTORE_SAVE_EVERYTHING_CALLEE_SAVE_FRAME
with value from $t8, but $t8 has been clobbered in the meantime.

Calculation of $gp is done as a part of the macro
SETUP_SAVE_EVERYTHING_CALLEE_SAVE_FRAME. This allows us to use version
of .cpsetup where $gp is preserved on the stack, instead in another
register.

This fixes over 60 ART tests.

Additionally this suppresses assembler warnings for MIPS32 and MIPS64:
    Warning: used $at without ".set noat"

Test: mma test-art-target-run-test on QEMU

Change-Id: Ic92680c3cb2a4405353b3640c836e92c0231bd15

7 years agoFix setting FdFile::ReadOnlyMode() flag
David Brazdil [Tue, 9 Aug 2016 11:10:56 +0000 (12:10 +0100)]
Fix setting FdFile::ReadOnlyMode() flag

The Unix flag O_RDONLY is defined as zero and hence its presence
cannot be tested with '(flags & O_RDONLY) != 0'. This used to be
broken in FdFlag when setting its internal `read_only_mode_` flag.

Test: m test-art-host-gtest-fd_file_test
Change-Id: Ib48abfc908c7032f031450a1574130e06f6c3bab

7 years agoRevert experimental lambda feature.
Narayan Kamath [Fri, 5 Aug 2016 10:44:32 +0000 (11:44 +0100)]
Revert experimental lambda feature.

This is a revert of the following changes :

30c475a2046951a81769c2db0b2dad66cd71e189.
lambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.

6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.
lambda: Experimental support for capture-variable and liberate-variable

fc1ccd740b7c8e96dfac675cfc580122cd1b40a6.
lambda: Infrastructure to support capture/liberate-variable dex opcodes

e2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.
runtime: Add lambda box/unbox object equality

2ee54e249ad21c74f29a161e248bebe7d22fddf1.
runtime: Partially implement box-lambda and unbox-lambda experimental opcodes

158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.
interpreter: Add experimental lambda opcodes for invoke/create-lambda

a3bb72036f5454e410467f7151dc89f725ae1151.
Added format 25x to dexdump(2).

Plus surrounding cleanups.

Test: make test-art
Change-Id: Ic6f999ad17385ef933f763641049cf721510b202

7 years agoMerge "Use Thread.dispatchUncaughtException() rather than duplicating logic."
Tobias Thierer [Tue, 9 Aug 2016 08:55:34 +0000 (08:55 +0000)]
Merge "Use Thread.dispatchUncaughtException() rather than duplicating logic."

7 years agoART: Extract JNI macro assembler for arm64
Andreas Gampe [Mon, 8 Aug 2016 23:06:34 +0000 (16:06 -0700)]
ART: Extract JNI macro assembler for arm64

Extract the JNI assembler parts from the regular assembler.

Change-Id: I0b0ad32e18f585b75e9da0237afe082c25a1d291
Test: m test-art-target (N9)

7 years agoClean up VLOG(oat) in OatFileAssistant.
Richard Uhler [Fri, 5 Aug 2016 23:32:55 +0000 (16:32 -0700)]
Clean up VLOG(oat) in OatFileAssistant.

Refactor GetOatDexFile to have an error message out parameter.

Change-Id: I6b933f1fcfc9726c051a9d9678d92587cc02501e
Test: OatFileAssistantTest with and without -verbose:oat logging turned on.
Test: m test-art-host