OSDN Git Service

android-x86/art.git
7 years agoForce stack dump to diagnose empty checkpoint timeout.
Hiroshi Yamauchi [Tue, 31 Jan 2017 18:15:08 +0000 (10:15 -0800)]
Force stack dump to diagnose empty checkpoint timeout.

Bug: 33006388
Bug: 12687968
Test: test-art-host
Change-Id: Ida149c98eeb05ca4ad8d0f7ef49228c9b45a6312

7 years agoMerge "Remove alignment bits in between stack maps"
Mathieu Chartier [Fri, 27 Jan 2017 23:31:59 +0000 (23:31 +0000)]
Merge "Remove alignment bits in between stack maps"

7 years agoMerge "Ensure ClassPreDefine returned dex file is on the Classpath"
Treehugger Robot [Fri, 27 Jan 2017 20:48:12 +0000 (20:48 +0000)]
Merge "Ensure ClassPreDefine returned dex file is on the Classpath"

7 years agoMerge "Avoid read barriers for ArtMethod::GetDexFile"
Mathieu Chartier [Fri, 27 Jan 2017 19:11:31 +0000 (19:11 +0000)]
Merge "Avoid read barriers for ArtMethod::GetDexFile"

7 years agoEnsure ClassPreDefine returned dex file is on the Classpath
Alex Light [Wed, 25 Jan 2017 21:02:32 +0000 (13:02 -0800)]
Ensure ClassPreDefine returned dex file is on the Classpath

Test: mma -j40 test-art-host
Change-Id: Icf70a78f3a1149d0e5bf9aa64f74f2ca8d025802

7 years agoMerge "ART: Add OnLoad system classloader search support"
Treehugger Robot [Fri, 27 Jan 2017 18:34:27 +0000 (18:34 +0000)]
Merge "ART: Add OnLoad system classloader search support"

7 years agoRemove alignment bits in between stack maps
Mathieu Chartier [Fri, 20 Jan 2017 02:00:45 +0000 (18:00 -0800)]
Remove alignment bits in between stack maps

Saves 0.65% of boot.oat size, probably similar on apps. Added
BitMemoryRegion to avoid requiring adding state to StackMap. Added
test to memory_region_test.

Test: clean-oat-host && test-art-host

Bug: 34621054

Change-Id: I40279c59e262bd5e3c6a9135f83e22b5b6900d68

7 years agoMerge "Don't use VIXL's temp registers in LocationsBuilderARM64::HandleFieldGet."
Roland Levillain [Fri, 27 Jan 2017 16:42:57 +0000 (16:42 +0000)]
Merge "Don't use VIXL's temp registers in LocationsBuilderARM64::HandleFieldGet."

7 years agoART: Add OnLoad system classloader search support
Andreas Gampe [Mon, 23 Jan 2017 23:04:59 +0000 (15:04 -0800)]
ART: Add OnLoad system classloader search support

Add support for extension of the system classloader search path
during the OnLoad phase. Add test.

Bug: 34359699
Test: m test-art-host-run-test-936-search-onload
Change-Id: Ie0a5b4bb77999dfae87f955dde40b73ffe053b8e

7 years agoMerge "Add ARM support for `floor` and `ceil` intrinsics."
Vladimir Marko [Fri, 27 Jan 2017 15:31:27 +0000 (15:31 +0000)]
Merge "Add ARM support for `floor` and `ceil` intrinsics."

7 years agoMerge "MethodHandles: Support and tests for revealDirect / reflectAs."
Narayan Kamath [Fri, 27 Jan 2017 15:22:19 +0000 (15:22 +0000)]
Merge "MethodHandles: Support and tests for revealDirect / reflectAs."

7 years agoMerge changes from topic 'VIXL-update-270117'
Nicolas Geoffray [Fri, 27 Jan 2017 15:08:49 +0000 (15:08 +0000)]
Merge changes from topic 'VIXL-update-270117'

* changes:
  ARM: VIXL32: Keep jump table base label within range of adr.
  ARM64: VIXL: Fix breaking changes to ternary operator with Register inputs.

7 years agoMethodHandles: Support and tests for revealDirect / reflectAs.
Narayan Kamath [Wed, 25 Jan 2017 10:46:54 +0000 (10:46 +0000)]
MethodHandles: Support and tests for revealDirect / reflectAs.

We need runtime support to materialize a Constructor, Field or
Method object from a MethodHandle and its associated ArtField
or ArtMethod pointer.

An alternate approach might be to have all handles hold a reference
to their associated Field or Method object (in addition to the
raw ArtField or ArtMethod) but that seems unnecessary given that
these APIs are not expected to be called often.

Test: test-art-host

Change-Id: I9450706b9c30359edebf2e8a7afbc8d89bd68b26

