OSDN Git Service

android-x86/art.git
7 years agoMIPS32: Pass more arguments in registers.
Alexey Frunze [Sun, 13 Nov 2016 01:22:05 +0000 (17:22 -0800)]
MIPS32: Pass more arguments in registers.

Specifically, use A0-A3,T0-T1 for non-floats and F8-F19 for floats.

Test: booted MIPS32R2 in QEMU
Test: test-art-target-run-test-optimizing (MIPS32R2) on CI20
Test: test-art-target-gtest (MIPS32R2) on CI20
Test: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU
Test: test-art-target-run-test-optimizing (MIPS32R6) in QEMU
Test: test-art-target-gtest (MIPS32R6) in QEMU
Test: test-art-host-gtest

Change-Id: Ib8b0310a109d9f3d70119c1e605e54b013e60728

7 years agoMerge "Fix mips build in InitEntryPoints"
Mathieu Chartier [Tue, 29 Nov 2016 23:38:00 +0000 (23:38 +0000)]
Merge "Fix mips build in InitEntryPoints"

7 years agoFix mips build in InitEntryPoints
Mathieu Chartier [Tue, 29 Nov 2016 23:31:00 +0000 (15:31 -0800)]
Fix mips build in InitEntryPoints

Added missing arg.

Test: Untested
Change-Id: I7bd25203eee92d0424f03ee9fdb9e7079d05d23c

7 years agoMerge "Fix mac build in ResetQuickAllocEntryPoints"
Mathieu Chartier [Tue, 29 Nov 2016 22:20:24 +0000 (22:20 +0000)]
Merge "Fix mac build in ResetQuickAllocEntryPoints"

7 years agoFix mac build in ResetQuickAllocEntryPoints
Mathieu Chartier [Tue, 29 Nov 2016 22:17:09 +0000 (14:17 -0800)]
Fix mac build in ResetQuickAllocEntryPoints

Unused arg warning.

Test: None

Change-Id: I5b147b1a584b96ad5457c9fee36f3edb0498cecf

7 years agoMerge "ARM: Fix JNI MacroAssembler after VIXL update."
Mathieu Chartier [Tue, 29 Nov 2016 22:07:47 +0000 (22:07 +0000)]
Merge "ARM: Fix JNI MacroAssembler after VIXL update."

7 years agoMerge "X86_64: Add allocation entrypoint switching for CC is_marking"
Mathieu Chartier [Tue, 29 Nov 2016 21:32:11 +0000 (21:32 +0000)]
Merge "X86_64: Add allocation entrypoint switching for CC is_marking"

7 years agoMerge "Revert "Revert "Revert "Revert "Revert "Make sure that const-class linkage...
Vladimir Marko [Tue, 29 Nov 2016 21:11:32 +0000 (21:11 +0000)]
Merge "Revert "Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserved.""""""

7 years agoRevert "Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserv...
Vladimir Marko [Tue, 29 Nov 2016 21:10:22 +0000 (21:10 +0000)]
Revert "Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserved."""""

Bug: 30627598

This reverts commit e47172b75b8b04a450d235cf72bdc4e223a29cb5.

Change-Id: I038029c71195a80f041982e82ae556d3157db7b8

7 years agoARM: Fix JNI MacroAssembler after VIXL update.
Artem Serov [Tue, 29 Nov 2016 13:31:33 +0000 (13:31 +0000)]
ARM: Fix JNI MacroAssembler after VIXL update.

This patch fixes an issue found here:
https://android-review.googlesource.com/#/c/307532/

Also re-enables vixl MacroAssembler for arm.

Test: export ART_USE_READ_BARRIER=true; export ART_HEAP_POISONING=true; \
      m test-art-host
Test: export ART_USE_READ_BARRIER=true; export ART_HEAP_POISONING=true; \
      m test-art-target
Test: dump-oat-boot with ART_USE_READ_BARRIER=true

Change-Id: I03e3014fb250791db2d24a0ab1a76ca96384c332

7 years agoMerge "Use non vixl arm macro assembler"
Mathieu Chartier [Tue, 29 Nov 2016 18:15:29 +0000 (18:15 +0000)]
Merge "Use non vixl arm macro assembler"

7 years agoUse non vixl arm macro assembler
Mathieu Chartier [Tue, 29 Nov 2016 03:24:08 +0000 (19:24 -0800)]
Use non vixl arm macro assembler

The VIXL one hits an assertion error for CC:
external/vixl/src/aarch32/macro-assembler-aarch32.h:1386:
void vixl::aarch32::MacroAssembler::Cmp(vixl::aarch32::Condition,
vixl::aarch32::Register, const vixl::aarch32::Operand &):
Assertion `!AliasesAvailableScratchRegister(rn)' failed.

Fixes dump-oat-boot with CC.

Test: test-art-target, N6P booting

Change-Id: I781fe8c8c2d6cd8b246ee4509281d6c645c89a28

7 years agoMerge "Disabled fallback to interpreter in dexfuzz."
Treehugger Robot [Tue, 29 Nov 2016 16:33:41 +0000 (16:33 +0000)]
Merge "Disabled fallback to interpreter in dexfuzz."

7 years agoMerge "ARM64: Merge TBNZ+CMP+BGE/BGT to CMP+BHS/BHI in intrinsics."
Vladimir Marko [Tue, 29 Nov 2016 16:22:50 +0000 (16:22 +0000)]
Merge "ARM64: Merge TBNZ+CMP+BGE/BGT to CMP+BHS/BHI in intrinsics."

7 years agoMerge "Fix event reporting from the debugger thread"
Sebastien Hertz [Tue, 29 Nov 2016 15:49:39 +0000 (15:49 +0000)]
Merge "Fix event reporting from the debugger thread"

7 years agoMerge "Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserve...
Vladimir Marko [Tue, 29 Nov 2016 15:46:38 +0000 (15:46 +0000)]
Merge "Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserved."""""