7 years agoDon't use VIXL's temp registers in LocationsBuilderARM64::HandleFieldGet.
Roland Levillain [Thu, 26 Jan 2017 19:04:23 +0000 (19:04 +0000)]
Don't use VIXL's temp registers in LocationsBuilderARM64::HandleFieldGet.

Before this CL, when emitting a volatile field load with a
large offset, it was possible to deplete the pool of VIXL
ARM64 temporary registers (IP0, IP1) in the concurrent
collector configuration.  To avoid this, we now request a
temporary register from the register allocator instead.

Test: m test-art-target-run-test-635-checker-arm64-volatile-load-cc
Bug: 34726333
Change-Id: Idf73a0306142c6133e259783aacaf7ad5401a2fd

7 years agoAdd ARM support for `floor` and `ceil` intrinsics.
Artem Serov [Fri, 6 Jan 2017 15:58:31 +0000 (15:58 +0000)]
Add ARM support for `floor` and `ceil` intrinsics.

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target

Change-Id: Ia6fe41ea912e32a73d78629c616bc64ad1ecfe66

7 years agoMerge "Revert "Revert "CHA for abstract methods."""
Treehugger Robot [Fri, 27 Jan 2017 10:37:34 +0000 (10:37 +0000)]
Merge "Revert "Revert "CHA for abstract methods."""

7 years agoARM: VIXL32: Keep jump table base label within range of adr.
Scott Wakeling [Wed, 18 Jan 2017 15:59:24 +0000 (15:59 +0000)]
ARM: VIXL32: Keep jump table base label within range of adr.

Macro assembler instructions between adr and the jump table base label
could cause literal pool or veneer emission, which would push the jump
table start out of adr range. Such a large emission is highly unlikely,
but possible, so prevent this by using an ExactAssemblyScope.

Test: export ART_USE_VIXL_ARM_BACKEND=true && test-art-target
Change-Id: I46a038e452e197d73206b415376b5f2246388317

7 years agoARM64: VIXL: Fix breaking changes to ternary operator with Register inputs.
Scott Wakeling [Thu, 19 Jan 2017 14:08:42 +0000 (14:08 +0000)]
ARM64: VIXL: Fix breaking changes to ternary operator with Register inputs.

Test: mma art
Change-Id: I33d1e05e47f337f1a9271b35dba9227057cda096

7 years agoMerge "Shoot in the dark to try and fix mac build."
Nicolas Geoffray [Fri, 27 Jan 2017 10:10:20 +0000 (10:10 +0000)]
Merge "Shoot in the dark to try and fix mac build."

7 years agoShoot in the dark to try and fix mac build.
Nicolas Geoffray [Fri, 27 Jan 2017 09:56:30 +0000 (09:56 +0000)]
Shoot in the dark to try and fix mac build.

Use MACRO_LITERAL in assembly macros instead of LITERAL.

Change-Id: I9fd921e4ae59550cfcc1f573be1798ea9823a0cb

7 years agoMerge "Add per array size allocation entrypoints."
Nicolas Geoffray [Fri, 27 Jan 2017 09:31:36 +0000 (09:31 +0000)]
Merge "Add per array size allocation entrypoints."

7 years agoRevert "Revert "CHA for abstract methods.""
Mingyao Yang [Fri, 20 Jan 2017 18:43:30 +0000 (10:43 -0800)]
Revert "Revert "CHA for abstract methods.""

This reverts commit 8ebc8bf055e8bd8f6f167e65a69cf4dae136db55.

When we set the single-implementation method for an abstract method, it
need to be protected by the cha-lock.

Test: new testcase and ART_TEST_JIT=true m -j20 test-art-host-run-test
Change-Id: I66acb20ffa7e49dd9c391f001e3bb52f961872e4

7 years agoMerge "Pass the correct name to ClassFileLoadHook"
Treehugger Robot [Fri, 27 Jan 2017 06:20:17 +0000 (06:20 +0000)]
Merge "Pass the correct name to ClassFileLoadHook"

7 years agoPass the correct name to ClassFileLoadHook
Alex Light [Fri, 27 Jan 2017 01:21:51 +0000 (17:21 -0800)]
Pass the correct name to ClassFileLoadHook

We were passing the dotted name instead of the slashed one.

Test: ./test/run-test --host 937
Change-Id: I4f5f4128cd87ed3d592b7af5724554160f15bdae

7 years agoAvoid read barriers for ArtMethod::GetDexFile
Mathieu Chartier [Thu, 26 Jan 2017 22:03:11 +0000 (14:03 -0800)]
Avoid read barriers for ArtMethod::GetDexFile

Shows up in pmd benchmark from Class::FindDeclaredDirectMethod and
Class::FindDeclaredVirtualMethod. There are still calls to
IsProxyMethod that could probably be eliminated.

ReadBarrier::Mark goes from 12.39% to 3.45% according to perf.

Test: test-art-host