7 years agoMerge "Fix the target Linux builds of ART"
Nicolas Geoffray [Tue, 29 Nov 2016 15:06:15 +0000 (15:06 +0000)]
Merge "Fix the target Linux builds of ART"

7 years agoARM64: Merge TBNZ+CMP+BGE/BGT to CMP+BHS/BHI in intrinsics.
Vladimir Marko [Mon, 28 Nov 2016 16:03:15 +0000 (16:03 +0000)]
ARM64: Merge TBNZ+CMP+BGE/BGT to CMP+BHS/BHI in intrinsics.

Test: m test-art-target
Change-Id: I7316dfc40555a3c47670a3b79b4c8fc0cd3edc4f

7 years agoDisabled fallback to interpreter in dexfuzz.
Branislav Rankov [Tue, 29 Nov 2016 14:02:04 +0000 (14:02 +0000)]
Disabled fallback to interpreter in dexfuzz.

Added the -Xno-dex-file-fallback option when running optimizing backends so
that it fails in case compilation fails.

Test: Introduce an artificial crash in the optimizing compiler. There should
be a divergence reported.
dexfuzz --input=Hello.dex --execute --arm --interpreter --optimizing --repeat=20 --dump-output

Change-Id: I8adfc68b176b7482efce0cc7335c3cc50857c5a2

7 years agoRevert "Revert "Revert "Revert "Make sure that const-class linkage is preserved.""""
Vladimir Marko [Fri, 25 Nov 2016 11:47:20 +0000 (11:47 +0000)]
Revert "Revert "Revert "Revert "Make sure that const-class linkage is preserved.""""

Avoid class loading triggered by verification in the
626-const-class-linking test. Expect spurious wakeups.

Add extra debugging output for a very strange failure
    image_writer.cc:1144] Check failed:
    !IsBootClassLoaderClass(as_klass)
    java.lang.Class<java.lang.NoSuchMethodError>
That class is supposed to be in the boot image (core.art for
tests), so the failing check should not be reached at all.

Test: m test-art-host
Test: m ART_TEST_OPTIMIZING=true \
        ART_TEST_JIT=true \
        ART_TEST_INTERPRETER=true \
        ART_TEST_INTERPRETER_ACCESS_CHECKS=true \
        test-art-host-run-test-626-const-class-linking
Bug: 30627598

This reverts commit 09ded9201fbeec605b12741ae255663c14bda225.

Change-Id: I65a68cb53f0707b8abb3555ac3dc44c82907aef5

7 years agoMerge "Removed quick support from dexfuzz."
Treehugger Robot [Tue, 29 Nov 2016 11:56:16 +0000 (11:56 +0000)]
Merge "Removed quick support from dexfuzz."

7 years agoMerge "Re-enable run-test 484-checker-register-hints with read barriers."
Roland Levillain [Tue, 29 Nov 2016 11:19:51 +0000 (11:19 +0000)]
Merge "Re-enable run-test 484-checker-register-hints with read barriers."

7 years agoFix event reporting from the debugger thread
Sebastien Hertz [Tue, 22 Nov 2016 13:55:04 +0000 (14:55 +0100)]
Fix event reporting from the debugger thread

The debugger thread may trigger events (like CLASS PREPARE after the
initalization of a class while processing a command).

This CL removes the incorrect CHECK that makes the runtime abort in
this case. However, we do check that only the debugger thread can
report an event while it is already processing a command.

Bug: 33032664
Test: art/tools/run-jdwp-tests.sh '--mode=host' '--variant=X64'
Change-Id: I32a284cfb4df6eb44eac27bbdcabd3c426d726ce

7 years agoMerge "Use junit-host instead of junit"
Paul Duffin [Tue, 29 Nov 2016 10:12:12 +0000 (10:12 +0000)]
Merge "Use junit-host instead of junit"

7 years agoMerge "Moved escape analysis to reusable module"
Treehugger Robot [Tue, 29 Nov 2016 05:55:52 +0000 (05:55 +0000)]
Merge "Moved escape analysis to reusable module"

7 years agoMoved escape analysis to reusable module
Aart Bik [Mon, 28 Nov 2016 19:22:35 +0000 (11:22 -0800)]
Moved escape analysis to reusable module

Rationale:
This prepares other optimizations that
want to do some simple escape analysis.
Also introduces ability for client
to inject a case-specific function.

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

7 years agoUse junit-host instead of junit
Paul Duffin [Mon, 28 Nov 2016 16:34:59 +0000 (16:34 +0000)]
Use junit-host instead of junit