Change-Id: I6a4f2fa2d68bf5f393f83b9b70e8d6fcc9dbdaa2

7 years agoMerge "Re-enable tests 934 & 935"
Treehugger Robot [Fri, 27 Jan 2017 00:25:51 +0000 (00:25 +0000)]
Merge "Re-enable tests 934 & 935"

7 years agoMerge "You shall know your arm32 calling conventions."
Nicolas Geoffray [Thu, 26 Jan 2017 23:25:10 +0000 (23:25 +0000)]
Merge "You shall know your arm32 calling conventions."

7 years agoYou shall know your arm32 calling conventions.
Nicolas Geoffray [Thu, 26 Jan 2017 22:47:27 +0000 (22:47 +0000)]
You shall know your arm32 calling conventions.

64bit values are passed starting an even register.

test: ./art/test/run-test --no-relocate 529-checker-unresolved

Change-Id: Ic3012f34898702b48fdab4d7a77dfdd4c2a1d916

7 years agoRe-enable tests 934 & 935
Alex Light [Thu, 26 Jan 2017 01:44:53 +0000 (17:44 -0800)]
Re-enable tests 934 & 935

There were two issues causing problems with these tests.

1) The loading of classes could occur prior to the transformer being
   enabled. This was fixed by putting the classes under test into a
   different ClassLoader and disabling app-images.

2) DexToDex compilation was devirtualizing some calls meaning that
   reordering the methods was causing incorrect dispatch.

This reverts commit 50cc0cceb5ca0abd4fff2cb3467ea74e7590cb10.
This reverts commit e9f36b7cb42348ef5c4eb3c88bd3cfdd56390a3e.
This reverts commit 1e7e96e4a66f668255a1683b837863228489faf9.

Test: ART_TEST_INTERPRETER=true \
      ART_TEST_JIT=true \
      mma -j40 test-art-host

Test: ART_TEST_INTERPRETER_ACCESS_CHECKS=true \
      ART_TEST_RUN_TEST_NO_DEX2OAT=true \
      ART_TEST_RUN_TEST_RELOCATE_NO_PATCHOAT=true \
      ART_TEST_RUN_TEST_NO_RELOCATE=true \
      mma -j40 test-art-host-run-test-934-load-transform \
               test-art-host-run-test-935-non-retransformable

Change-Id: Ia600ba37d45a5f9489b03c7f4d143849c887b8a7

7 years agoMerge "Make verify-profile not look at the profile."
Nicolas Geoffray [Thu, 26 Jan 2017 19:57:44 +0000 (19:57 +0000)]
Merge "Make verify-profile not look at the profile."

7 years agoMerge "Avoid accessing the heap without mutator lock in Monitor::Lock."
Hiroshi Yamauchi [Thu, 26 Jan 2017 18:50:14 +0000 (18:50 +0000)]
Merge "Avoid accessing the heap without mutator lock in Monitor::Lock."

7 years agoMake verify-profile not look at the profile.
Nicolas Geoffray [Wed, 25 Jan 2017 22:06:53 +0000 (22:06 +0000)]
Make verify-profile not look at the profile.

It doesn't work well with vdex. In follow-up CLs,
I'll just remove/rename  the filter.

For the record, compiling sheets on an angler:
verify-profile: dex2oat took 5.383s (6.672s cpu)
vdex: dex2oat took 1.686s (1.562s cpu)

bug: 34715556
bug: 34691602
bug: 34691854

Test: test-art-host
Change-Id: I286637a3d7ebe1b18985e96845b0b8c4f67a1a39

7 years agoMerge "Forgot stack alignment on x86."
Nicolas Geoffray [Thu, 26 Jan 2017 16:54:12 +0000 (16:54 +0000)]
Merge "Forgot stack alignment on x86."

7 years agoForgot stack alignment on x86.
Nicolas Geoffray [Thu, 26 Jan 2017 16:24:32 +0000 (16:24 +0000)]
Forgot stack alignment on x86.

test: ART_TEST_RUN_TEST_NO_RELOCATE=true m test-art-host test-art-target
Change-Id: I1996c0d85228e5cad7bee4387260821d9d209b11

7 years agoMerge "Forgot this change from last commit."
Nicolas Geoffray [Thu, 26 Jan 2017 15:22:08 +0000 (15:22 +0000)]
Merge "Forgot this change from last commit."

7 years agoForgot this change from last commit.
Nicolas Geoffray [Thu, 26 Jan 2017 15:18:52 +0000 (15:18 +0000)]
Forgot this change from last commit.

Test: 529-checker-unresolved
Change-Id: I14b6a8d81a7a885cff36d3361f83d891e3ff9956

7 years agoMerge "ARM: Update `ArmInstructionSetFeatures` to track ARMv8-A."
Treehugger Robot [Thu, 26 Jan 2017 13:38:14 +0000 (13:38 +0000)]
Merge "ARM: Update `ArmInstructionSetFeatures` to track ARMv8-A."