Bug: 30188076
Test: make checkbuild
Change-Id: Ia54aeae56f49123885765bc896c00fd363e93c26

7 years agoMerge "Refine the DexOptNeeded codes."
Nicolas Geoffray [Mon, 28 Nov 2016 13:15:55 +0000 (13:15 +0000)]
Merge "Refine the DexOptNeeded codes."

7 years agoMerge "ARM: VIXL32: Fix breaking changes from recent VIXL update."
Nicolas Geoffray [Mon, 28 Nov 2016 12:50:57 +0000 (12:50 +0000)]
Merge "ARM: VIXL32: Fix breaking changes from recent VIXL update."

7 years agoMerge "Cache flush/invalidate needs RWX permission"
Treehugger Robot [Mon, 28 Nov 2016 12:05:22 +0000 (12:05 +0000)]
Merge "Cache flush/invalidate needs RWX permission"

7 years agoCache flush/invalidate needs RWX permission
Artem Udovichenko [Thu, 17 Nov 2016 07:51:58 +0000 (10:51 +0300)]
Cache flush/invalidate needs RWX permission

When generating JIT code, perform cache maintenance operations before
removing page write permissions. Errata on some cores require data
flush operations to be followed by data invalidate operations
requiring write permission.

Test: ART_TEST_JIT=true test-art-target on an arm64 device.
bug: 27265969

Change-Id: I70cbb0dc2ea37e42f2011d23333e386ae3f639c7

7 years agoMerge "ART: Throw InternalError rather than VirtualMachineError"
Orion Hodson [Mon, 28 Nov 2016 09:39:44 +0000 (09:39 +0000)]
Merge "ART: Throw InternalError rather than VirtualMachineError"

7 years agoMerge "Revert "Revert "Method Handles: Add VarargsCollector."""
Orion Hodson [Mon, 28 Nov 2016 09:10:32 +0000 (09:10 +0000)]
Merge "Revert "Revert "Method Handles: Add VarargsCollector."""

7 years agoRefine the DexOptNeeded codes.
Richard Uhler [Tue, 22 Nov 2016 10:12:03 +0000 (10:12 +0000)]
Refine the DexOptNeeded codes.

To expose information useful for optimizing how dex2oat is invoked in
the presence of vdex files.

Bug: 30937355
Test: art-test-host

Change-Id: I8e09fabf8c56bf1e1041f43d3d9edf7850adc395

7 years agoRevert "Revert "Method Handles: Add VarargsCollector.""
Orion Hodson [Fri, 25 Nov 2016 15:46:49 +0000 (15:46 +0000)]
Revert "Revert "Method Handles: Add VarargsCollector.""

This reverts commit 12af7a41c224923fb55699305008214636a1a3da.

Test: m test-art-host-run-test-956-methodhandles
Bug: 30550796
Change-Id: Ia820093bab919667729daba5b14330de51a63f79

7 years agoART: Throw InternalError rather than VirtualMachineError
Orion Hodson [Fri, 25 Nov 2016 16:07:11 +0000 (16:07 +0000)]
ART: Throw InternalError rather than VirtualMachineError

Instantiate InternalError instead of VirtualMachineError as the latter
is abstract and not instantiable.

Change-Id: I3e90b28a34bef02dd1c200c02cb832aa8dce10b3

7 years agoMerge "Revert "Method Handles: Add VarargsCollector.""
Orion Hodson [Fri, 25 Nov 2016 14:31:43 +0000 (14:31 +0000)]
Merge "Revert "Method Handles: Add VarargsCollector.""

7 years agoRevert "Method Handles: Add VarargsCollector."
Orion Hodson [Fri, 25 Nov 2016 14:27:07 +0000 (14:27 +0000)]
Revert "Method Handles: Add VarargsCollector."

This reverts commit ab52ce1480d9c4701bfe3ff3530596ec0c5760ee.

Change-Id: Idc6dd28b58a61cbd2c9ee72e8a0eeb07b2ca0edf

7 years agoARM: VIXL32: Fix breaking changes from recent VIXL update.
Scott Wakeling [Mon, 21 Nov 2016 19:46:00 +0000 (19:46 +0000)]
ARM: VIXL32: Fix breaking changes from recent VIXL update.

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

7 years agoMerge "ARM: VIXL32: Improve codegen on CBZ/CBNZ"
Nicolas Geoffray [Fri, 25 Nov 2016 11:25:43 +0000 (11:25 +0000)]
Merge "ARM: VIXL32: Improve codegen on CBZ/CBNZ"

7 years agoMerge "Use input-vdex-fd, or input-vdex in dex2oat."
Nicolas Geoffray [Fri, 25 Nov 2016 08:32:37 +0000 (08:32 +0000)]
Merge "Use input-vdex-fd, or input-vdex in dex2oat."

7 years agoMerge changes Ia3853e46,Ic32af2ec,I79c6cc12,Idfd59472,I68720661
Richard Uhler [Fri, 25 Nov 2016 07:53:25 +0000 (07:53 +0000)]
Merge changes Ia3853e46,Ic32af2ec,I79c6cc12,Idfd59472,I68720661