7 years agoMerge "Refactor code for unresolved field entrypoint."
Nicolas Geoffray [Thu, 26 Jan 2017 12:35:06 +0000 (12:35 +0000)]
Merge "Refactor code for unresolved field entrypoint."

7 years agoMerge "Also blacklist 934 and 935 for no-relocate."
Nicolas Geoffray [Thu, 26 Jan 2017 11:57:51 +0000 (11:57 +0000)]
Merge "Also blacklist 934 and 935 for no-relocate."

7 years agoMerge "Update vixl/arm32 backend after new allocation entrypoint change."
Nicolas Geoffray [Thu, 26 Jan 2017 11:56:12 +0000 (11:56 +0000)]
Merge "Update vixl/arm32 backend after new allocation entrypoint change."

7 years agoAlso blacklist 934 and 935 for no-relocate.
Nicolas Geoffray [Thu, 26 Jan 2017 11:55:31 +0000 (11:55 +0000)]
Also blacklist 934 and 935 for no-relocate.

test: test-art-host
Change-Id: I0e88ffffa25b5174eecfc4e0bfebf43811d33959

7 years agoRefactor code for unresolved field entrypoint.
Nicolas Geoffray [Thu, 19 Jan 2017 14:22:26 +0000 (14:22 +0000)]
Refactor code for unresolved field entrypoint.

- Do macro magic to avoid source code duplication.
- Do not fetch the referrer from the assembly, but
  from the C entrypoint instead.

Test: test-art-host test-art-target

Change-Id: Ib139c94bc8f74686640cad538ba75dc56fa00e1d

7 years agoUpdate vixl/arm32 backend after new allocation entrypoint change.
Nicolas Geoffray [Thu, 26 Jan 2017 10:13:11 +0000 (10:13 +0000)]
Update vixl/arm32 backend after new allocation entrypoint change.

Fix after https://android-review.googlesource.com/#/c/325419/

Spotted by artem.serov@linaro.org. Thanks!

test: test-art-target with vixl/arm32
Change-Id: I5fdb4836c80f98696b07a06f52919f33a6284fbc

7 years agoAdd per array size allocation entrypoints.
Nicolas Geoffray [Mon, 23 Jan 2017 22:50:24 +0000 (22:50 +0000)]
Add per array size allocation entrypoints.

- Update architectures that have fast paths for
  array allocation to use it.
- Will add more fast paths in follow-up CLs.

Test: test-art-target test-art-host.
Change-Id: I138cccd16464a85de22a8ed31c915f876e78fb04

7 years agoMerge "Revert "Disable optimization of Atomic::LoadJavaData for x86 targets.""
Brian Carlstrom [Thu, 26 Jan 2017 08:05:34 +0000 (08:05 +0000)]
Merge "Revert "Disable optimization of Atomic::LoadJavaData for x86 targets.""

7 years agoMerge "Revert "Ignore warning for instantiation after specialization.""
Brian Carlstrom [Thu, 26 Jan 2017 08:05:34 +0000 (08:05 +0000)]
Merge "Revert "Ignore warning for instantiation after specialization.""

7 years agoRevert "Disable optimization of Atomic::LoadJavaData for x86 targets."
Stephen Hines [Thu, 26 Jan 2017 07:59:47 +0000 (07:59 +0000)]
Revert "Disable optimization of Atomic::LoadJavaData for x86 targets."

This reverts commit fbd5118c1c36900910cabe89e3a73d598160e629.

Reason for revert: <INSERT REASONING HERE>

Change-Id: If7aac5e7f4e5376167e896c40f8bf30287f81dd1

7 years agoRevert "Ignore warning for instantiation after specialization."
Stephen Hines [Thu, 26 Jan 2017 07:59:40 +0000 (07:59 +0000)]
Revert "Ignore warning for instantiation after specialization."

This reverts commit 445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c.

Reason for revert: <INSERT REASONING HERE>

Change-Id: I911049f64c4e963cfa47fd8bc7f16ed14e25b057

7 years agoMerge changes from topic 'clang-3625443'
Treehugger Robot [Thu, 26 Jan 2017 07:13:16 +0000 (07:13 +0000)]
Merge changes from topic 'clang-3625443'

* changes:
  Disable optimization of Atomic::LoadJavaData for x86 targets.
  Ignore warning for instantiation after specialization.

7 years agoMerge "Temporarily disable tests 934 & 935 in fallback and interp_ac config"
Alex Light [Thu, 26 Jan 2017 03:48:24 +0000 (03:48 +0000)]
Merge "Temporarily disable tests 934 & 935 in fallback and interp_ac config"