* changes:
  Refine OatStatus enum.
  Factor out code for picking the best oat file.
  Move dumping of oat file status inside of the OatFileAssistant.
  Remove OatFileAssistant IsOutOfDate, IsUpToDate, and NeedsRelocation.
  Simplify decision of which is the best oat file.

7 years agoRefine OatStatus enum.
Richard Uhler [Tue, 22 Nov 2016 09:42:04 +0000 (09:42 +0000)]
Refine OatStatus enum.

Replace Exists() with a separate OatStatus code, and distinguish
between the oat file being out of date due to the dex being out of
date or the image being out of date.

Bug: 30937355
Test: oat_file_assistant_test
Change-Id: Ia3853e461beb07f0b417276b9277b9c562b20865

7 years agoUse input-vdex-fd, or input-vdex in dex2oat.
Nicolas Geoffray [Sat, 19 Nov 2016 10:42:37 +0000 (10:42 +0000)]
Use input-vdex-fd, or input-vdex in dex2oat.

input-vdex-fd is used by installd
input-vdex is used by run-tests, and (will be used by) go/lem

This change copies the contents of the passed vdex to the new one,
unquicken the new vdex, and run the fast verification on the new
vdex.

bug:30937355
Test: device boots, apps get updated faster with vdex
Test: set TEST_VDEX to true in run-test-jar, run all tests
Test: 628-vdex

Change-Id: Idfbac4de411cebcf8ea7a6af7a417d7c7908dd72

7 years agoRemoved quick support from dexfuzz.
Branislav Rankov [Wed, 23 Nov 2016 11:41:43 +0000 (11:41 +0000)]
Removed quick support from dexfuzz.

Test: Execute: dexfuzz --quick. You should get the following error:
[ERROR] Unrecognised flag: --quick

Change-Id: Iccc5509edfa5e5febfd67904d1d2d76336975070

7 years agoMerge "Revert "Revert "Revert "Make sure that const-class linkage is preserved.""""
Vladimir Marko [Thu, 24 Nov 2016 13:05:12 +0000 (13:05 +0000)]
Merge "Revert "Revert "Revert "Make sure that const-class linkage is preserved.""""

7 years agoRevert "Revert "Revert "Make sure that const-class linkage is preserved."""
Vladimir Marko [Thu, 24 Nov 2016 13:03:57 +0000 (13:03 +0000)]
Revert "Revert "Revert "Make sure that const-class linkage is preserved."""

626-const-class-linking is failing (spurious wakeups?)
970-iface-super-resolution-gen is failing:
    dex2oatd F 11-24 10:57:16  6410  6410 image_writer.cc:1144]
    Check failed: !IsBootClassLoaderClass(as_klass)
    java.lang.Class<java.lang.NoSuchMethodError>

Bug: 30627598

This reverts commit 25dcbad4462ea7279ee2bbe0884abc25bdfac77a.

Change-Id: Ie010169bdde45e6ccf2e04a521da4682bd817114

7 years agoMerge "Method Handles: Add VarargsCollector."
Orion Hodson [Thu, 24 Nov 2016 11:57:29 +0000 (11:57 +0000)]
Merge "Method Handles: Add VarargsCollector."

7 years agoARM: VIXL32: Improve codegen on CBZ/CBNZ
xueliang.zhong [Fri, 4 Nov 2016 09:23:32 +0000 (09:23 +0000)]
ARM: VIXL32: Improve codegen on CBZ/CBNZ

This patch improves codegen on CBZ/CBNZ.
CompareAndBranchIfZero/CompareAndBranchIfNonZero are introduced.

These two functions can generate CMP+Bcc or Cbz/Cbnz.
CMP+Bcc are generated by default.
If a hint is given (is_far_target = false) and rn and label
can all fit into Cbz/Cbnz, then Cbz/Cbnz is generated.
Prefer these two interfaces to using vixl32::MacroAssembler::Cbz/Cbnz.
In T32, Cbz/Cbnz instructions have following limitations:
- Far targets, which are over 126 bytes away, are not supported.
- Only low registers can be encoded.
- Backward branches are not supported.

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

Change-Id: I5d2ada19ea4f83dab78baf0cf78c72e99e58d946

7 years agoMerge "Revert "Revert "Make sure that const-class linkage is preserved."""
Vladimir Marko [Thu, 24 Nov 2016 10:07:53 +0000 (10:07 +0000)]
Merge "Revert "Revert "Make sure that const-class linkage is preserved."""

7 years agoFactor out code for picking the best oat file.
Richard Uhler [Mon, 14 Nov 2016 14:38:03 +0000 (14:38 +0000)]
Factor out code for picking the best oat file.

Factor out common code for determining the best oat file.

Bug: 30937355
Test: oat_file_assistant_test

Change-Id: Ic32af2ec493675be1a22e81c2de46a848c398f6b

7 years agoMove dumping of oat file status inside of the OatFileAssistant.
Richard Uhler [Mon, 14 Nov 2016 14:53:55 +0000 (14:53 +0000)]
Move dumping of oat file status inside of the OatFileAssistant.

Rather than exposing what could otherwise be internal to the
OatFileAssistant, move the logic for dumping a human readable
representation of the status of the oat files inside the
OatFileAssistant.

Bug: 30937355
Test: oat_file_assistant_test

Change-Id: I79c6cc1286a822f1dbe0035be934a2be4792563c

7 years agoRemove OatFileAssistant IsOutOfDate, IsUpToDate, and NeedsRelocation.
Richard Uhler [Tue, 8 Nov 2016 16:23:07 +0000 (16:23 +0000)]
Remove OatFileAssistant IsOutOfDate, IsUpToDate, and NeedsRelocation.

Relatively recent design changes made these functions equivalent to
the Status function. Prefer to use the Status function instead to
simplify the OatFileAssistant API, especially in preparation for
expanding the number of possible Status results.

Bug: 30937355
Test: oat_file_assistant_test

Change-Id: Idfd594729210257f693f03ca823a8d54e74034c5

7 years agoSimplify decision of which is the best oat file.
Richard Uhler [Tue, 8 Nov 2016 16:51:51 +0000 (16:51 +0000)]
Simplify decision of which is the best oat file.

Previously the best oat file was determined by looking at all
combination of states of the oat file in the odex location and the oat
location. This change simplifies the decision by using the oat
location if that oat file is not out of date and using the odex
location otherwise. For practical cases, both decisions lead to the
same result.

Bug: 30937355
Test: oat_file_assistant_test

Change-Id: I687206612914cdbd43950fcdd7dd818a54255a6b

7 years agoMerge "Speed up verified methods"
Mathieu Chartier [Wed, 23 Nov 2016 19:19:22 +0000 (19:19 +0000)]
Merge "Speed up verified methods"

7 years agoMerge "libopenjdkjvmti is actually not a test library."
Nicolas Geoffray [Wed, 23 Nov 2016 17:26:20 +0000 (17:26 +0000)]
Merge "libopenjdkjvmti is actually not a test library."

7 years agoRevert "Revert "Make sure that const-class linkage is preserved.""
Vladimir Marko [Wed, 23 Nov 2016 13:35:26 +0000 (13:35 +0000)]
Revert "Revert "Make sure that const-class linkage is preserved.""

Fix jdwp getting multiple instances of the same class.
Fix counting "zygote"/"non-zygote" classes in class table.
Fix FindClass() to EnsureResolved() classes added by
a racing thread to the class table.

Test: m test-art-host
Test: art/tools/run-jdwp-tests.sh --mode=host --variant=X64 --debug
Bug: 30627598

This reverts commit ecffc67068a28d55d131553bf915fdb9fafbbc03.

Change-Id: I15807949da4f163c2693fac2fbfc274f17685f8a

7 years agoMethod Handles: Add VarargsCollector.
Orion Hodson [Fri, 11 Nov 2016 11:11:31 +0000 (11:11 +0000)]
Method Handles: Add VarargsCollector.

Enable support for methods with variable arity arguments.

Test: m test-art-host-run-test-956-methodhandles
Bug: 30550796

Change-Id: I205724ddacc6c9840e18093a3984c1ad6e54394a

7 years agolibopenjdkjvmti is actually not a test library.
Nicolas Geoffray [Wed, 23 Nov 2016 16:25:15 +0000 (16:25 +0000)]
libopenjdkjvmti is actually not a test library.

Use the right target for the libopenjdkjvmti library.

Test: test-art-target-sync
Change-Id: I8c23c87911bc890482e5e9be3d64ce0a362b6924

7 years agoRe-enable run-test 484-checker-register-hints with read barriers.
Roland Levillain [Wed, 23 Nov 2016 14:29:49 +0000 (14:29 +0000)]
Re-enable run-test 484-checker-register-hints with read barriers.

The code generated by the x86 back end with all read barrier
configurations now satisfies all Checker assertions.

Test: ART_USE_READ_BARRIER=true make test-art-host-run-test-484-checker-register-hints
Test: ART_USE_READ_BARRIER=true ART_HEAP_POISONING=true make test-art-host-run-test-484-checker-register-hints
Test: ART_USE_READ_BARRIER=true ART_READ_BARRIER_TYPE=TABLELOOKUP make test-art-host-run-test-484-checker-register-hints
Test: ART_USE_READ_BARRIER=true ART_READ_BARRIER_TYPE=TABLELOOKUP ART_HEAP_POISONING=true make test-art-host-run-test-484-checker-register-hints
Bug: 12687968
Change-Id: Ic1b40a4fd13ca52736db102426060713e83009b2

7 years agoMerge "Update expectations in SetVerifierDeps/SetStackSample."
Nicolas Geoffray [Wed, 23 Nov 2016 14:23:05 +0000 (14:23 +0000)]
Merge "Update expectations in SetVerifierDeps/SetStackSample."

7 years agoMerge "Revert "Use interpret-only instead of verify-at-runtime when testing JIT""
Calin Juravle [Wed, 23 Nov 2016 12:53:24 +0000 (12:53 +0000)]
Merge "Revert "Use interpret-only instead of verify-at-runtime when testing JIT""

7 years agoRevert "Use interpret-only instead of verify-at-runtime when testing JIT"
Calin Juravle [Wed, 23 Nov 2016 12:52:53 +0000 (12:52 +0000)]
Revert "Use interpret-only instead of verify-at-runtime when testing JIT"

This reverts commit 8b2cf761df20e60a9e0e57564db3ab4eae5d64a7.