7 years agoTemporarily disable tests 934 & 935 in fallback and interp_ac config
Alex Light [Thu, 26 Jan 2017 03:43:02 +0000 (19:43 -0800)]
Temporarily disable tests 934 & 935 in fallback and interp_ac config

These should have been with the earlier disable but I missed them.

Test: build change
Change-Id: I491f14d5666fff30dbadcf9105a96748a4aaaf5e

7 years agoMerge "Add capability checks to all functions."
Treehugger Robot [Thu, 26 Jan 2017 02:59:32 +0000 (02:59 +0000)]
Merge "Add capability checks to all functions."

7 years agoAvoid accessing the heap without mutator lock in Monitor::Lock.
Hiroshi Yamauchi [Thu, 26 Jan 2017 02:28:12 +0000 (18:28 -0800)]
Avoid accessing the heap without mutator lock in Monitor::Lock.

ScopedThreadStateTransition doesn't do annotations and we are
accidentally accessing the heap without holding the mutator lock in
Monitor::PrettyContentionInfo. Use ScopedThreadSuspension instead.

Bug: 34674595
Test: test-art-host

Change-Id: If3ec86429ff99405ab14b3588f192ab1c0472cc8

7 years agoMerge "Make jvmti tests runnable on the RI again."
Treehugger Robot [Thu, 26 Jan 2017 02:09:26 +0000 (02:09 +0000)]
Merge "Make jvmti tests runnable on the RI again."

7 years agoAdd capability checks to all functions.
Alex Light [Wed, 25 Jan 2017 23:28:04 +0000 (15:28 -0800)]
Add capability checks to all functions.

Also ensure that we declare all capabilities we support.

Bug: 31684920
Bug: 31455788
Test: mma -j40 test-art-host
Change-Id: Ic3f251f451cf6dad9934109594652f23d228d0f4

7 years agoMerge "Minor edits to make nightly reports."
Aart Bik [Wed, 25 Jan 2017 23:45:21 +0000 (23:45 +0000)]
Merge "Minor edits to make nightly reports."

7 years agoMerge "[ART] Prepare profile streaming for framework to use."
Treehugger Robot [Wed, 25 Jan 2017 22:35:49 +0000 (22:35 +0000)]
Merge "[ART] Prepare profile streaming for framework to use."

7 years agoMerge "Refactor and optimize memory region bit functions"
Mathieu Chartier [Wed, 25 Jan 2017 21:27:29 +0000 (21:27 +0000)]
Merge "Refactor and optimize memory region bit functions"

7 years agoMerge "ART: Remove experimental flags for plugins and agents"
Treehugger Robot [Wed, 25 Jan 2017 21:13:32 +0000 (21:13 +0000)]
Merge "ART: Remove experimental flags for plugins and agents"

7 years agoMerge "Preserve verification invariant after compile-time verification."
Andreas Gampe [Wed, 25 Jan 2017 21:08:56 +0000 (21:08 +0000)]
Merge "Preserve verification invariant after compile-time verification."

7 years agoMerge "Temporarily disable tests 934 & 935 for interpreter and jit."
Alex Light [Wed, 25 Jan 2017 21:02:12 +0000 (21:02 +0000)]
Merge "Temporarily disable tests 934 & 935 for interpreter and jit."

7 years agoTemporarily disable tests 934 & 935 for interpreter and jit.
Alex Light [Wed, 25 Jan 2017 20:56:23 +0000 (12:56 -0800)]
Temporarily disable tests 934 & 935 for interpreter and jit.

These need some additional support from the ClassPreDefine event which
will be added shortly.

Test: mma -j40 test-art-host ART_TEST_INTERPRETER=true ART_TEST_JIT=true
Change-Id: Id60da22d96a9f6c9084fdf6bf810874284d5d2a8

7 years agoMake jvmti tests runnable on the RI again.
Alex Light [Wed, 25 Jan 2017 19:41:41 +0000 (11:41 -0800)]
Make jvmti tests runnable on the RI again.

Test: ./test/run-test --host --jvm 932
Change-Id: Ia35c9e2b4f93884956993dc9c5e4d041344c9680

7 years agoART: Remove experimental flags for plugins and agents
Andreas Gampe [Wed, 25 Jan 2017 18:03:08 +0000 (10:03 -0800)]
ART: Remove experimental flags for plugins and agents

Remove experimental flags guarding plugins and agents.

Partial revert of commit 7233c7e752c0d26387d143ee74420e9cd1f09390.
Partial revert of commit 185d134a3b43ab7529053e965917e0fa74bceba4.

Bug: 31455788
Test: m test-art-host
Change-Id: I11a19f24b88ced8da7a28e2cb7a2f602aab884a8

7 years agoRefactor and optimize memory region bit functions
Mathieu Chartier [Wed, 25 Jan 2017 19:11:02 +0000 (11:11 -0800)]
Refactor and optimize memory region bit functions