Change-Id: I3a15a20eb9d3c71902f42cd5e559d8ab4e15f07d

7 years agoUpdate expectations in SetVerifierDeps/SetStackSample.
Nicolas Geoffray [Wed, 23 Nov 2016 12:52:01 +0000 (12:52 +0000)]
Update expectations in SetVerifierDeps/SetStackSample.

SetStackSample might update an existing sample. So instead
check that SetStackSample is only called in non-AOT mode, and
SetVerifierDeps is only called in AOT mode.

Test: 099-vmdebug
Change-Id: I80dc3d61da651fb311364418802b0bb7e1ce9351

7 years agoMerge "Update run-test dependencies on device."
Nicolas Geoffray [Wed, 23 Nov 2016 12:35:42 +0000 (12:35 +0000)]
Merge "Update run-test dependencies on device."

7 years agoUpdate run-test dependencies on device.
Nicolas Geoffray [Wed, 23 Nov 2016 10:47:02 +0000 (10:47 +0000)]
Update run-test dependencies on device.

Test: test-art-target
Change-Id: I5f58bcbf9eb41571d9511eba8b3f11765baf24a2

7 years agoFix the target Linux builds of ART
Julien Duraj [Wed, 16 Nov 2016 14:05:48 +0000 (14:05 +0000)]
Fix the target Linux builds of ART

When ART_TARGET_LINUX was set it would hit some pieces of dead code that
were using old defines i.e. `__ANDROID__`

Test: export ART_TARGET_LINUX=true
Test: source build/envsetup.sh
Test: lunch
Test: cd art && mma

Change-Id: I80102750192928606e0884d2b723a87ccb7d7e19

7 years agoMerge "Fix build rules for statically linked oatdump on host."
Roland Levillain [Wed, 23 Nov 2016 10:33:03 +0000 (10:33 +0000)]
Merge "Fix build rules for statically linked oatdump on host."

7 years agoSpeed up verified methods
Mathieu Chartier [Mon, 21 Nov 2016 23:05:23 +0000 (15:05 -0800)]
Speed up verified methods

Switch to an array of atomic pointers instead of a map. Removes lock
and map lookup. Also address comments from previous CL.

GetVerifiedMethod: 1.59% -> 0.18% of compilation time.

Install time seems to goes down by around 1%.

Also has significant RAM savings (FB host compile):
dex2oat native alloc: 84695472B -> 71268736B

For the JIT case, the old method is used to prevent any increase in
RAM usage.

Bug: 32641252

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

7 years agoMerge changes from topic 'dex2oat_dexlayout'
Jeff Hao [Tue, 22 Nov 2016 23:49:19 +0000 (23:49 +0000)]
Merge changes from topic 'dex2oat_dexlayout'

* changes:
  Add layout scheme to dexlayout for dex file reordering.
  Add new --layout-profile compiler-filter for dex2oat.
  Dexlayout cleanup and refactoring.

7 years agoMerge "Always fill in root table length"
Mathieu Chartier [Tue, 22 Nov 2016 23:09:48 +0000 (23:09 +0000)]
Merge "Always fill in root table length"

7 years agoAdd layout scheme to dexlayout for dex file reordering.
Jeff Hao [Wed, 19 Oct 2016 18:17:11 +0000 (11:17 -0700)]
Add layout scheme to dexlayout for dex file reordering.

Currently takes startup classes from profile and groups them together
with the lowest class indexes. Moves the ClassDef, ClassData, and
CodeItem sections.

Results gathered from 5 second systrace of app startup (no other input):
Maps
base.vdex - 24.70MB -> 19.35MB (30.50MB file size)
base.odex - 13.22MB -> 12.82MB (13.22MB file size)
Running time of dex2oat: 27.5s -> 37.1s

Photos
base.vdex - 12.98MB ->  9.77MB (15.10MB file size)
base.odex -  6.84MB ->  6.24MB ( 6.84MB file size)
Running time of dex2oat: 15.6s -> 19.9s

Plus
base.vdex - 14.09MB -> 13.29MB (16.72MB file size)
base.odex -  2.47MB ->  2.47MB ( 2.47MB file size)
Running time of dex2oat: 14.1s -> 18.5s

Performance and memory tracking bug: b/33017139

Test: mm test-art-host-gtest-dexlayout_test
Bug: 29921113
Change-Id: Ib500ed353d71a606e2db0dd80378750c5f7b8e33

7 years agoAlways fill in root table length
Mathieu Chartier [Tue, 22 Nov 2016 21:24:40 +0000 (13:24 -0800)]
Always fill in root table length

Otherwise, there may be DCHECK failure in JitCodeCache::ClearData.
Fixes gcstress JIT tests.

Test: test/run-test --host --relocate --prebuild  --64 --jit --gcstress --dev 021-string2

Change-Id: I757ccd1e5a015c5e686254417a2a3f68b650da1c

7 years agoMerge "Verify for type_id out of range errors"
Treehugger Robot [Tue, 22 Nov 2016 20:30:12 +0000 (20:30 +0000)]
Merge "Verify for type_id out of range errors"

7 years agoMerge "Correctly handle EINTR return from futex"
Mathieu Chartier [Tue, 22 Nov 2016 19:26:09 +0000 (19:26 +0000)]
Merge "Correctly handle EINTR return from futex"