Move optimized bit reading from FieldEncoding to MemoryRegion,
added optimized StoreBits to MemoryRegion.

Compilation of a large app on host:
Before:
Time -j1: 31.897s
2.00% art::MemoryRegion::StoreBits(unsigned long, unsigned int, unsigned long)

After:
Time -j1: 29.620s
0.39% art::MemoryRegion::StoreBits(unsigned long, unsigned int, unsigned long)

Bug: 34621054

Test: test-art-host

Change-Id: I0509613da83cc5741d5cfada3f8a8af503784e9e

7 years agoMerge "Implement class-pre-define time redefinition."
Treehugger Robot [Wed, 25 Jan 2017 19:33:37 +0000 (19:33 +0000)]
Merge "Implement class-pre-define time redefinition."

7 years ago[ART] Prepare profile streaming for framework to use.
Shukang Zhou [Wed, 25 Jan 2017 08:35:21 +0000 (00:35 -0800)]
[ART] Prepare profile streaming for framework to use.

Make it possible for framework's Java code to optionally
enable streaming output of profile.

Test: m -j48 ART_TEST_TRACE=true ART_TEST_TRACE_STREAM=true test-art-host
Change-Id: I70f6cf3b72c6cec2ac1f1f1e9c2b2c4727d72e8a

7 years agoImplement class-pre-define time redefinition.
Alex Light [Tue, 24 Jan 2017 23:32:25 +0000 (15:32 -0800)]
Implement class-pre-define time redefinition.

This allows one to redefine classes as they are being loaded without
restriction as to the types of transformations that may be included.
For example one is allowed to add additional methods or fields to the
class being defined.

Bug: 31684920
Test: mma -j40 test-art-host
Change-Id: I671ee13444c05f28424e727fd80d9d46c78ca287

7 years agoPreserve verification invariant after compile-time verification.
Nicolas Geoffray [Wed, 25 Jan 2017 16:18:54 +0000 (16:18 +0000)]
Preserve verification invariant after compile-time verification.

After the verification step of the compiler, all classes in the
dex file that are being compiled should be either erroneous,
verified, or verify at runtime.

vdex used to break that invariant by only setting the status of
verified classes.

bug: 34691602
bug: 34691854

test: 634-vdex-duplicate, which breaks for the newly added
      EnsureVerifiedOrVerifyAtRuntime check.

Change-Id: I67bd57880ed3238525f36fde484e36ca535ae5d5

7 years agoMerge "MethodHandles: Write tests for MethodHandle.asCollector."
Narayan Kamath [Wed, 25 Jan 2017 15:03:18 +0000 (15:03 +0000)]
Merge "MethodHandles: Write tests for MethodHandle.asCollector."

7 years agoMethodHandles: Write tests for MethodHandle.asCollector.
Narayan Kamath [Tue, 24 Jan 2017 19:16:25 +0000 (19:16 +0000)]
MethodHandles: Write tests for MethodHandle.asCollector.

Tracks libcore change 0e8de7372de378e00c429dbf9d55526d433a7a21.

Test: make test-art-host

Change-Id: I1d7e33f1cc11104b7b015afd7d49a48f2f2c5312

7 years agoMerge "MethodHandles: Support and tests for invokeWithArguments."
Narayan Kamath [Wed, 25 Jan 2017 10:45:30 +0000 (10:45 +0000)]
Merge "MethodHandles: Support and tests for invokeWithArguments."

7 years agoMerge "Rewrite retrieval of resolved classes."
Vladimir Marko [Wed, 25 Jan 2017 10:42:02 +0000 (10:42 +0000)]
Merge "Rewrite retrieval of resolved classes."

7 years agoMerge "Revert "OatFileAssistant: look at vdex file for IsDexOptNeeded""
Richard Uhler [Wed, 25 Jan 2017 08:47:45 +0000 (08:47 +0000)]
Merge "Revert "OatFileAssistant: look at vdex file for IsDexOptNeeded""

7 years agoMerge "Disable test 154 for GC stress"
Treehugger Robot [Wed, 25 Jan 2017 02:19:08 +0000 (02:19 +0000)]
Merge "Disable test 154 for GC stress"

7 years agoMerge "ART: Refactor TI events"
Treehugger Robot [Wed, 25 Jan 2017 00:58:31 +0000 (00:58 +0000)]
Merge "ART: Refactor TI events"

7 years agoDisable test 154 for GC stress
Mathieu Chartier [Tue, 24 Jan 2017 22:48:24 +0000 (14:48 -0800)]
Disable test 154 for GC stress

GC stress does too many GCs and may cause the test to fail.

Test: test-art-host -j32 ART_TEST_GC_STRESS=true ART_TEST_INTERPRETER=tru

Change-Id: I7a46d185b718a3faaa74dbc561506e4844b79032

7 years agoMinor edits to make nightly reports.
Aart Bik [Tue, 24 Jan 2017 18:27:52 +0000 (10:27 -0800)]
Minor edits to make nightly reports.

Rationale:
bit more output that helps interpreting the nightly results;
also fixed a bit of bitrot in the dexfuzz runners.

Test: nightly fuzzer
Change-Id: I342968bd2b21e86539c4ec03b6a167c7844d2a7c

7 years agoRevert "OatFileAssistant: look at vdex file for IsDexOptNeeded"
Andreas Gampe [Wed, 25 Jan 2017 00:16:27 +0000 (00:16 +0000)]
Revert "OatFileAssistant: look at vdex file for IsDexOptNeeded"

This reverts commit 402089a27b25a9d1112c49189eb83a567719188f.

Leads to crashes when vdex doesn't seem to contain dex files.

Bug: 34339100
Bug: 34685231
Change-Id: I57c3134892a190f792e196e6d7162285e74a64e4
Test: m test-art-host

7 years agoMerge "Enable PRODUCT_ART_USE_READ_BARRIER by default."
Hiroshi Yamauchi [Tue, 24 Jan 2017 23:49:43 +0000 (23:49 +0000)]
Merge "Enable PRODUCT_ART_USE_READ_BARRIER by default."

7 years agoART: Refactor TI events
Andreas Gampe [Tue, 24 Jan 2017 03:46:56 +0000 (19:46 -0800)]
ART: Refactor TI events

Refactor for type safety of event dispatch. Use template specialization
to ensure that only correct calls will work.

Bug: 31684920
Test: m test-art-host
Change-Id: Ifbb47447fb46dd6e799bc824a60df51b15b73618

7 years agoRewrite retrieval of resolved classes.
Vladimir Marko [Tue, 24 Jan 2017 18:06:55 +0000 (18:06 +0000)]
Rewrite retrieval of resolved classes.

Use ClassLinker::VisitClasses() instead of walking over dex
cache type arrays. The old technique relies on the dex cache
holding references to all resolved classes, an assumption
that we're going to break soon.

Test: m test-art-host-run-test-595-profile-saving
Bug: 30627598
Change-Id: Icae71f53b5a33ff931d83aa8d44cc182889f26da

7 years agoMerge "Add dexoptanalyzer tool"
Calin Juravle [Tue, 24 Jan 2017 22:14:10 +0000 (22:14 +0000)]
Merge "Add dexoptanalyzer tool"

7 years agoMerge "Temporarily increase heap min and max free"
Mathieu Chartier [Tue, 24 Jan 2017 21:44:15 +0000 (21:44 +0000)]
Merge "Temporarily increase heap min and max free"

7 years agoMerge "Fix typo in argument name."
Treehugger Robot [Tue, 24 Jan 2017 21:00:39 +0000 (21:00 +0000)]
Merge "Fix typo in argument name."

7 years agoTemporarily increase heap min and max free
Mathieu Chartier [Tue, 24 Jan 2017 17:40:56 +0000 (09:40 -0800)]
Temporarily increase heap min and max free

Make sure that GC doesn't run too often for TLAB ergonomics. Added a
regression test.

Bug: 34576638

Test: test-art-host

Change-Id: Ie07c7c470aaca044fea20b21cbe6bfe8667d082f

7 years agoAdd dexoptanalyzer tool
Calin Juravle [Sat, 14 Jan 2017 00:32:38 +0000 (16:32 -0800)]
Add dexoptanalyzer tool

dexoptanalyzer is a command line tool which analyzes whether or not a
given dex file needs to be dexopted. It is a wrapper around
OatFileAssistant::GetDexOptNeeded and its results have a mapping to
OatFileAssistant::DexOptNeeded.

This is needed for the management of secondary dex file. We need a way
to retrieve the DexOptNeeded status from installd outside system server.
We can't simply use the system server path (as we do for the main apks)
because system server can't access content writable by the apps.

Bug: 32871170
Test: m test-art-(host|target)
Change-Id: Ife1534560ca2658079d4a38a30bc8d94f35fe9c8

7 years agoEnable PRODUCT_ART_USE_READ_BARRIER by default.
Hiroshi Yamauchi [Tue, 24 Jan 2017 19:06:47 +0000 (11:06 -0800)]
Enable PRODUCT_ART_USE_READ_BARRIER by default.

Bug: 34084559
Bug: 34576638
Test: Boot gce_x86_phone on master
Change-Id: I4ccedf52b71f305792998262bcee4110a05df9cc

7 years agoMerge "run-test: ThreadSuspendTimeout only applies to ART."
Narayan Kamath [Tue, 24 Jan 2017 19:23:50 +0000 (19:23 +0000)]
Merge "run-test: ThreadSuspendTimeout only applies to ART."