7 years agoVerify for type_id out of range errors
David Sehr [Mon, 21 Nov 2016 20:52:12 +0000 (12:52 -0800)]
Verify for type_id out of range errors

The dalvik documentation states that several fields used as type ids are
uint, which is 32 bits.  Other places use uint16, which is obviously 16.
This adds assertions that there are fewer than 65536
class_def_items/class_data_items and that the fields in question are
either valid (0 <= id <= 0xffff) or id == kDexNoIndex (0xffffffff).

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

7 years agoMerge "Revert "Make sure that const-class linkage is preserved.""
Vladimir Marko [Tue, 22 Nov 2016 17:49:05 +0000 (17:49 +0000)]
Merge "Revert "Make sure that const-class linkage is preserved.""

7 years agoRevert "Make sure that const-class linkage is preserved."
Vladimir Marko [Tue, 22 Nov 2016 17:37:21 +0000 (17:37 +0000)]
Revert "Make sure that const-class linkage is preserved."

Bug: 30627598

This reverts commit 19886dbeced9430579a27979beb92b09c95197b4.
Squashed reverts of subsequent partial fixes.
    This reverts commit bad475a63b7c938b7ff7903ea1dae27369c3f629.
    This reverts commit 0ba0c7d9b0328af39a385014652eb9af4e42d8b5.
    This reverts commit ddb8afec79492750f16f98e5bd07d44f3dc485d4.

Change-Id: Id94af5ae56a0335f9641a79c885cc75bba971713

7 years agoFix build rules for statically linked oatdump on host.
Roland Levillain [Tue, 22 Nov 2016 17:20:46 +0000 (17:20 +0000)]
Fix build rules for statically linked oatdump on host.

Test: m build-art-host
Test: m test-art-host-gtest-oatdump_test
Bug: 29530992
Change-Id: Iaa1ff13f0d42e5bc9670fc87da5b6e291482f626

7 years agoAdd new --layout-profile compiler-filter for dex2oat.
Jeff Hao [Wed, 19 Oct 2016 18:17:11 +0000 (11:17 -0700)]
Add new --layout-profile compiler-filter for dex2oat.

New compiler filter makes dex2oat call into dexlayout.
Added basic test for --layout-profile filter to make sure dex2oat runs
to completion and file is valid. Contests of file are not checked.

Test: mm test-art-host-gtest-dexlayout_test
Bug: 29921113
Change-Id: I4bd0dea3d3f1284c155d1d9dea80a48062e67770

7 years agoDexlayout cleanup and refactoring.
Jeff Hao [Tue, 15 Nov 2016 02:10:16 +0000 (18:10 -0800)]
Dexlayout cleanup and refactoring.

Created option to output to a mem map in preparation of hooking
dexlayout into dex2oat.

Test: mm test-art-host-gtest-dexlayout_test
Bug: 29921113
Change-Id: Id42ef15cb8f83cc8d05b025b7647a4338e9b96b0

7 years agoMerge "Use a per-thread VerifierDeps."
Nicolas Geoffray [Tue, 22 Nov 2016 17:07:46 +0000 (17:07 +0000)]
Merge "Use a per-thread VerifierDeps."

7 years agoMerge "Clear the right data pointer."
Nicolas Geoffray [Tue, 22 Nov 2016 16:40:20 +0000 (16:40 +0000)]
Merge "Clear the right data pointer."

7 years agoMerge changes If9d1da45,I6daecb52
Vladimir Marko [Tue, 22 Nov 2016 14:58:42 +0000 (14:58 +0000)]
Merge changes If9d1da45,I6daecb52

* changes:
  Do not test class unloading in 626-const-class-linking
  Fix 626-const-class-linking for no-dex2oat configuration.

7 years agoDo not test class unloading in 626-const-class-linking
Vladimir Marko [Tue, 22 Nov 2016 14:38:31 +0000 (14:38 +0000)]
Do not test class unloading in 626-const-class-linking

Keep tests that classes were not unloaded but do not test
that they are actually unloaded. Both JIT and tracing can
hold onto those classes.

Test: m ART_USE_JIT=true test-art-host-run-test-626-const-class-linking
Test: m ART_TEST_TRACE=true test-art-host-run-test-626-const-class-linking
Bug: 30627598
Change-Id: If9d1da45d8691c5ee05b6cf500d7d132bcab611f

7 years agoClear the right data pointer.
Nicolas Geoffray [Tue, 22 Nov 2016 13:45:36 +0000 (13:45 +0000)]
Clear the right data pointer.

Internally, stack_map_data is an offset of the roots_data allocation.
Pass both to the ClearData method, which will use the right pointer
to deallocate.

Test: test-art-host in debug mode
Change-Id: Ibfe38e7f1853870076048427f2efe7121c11c136

7 years agoFix 626-const-class-linking for no-dex2oat configuration.
Vladimir Marko [Tue, 22 Nov 2016 13:18:00 +0000 (13:18 +0000)]
Fix 626-const-class-linking for no-dex2oat configuration.

For this configuration, the MisbehavingLoader.loadClass()
is called twice, so we cannot rely on printing the message
exactly once.