7 years agoFix typo in argument name.
Alex Light [Tue, 24 Jan 2017 19:15:20 +0000 (11:15 -0800)]
Fix typo in argument name.

Test: mma -j40 test-art-host
Change-Id: Ifff0e7b7ae64ce322562244a705fbe4e8f879689

7 years agoMerge "Add class status for resolved erroneous classes."
Vladimir Marko [Tue, 24 Jan 2017 17:58:53 +0000 (17:58 +0000)]
Merge "Add class status for resolved erroneous classes."

7 years agorun-test: ThreadSuspendTimeout only applies to ART.
Narayan Kamath [Tue, 24 Jan 2017 17:40:47 +0000 (17:40 +0000)]
run-test: ThreadSuspendTimeout only applies to ART.

Test: art/test/run-test --jvm works
Test: art/test/run-test --host works
Change-Id: I58f10b6c7b19df0827e108d2da89d873582bafbe

7 years agoMethodHandles: Support and tests for invokeWithArguments.
Narayan Kamath [Thu, 19 Jan 2017 20:42:23 +0000 (20:42 +0000)]
MethodHandles: Support and tests for invokeWithArguments.

Tracks libcore change a8cf0bffdb9e9cf031efd0d3c8b5645d45963562.

Test: make test-art-host
Change-Id: I65fbf3a82b629585324c477bdce6dabd63ae408e

7 years agoMerge "Revert "Redesign implementation of RegisterNativeAllocation.""
Richard Uhler [Tue, 24 Jan 2017 14:19:57 +0000 (14:19 +0000)]
Merge "Revert "Redesign implementation of RegisterNativeAllocation.""

7 years agoRevert "Redesign implementation of RegisterNativeAllocation."
Richard Uhler [Tue, 24 Jan 2017 14:17:05 +0000 (14:17 +0000)]
Revert "Redesign implementation of RegisterNativeAllocation."

This reverts commit 6bfc37d875b2556b3f1d95b00a785a09dc94ccb0.

Test failures in 004-NativeAllocations.

Bug: 29156652
Bug: 32576211

Change-Id: Ic54c67caf913024485a5c0621857d68a6fb710fa

7 years agoMerge "MethodHandles: Tests for asSpreader / spreadInvoker."
Narayan Kamath [Tue, 24 Jan 2017 13:10:03 +0000 (13:10 +0000)]
Merge "MethodHandles: Tests for asSpreader / spreadInvoker."

7 years agoMerge "Disable 912 for JIT."
Nicolas Geoffray [Tue, 24 Jan 2017 12:37:00 +0000 (12:37 +0000)]
Merge "Disable 912 for JIT."

7 years agoDisable 912 for JIT.
Nicolas Geoffray [Tue, 24 Jan 2017 12:35:48 +0000 (12:35 +0000)]
Disable 912 for JIT.

bug: 34655682
test: test-art-host
Change-Id: I80e51d2866dfb47fc725877356168d2c27255bf5

7 years agoAdd class status for resolved erroneous classes.
Vladimir Marko [Fri, 20 Jan 2017 19:32:50 +0000 (19:32 +0000)]
Add class status for resolved erroneous classes.

Split the old ambiguous status mirror::Class::kStatusError
into kStatusErrorUnresolved and kStatusErrorResolved. Once
a class has been resolved, IsResolved() shall return true
even if the class later becomes erroneous. Allow returning
erroneous class from ClassLinker::EnsureResolved() if it has
been previously resolved. This allows consistent behavior
for retrieving classes, immune to multi-threaded races and
multi-dex weirdness. It also allows JVMTI to properly report
"prepared" (i.e. resolved) classes that are also erroneous.

The new behavior is consistent with the RI.

Add regression tests to 008-exceptions for inconsistent
behavior for multi-dex retrieval of erroneous resolved class
(wrapping or not wrapping the old exception based on which
dex file is used for lookup) and for a CHECK(IsResolved())
crash in ClassLinker::LoadSuperAndInterfaces() (without any
tests for similar checks that could have previously failed
only due to extremely unlikely race conditions; these should
now also be fixed).

Inconsistency still remains for class verification as shown
by the new exceptionsForSuperClassInitFailure() test in
008-exceptions, where interpreter and Optimizing still
cause different exceptions to be thrown.

Note: This is partially changing behavior implemented for
bug 28787733. Since we allow the class loader to retrieve an
erroneous resolved class, the ExceptionInInitializerError is
not thrown at all from VMClassLoader_findLoadedClass(), so
there is nothing to wrap in ClassNotFoundException.

Test: m test-art-host
Bug: 30627598
Bug: 28787733
Change-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c

7 years agoMerge "Redesign implementation of RegisterNativeAllocation."
Treehugger Robot [Tue, 24 Jan 2017 11:49:30 +0000 (11:49 +0000)]
Merge "Redesign implementation of RegisterNativeAllocation."