Test: m ART_TEST_RUN_TEST_NO_DEX2OAT=true \
      test-art-host-run-test-626-const-class-linking
Bug: 30627598
Change-Id: I6daecb52efc1d25fc5cf796f8aef726666e97c8b

7 years agoMerge "ARM: VIXL32: Fix the assembler usage in the intrinsics."
Nicolas Geoffray [Tue, 22 Nov 2016 13:18:55 +0000 (13:18 +0000)]
Merge "ARM: VIXL32: Fix the assembler usage in the intrinsics."

7 years agoUse a per-thread VerifierDeps.
Nicolas Geoffray [Fri, 18 Nov 2016 16:03:10 +0000 (16:03 +0000)]
Use a per-thread VerifierDeps.

Avoid lock contention on a singleton VerifierDeps by allocating
temporary per-thread VerifierDeps that get merged after verification.

This saves around ~35% compile-times on interpret-only.

Only the creation of extra strings is guarded by a lock, for simplicity.

Test: test-art-host, test-art-target
bug: 32641252
bug: 30937355

Change-Id: I11a2367da882b58e39afa7b42cba2e74a209b75d

7 years agoMerge "Fix build: update test to use dex::TypeIndex."
Vladimir Marko [Tue, 22 Nov 2016 12:12:12 +0000 (12:12 +0000)]
Merge "Fix build: update test to use dex::TypeIndex."

7 years agoFix build: update test to use dex::TypeIndex.
Vladimir Marko [Tue, 22 Nov 2016 11:56:48 +0000 (11:56 +0000)]
Fix build: update test to use dex::TypeIndex.

Test: m test-art-host
Bug: 30627598
Change-Id: I1aad84c6367b7b60b60391488aeb9777d3a627e4

7 years agoMerge "Make sure that const-class linkage is preserved."
Vladimir Marko [Tue, 22 Nov 2016 11:23:16 +0000 (11:23 +0000)]
Merge "Make sure that const-class linkage is preserved."

7 years agoCorrectly handle EINTR return from futex
Daniel Colascione [Mon, 21 Nov 2016 22:35:42 +0000 (14:35 -0800)]
Correctly handle EINTR return from futex

We should handle EINTR the same way we do EAGAIN: they're both
transient failures. Either way, higher-level code (see
ReaderWriterMutex::SharedLock) will do the right thing, loop around,
and try again.

Test: code inspection
Change-Id: I1eb7fb6851cc1a65acc9a0cf7cbeef787b6b28b6

7 years agoMerge "Check same dex file for finding class descriptor string id"
Mathieu Chartier [Mon, 21 Nov 2016 23:32:45 +0000 (23:32 +0000)]
Merge "Check same dex file for finding class descriptor string id"

7 years agoMerge changes I8e51415a,I79a255c1
Treehugger Robot [Mon, 21 Nov 2016 22:01:14 +0000 (22:01 +0000)]
Merge changes I8e51415a,I79a255c1

* changes:
  ART: Add JNI local details for FollowReferences
  ART: Fix generic_ptr handling in GetMethodName

7 years agoCheck same dex file for finding class descriptor string id
Mathieu Chartier [Thu, 17 Nov 2016 21:08:35 +0000 (13:08 -0800)]
Check same dex file for finding class descriptor string id

Use ClassDef for finding same dex file class descriptor string id
for vdex. Removes some calls to FindStringId, the remaining calls to
FindStringId are due to multidex or referring to types in the boot
class path.

Also check method index slot to see if we get lucky.

Host perf:
DexFile::FindStringId: 2.57% -> 0.94%

Not done for fields since these do not seem to reach the FindStringId
case accordingto perf. The remaining calls to FindStringId come from:
100.00% verifier::VerifierDeps::GetClassDescriptorStringId
-> 66.62% verifier::VerifierDeps::AddAssignability
-> 33.38% verifier::VerifierDeps::AddMethodResolution

FB install time: 35.54s -> 34.41s (avg of 40 samples at 960MHZ N6P).

Bug: 32641252

Test: test-art-host

Change-Id: If50408cf1be5c2d2127140780b8d5af66306939c

7 years agoMerge "ART: Add dex::TypeIndex"
Treehugger Robot [Mon, 21 Nov 2016 21:17:32 +0000 (21:17 +0000)]
Merge "ART: Add dex::TypeIndex"

7 years agoMerge "ART: Add boot classpath check for initialization"
Treehugger Robot [Mon, 21 Nov 2016 20:43:12 +0000 (20:43 +0000)]
Merge "ART: Add boot classpath check for initialization"

7 years agoMerge "Use type lookup tables in compiler"
Mathieu Chartier [Mon, 21 Nov 2016 20:19:58 +0000 (20:19 +0000)]
Merge "Use type lookup tables in compiler"

7 years agoARM: VIXL32: Fix the assembler usage in the intrinsics.
Anton Kirilov [Mon, 14 Nov 2016 14:37:00 +0000 (14:37 +0000)]
ARM: VIXL32: Fix the assembler usage in the intrinsics.

The assembler must not be used outside of any scopes;
the macroassembler methods should be called instead.

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target
Change-Id: I1358bea5330547db9b7a8446932d85ba946e5683