OSDN Git Service

android-x86/art.git
8 years agoMerge "Revert "ART: Refactor SsaBuilder for more precise typing info""
Nicolas Geoffray [Wed, 16 Dec 2015 08:35:46 +0000 (08:35 +0000)]
Merge "Revert "ART: Refactor SsaBuilder for more precise typing info""

8 years agoRevert "ART: Refactor SsaBuilder for more precise typing info"
Alex Light [Wed, 16 Dec 2015 01:30:30 +0000 (17:30 -0800)]
Revert "ART: Refactor SsaBuilder for more precise typing info"

This reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12.

Bug: 26208284

Bug: 24252151
Bug: 24252100
Bug: 22538329
Bug: 25786318

Change-Id: I5f491becdf076ff51d437d490405ec4e1586c010

8 years agoMerge "Revert "Combine direct_methods_ and virtual_methods_ fields of mirror::Class""
Alex Light [Tue, 15 Dec 2015 22:17:21 +0000 (22:17 +0000)]
Merge "Revert "Combine direct_methods_ and virtual_methods_ fields of mirror::Class""

8 years agoRevert "Combine direct_methods_ and virtual_methods_ fields of mirror::Class"
Alex Light [Tue, 15 Dec 2015 22:15:26 +0000 (22:15 +0000)]
Revert "Combine direct_methods_ and virtual_methods_ fields of mirror::Class"

This reverts commit 6286a97bea0f584342803a215550038852b24776.

Change-Id: I5b00f6d1350e9c587acd4b185367dc815ea707de

8 years agoMerge "Various induction/range analysis improvements."
Aart Bik [Tue, 15 Dec 2015 20:50:49 +0000 (20:50 +0000)]
Merge "Various induction/range analysis improvements."

8 years agoVarious induction/range analysis improvements.
Aart Bik [Wed, 9 Dec 2015 22:39:48 +0000 (14:39 -0800)]
Various induction/range analysis improvements.

Rationale: this change list improves analysis of triangular loops
           both by changing loop order for induction analysis
           (enabling range analysis in inner loops) and by
           some symbolic improvements during range analysis;
           also, a mul/div bug has been fixed (with pass/fail
           unit tests); lastly this change list prepares some
           follow up optimizations.

Change-Id: I84a03e848405009541c3fa8e3d3c2f430e100087

8 years agoMerge "Combine direct_methods_ and virtual_methods_ fields of mirror::Class"
Alex Light [Tue, 15 Dec 2015 18:11:08 +0000 (18:11 +0000)]
Merge "Combine direct_methods_ and virtual_methods_ fields of mirror::Class"

8 years agoMerge "Remove reference of deleted file."
Nicolas Geoffray [Tue, 15 Dec 2015 17:04:50 +0000 (17:04 +0000)]
Merge "Remove reference of deleted file."

8 years agoRemove reference of deleted file.
Nicolas Geoffray [Tue, 15 Dec 2015 17:04:05 +0000 (17:04 +0000)]
Remove reference of deleted file.

Change-Id: Ib6d03a8c57a746e738fc849deee800d28da82485

8 years agoMerge "Remove test given its flakiness."
Nicolas Geoffray [Tue, 15 Dec 2015 16:45:34 +0000 (16:45 +0000)]
Merge "Remove test given its flakiness."

8 years agoRemove test given its flakiness.
Nicolas Geoffray [Tue, 15 Dec 2015 16:03:48 +0000 (16:03 +0000)]
Remove test given its flakiness.

Change-Id: I7b746bd93cfd3f7eca71f1a7b9dcc799d30dd971

8 years agoMerge "Refactor DexFile::DecodeDebugInfo."
David Srbecky [Tue, 15 Dec 2015 15:29:17 +0000 (15:29 +0000)]
Merge "Refactor DexFile::DecodeDebugInfo."

8 years agoRefactor DexFile::DecodeDebugInfo.
David Srbecky [Thu, 10 Dec 2015 13:15:00 +0000 (13:15 +0000)]
Refactor DexFile::DecodeDebugInfo.

Split the method into two - one for locals and one for positions.
All uses of the method request only one of the two and it makes the
code slightly cleaner. The position variant requires fewer parameters.

Expose additional line table information which was previously ignored
by the decode method (prologue, epilogue, source file).

Change-Id: Idf8ba98fa58ea0d2103932b5cc0af81365885107

8 years agoMerge "x86-64 Baker's read barrier fast path implementation."
Roland Levillain [Tue, 15 Dec 2015 13:55:13 +0000 (13:55 +0000)]
Merge "x86-64 Baker's read barrier fast path implementation."

8 years agoMerge "x86 Baker's read barrier fast path implementation."
Roland Levillain [Tue, 15 Dec 2015 12:39:34 +0000 (12:39 +0000)]
Merge "x86 Baker's read barrier fast path implementation."

8 years agoMerge "Lower jitthreshold for jit profile test."
Calin Juravle [Tue, 15 Dec 2015 12:20:13 +0000 (12:20 +0000)]
Merge "Lower jitthreshold for jit profile test."

8 years agoMerge "Fix --inline-max-code-units option."
Nicolas Geoffray [Tue, 15 Dec 2015 12:14:14 +0000 (12:14 +0000)]
Merge "Fix --inline-max-code-units option."

8 years agoFix --inline-max-code-units option.
Nicolas Geoffray [Tue, 15 Dec 2015 12:09:43 +0000 (12:09 +0000)]
Fix --inline-max-code-units option.

Change-Id: I73d99904a9eed69eb89efb6fb764db4a5d199f20

8 years agoLower jitthreshold for jit profile test.
Calin Juravle [Tue, 15 Dec 2015 12:02:50 +0000 (12:02 +0000)]
Lower jitthreshold for jit profile test.

The test still proves to be flacky on the build bots. Lowering the
threshold will trigger compilation earlier.

Change-Id: Iacabf88d9fbd2a15fd3456f817402c9aaf3ec766

8 years agoMerge "Revert "Make the JIT the default in ART.""
Nicolas Geoffray [Tue, 15 Dec 2015 11:51:51 +0000 (11:51 +0000)]
Merge "Revert "Make the JIT the default in ART.""

8 years agoRevert "Make the JIT the default in ART."
Nicolas Geoffray [Tue, 15 Dec 2015 11:51:37 +0000 (11:51 +0000)]
Revert "Make the JIT the default in ART."

Few tests failing: oat_file_assistant_test and jit run tests.

This reverts commit 0a9b6826bc6e71d799eb3fe8829981597b890dee.

Change-Id: Ibbf73c191d244ebb9517b6ae97971dd9a9d37d7c

8 years agox86-64 Baker's read barrier fast path implementation.
Roland Levillain [Tue, 15 Dec 2015 10:54:19 +0000 (10:54 +0000)]
x86-64 Baker's read barrier fast path implementation.

Introduce an x86-64 fast path implementation in Optimizing
for Baker's read barriers (for both heap reference loads and
GC root loads).  The marking phase of the read barrier is
performed by a slow path, invoking the runtime entry point
artReadBarrierMark.

Other read barrier algorithms continue to use the original
slow path based implementation, which has been renamed as
GenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.

Bug: 12687968
Change-Id: I9329293ddca7f9bcb512132bde6675aa202b98b2

8 years agox86 Baker's read barrier fast path implementation.
Roland Levillain [Tue, 15 Dec 2015 10:55:36 +0000 (10:55 +0000)]
x86 Baker's read barrier fast path implementation.

Introduce an x86 fast path implementation in Optimizing for
Baker's read barriers (for both heap reference loads and GC
root loads).  The marking phase of the read barrier is
performed by a slow path, invoking a new runtime entry point
(artReadBarrierMark).

Other read barrier algorithms continue to use the original
slow path based implementation, which has been renamed as
GenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.

Bug: 12687968
Change-Id: Ie610c4befc19ff22378a8cba38b422dcacb54320

8 years agoMerge "Make the JIT the default in ART."
Nicolas Geoffray [Tue, 15 Dec 2015 09:38:55 +0000 (09:38 +0000)]
Merge "Make the JIT the default in ART."

8 years agoMerge "Get DCHECK back to EncodedStaticFieldValueIterator"
Shinichiro Hamaji [Tue, 15 Dec 2015 04:42:20 +0000 (04:42 +0000)]
Merge "Get DCHECK back to EncodedStaticFieldValueIterator"

8 years agoCombine direct_methods_ and virtual_methods_ fields of mirror::Class
Alex Light [Fri, 4 Dec 2015 01:38:56 +0000 (17:38 -0800)]
Combine direct_methods_ and virtual_methods_ fields of mirror::Class

This makes several parts of the overall runtime simpler and reduces
the size of a class object by 32-bits.

Bug: 24618811

Change-Id: I36129b52189e26898ea56fa2b7b45652e06af236

8 years agoMerge "Temporary disable linker-namespaces"
Dimitry Ivanov [Mon, 14 Dec 2015 18:04:02 +0000 (18:04 +0000)]
Merge "Temporary disable linker-namespaces"

8 years agoMerge "Increase the sleep time in 554-jit-profile-file"
Calin Juravle [Mon, 14 Dec 2015 18:03:55 +0000 (18:03 +0000)]
Merge "Increase the sleep time in 554-jit-profile-file"

8 years agoIncrease the sleep time in 554-jit-profile-file
Calin Juravle [Mon, 14 Dec 2015 18:01:21 +0000 (18:01 +0000)]
Increase the sleep time in 554-jit-profile-file

The previous sleep time wasn't enough. Some tests failed because not
all the methods managed to be compiled in time.

Change-Id: I4d63b6c3602c72dfa608f62c55e0f484bbfcf900

8 years agoTemporary disable linker-namespaces
Dimitry Ivanov [Mon, 14 Dec 2015 17:57:56 +0000 (09:57 -0800)]
Temporary disable linker-namespaces

Bug: http://b/26178910
Bug: http://b/26165097
Change-Id: I858c70dc72ec164ea7a79ad625ddda91367dae06

8 years agoMerge "Disable 554-jit-profile-file for the READ_BARRIER mode."
Calin Juravle [Mon, 14 Dec 2015 16:48:10 +0000 (16:48 +0000)]
Merge "Disable 554-jit-profile-file for the READ_BARRIER mode."

8 years agoDisable 554-jit-profile-file for the READ_BARRIER mode.
Calin Juravle [Mon, 14 Dec 2015 16:29:06 +0000 (16:29 +0000)]
Disable 554-jit-profile-file for the READ_BARRIER mode.

Change-Id: I98f5c0aeb0d68b42a587b1f7261d3fe998ca7f8b

8 years agoMerge "Print more info on why the code_cache test fails in 115-native-bridge."
Calin Juravle [Mon, 14 Dec 2015 15:15:08 +0000 (15:15 +0000)]
Merge "Print more info on why the code_cache test fails in 115-native-bridge."

8 years agoMerge "Revert "Revert "Enable profiled guided compilation in dex2oat"""
Calin Juravle [Mon, 14 Dec 2015 14:38:38 +0000 (14:38 +0000)]
Merge "Revert "Revert "Enable profiled guided compilation in dex2oat"""

8 years agoPrint more info on why the code_cache test fails in 115-native-bridge.
Calin Juravle [Mon, 14 Dec 2015 14:35:17 +0000 (14:35 +0000)]
Print more info on why the code_cache test fails in 115-native-bridge.

Change-Id: Ib30893e53a5ed616ae4f6b6bc4d657b0fca846c8

8 years agoMerge "ART: Set RTI of Arm64IntermediateAddress"
David Brazdil [Mon, 14 Dec 2015 14:28:32 +0000 (14:28 +0000)]
Merge "ART: Set RTI of Arm64IntermediateAddress"

8 years agoART: Set RTI of Arm64IntermediateAddress
David Brazdil [Mon, 14 Dec 2015 14:25:44 +0000 (14:25 +0000)]
ART: Set RTI of Arm64IntermediateAddress

Fixes the arm64 build after I7a3aee1ff66c82d64b4846611c547af17e91d260.

Change-Id: Ic2c72df59e0ddbdf2edc8519a6954d078a5ef596

8 years agoMerge "ART: Refactor SsaBuilder for more precise typing info"
David Brazdil [Mon, 14 Dec 2015 13:38:20 +0000 (13:38 +0000)]
Merge "ART: Refactor SsaBuilder for more precise typing info"

8 years agoART: Refactor SsaBuilder for more precise typing info
David Brazdil [Wed, 4 Nov 2015 23:30:22 +0000 (23:30 +0000)]
ART: Refactor SsaBuilder for more precise typing info

This patch refactors the SsaBuilder to do the following:

1) All phis are constructed live and marked dead if not used or proved
to be conflicting.

2) Primitive type propagation, now not a separate pass, identifies
conflicting types and marks corresponding phis dead.

3) When compiling --debuggable, DeadPhiHandling used to revive phis
which had only environmental uses but did not attempt to resolve
conflicts. This pass was removed as obsolete and is now superseded
by primitive type propagation (identifying conflicting phis) and
SsaDeadPhiEliminiation (keeping phis live if debuggable + env use).

4) Resolving conflicts requires correct primitive type information
on all instructions. This was not the case for ArrayGet instructions
which can have ambiguous types in the bytecode. To this end,
SsaBuilder now runs reference type propagation and types ArrayGets
from the type of the input array.

5) With RTP being run inside the SsaBuilder, it is not necessary to
run it as a separate optimization pass. Optimizations can now assume
that all instructions of type kPrimNot have reference type info after
SsaBuilder (with the exception of NullConstant).

6) Graph now contains a reference type to be assigned to NullConstant.
All reference type instructions therefore have RTI, as now enforced
by the SsaChecker.

Bug: 24252151
Bug: 24252100
Bug: 22538329
Bug: 25786318

Change-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260

8 years agoMerge "ART: Rename ROR test to a shorter name."
Vladimir Marko [Mon, 14 Dec 2015 11:54:45 +0000 (11:54 +0000)]
Merge "ART: Rename ROR test to a shorter name."

8 years agoART: Rename ROR test to a shorter name.
Vladimir Marko [Mon, 14 Dec 2015 10:29:35 +0000 (10:29 +0000)]
ART: Rename ROR test to a shorter name.

Keeps the file names of test files within limits.
The new name is exactly as long as the next longest name.

Change-Id: I4bbfd4cf2aa402a436ba9a5bc9589aa8710b9c15

8 years agoMerge "Optimizing: Clean up after HRor."
Vladimir Marko [Mon, 14 Dec 2015 10:24:12 +0000 (10:24 +0000)]
Merge "Optimizing: Clean up after HRor."

8 years agoGet DCHECK back to EncodedStaticFieldValueIterator
Shinichiro Hamaji [Fri, 11 Dec 2015 00:45:28 +0000 (09:45 +0900)]
Get DCHECK back to EncodedStaticFieldValueIterator

This is a follow-up of
https://android-review.googlesource.com/#/c/185000/

Change-Id: Ia7311ab948712324f92814e4d415a0a78d16bb84

8 years agoMerge "Address some comments in image writer"
Mathieu Chartier [Sat, 12 Dec 2015 01:34:00 +0000 (01:34 +0000)]
Merge "Address some comments in image writer"

8 years agoMerge "Fix call to LoadNativeLibrary"
Dimitry Ivanov [Fri, 11 Dec 2015 22:23:52 +0000 (22:23 +0000)]
Merge "Fix call to LoadNativeLibrary"

8 years agoFix call to LoadNativeLibrary
Dimitry Ivanov [Fri, 11 Dec 2015 22:03:09 +0000 (14:03 -0800)]
Fix call to LoadNativeLibrary

Change-Id: Ie625cdbdf18374b2a8b0adc11758aac47e603625

8 years agoMerge "Use isolated namespaces for app native libs"
Dimitry Ivanov [Fri, 11 Dec 2015 20:30:30 +0000 (20:30 +0000)]
Merge "Use isolated namespaces for app native libs"

8 years agoMerge "ART: Weaken dex file verifier abstract check"
Andreas Gampe [Fri, 11 Dec 2015 19:01:41 +0000 (19:01 +0000)]
Merge "ART: Weaken dex file verifier abstract check"

8 years agoART: Weaken dex file verifier abstract check
Andreas Gampe [Fri, 11 Dec 2015 00:23:41 +0000 (16:23 -0800)]
ART: Weaken dex file verifier abstract check

We decided to not reject dex files with non-abstract classes containing
abstract methods (even though that's broken code). Just log a warning
instead.

Reported by Nikolay Serdjuk.

Bug: 26143249
Change-Id: Iaf981dba70c7c4b9c844ad9f2806278072e3ed52

8 years agoRevert "Revert "Enable profiled guided compilation in dex2oat""
Calin Juravle [Fri, 11 Dec 2015 14:41:31 +0000 (14:41 +0000)]
Revert "Revert "Enable profiled guided compilation in dex2oat""

This reverts commit 2306ae0d412cc53cbf64877e4a8c37292dd907d8.

Change-Id: I50640009c2fac88ea703812b76549a0e8a6d7584

8 years agoMerge "Make 'dexdump2 -l xml' include whether each class is an interface."
Alex Light [Fri, 11 Dec 2015 17:25:17 +0000 (17:25 +0000)]
Merge "Make 'dexdump2 -l xml' include whether each class is an interface."

8 years agoOptimizing: Clean up after HRor.
Vladimir Marko [Fri, 11 Dec 2015 16:34:46 +0000 (16:34 +0000)]
Optimizing: Clean up after HRor.

Change-Id: I96bd7fa2e8bdccb87a3380d063dad0dd57fed9d7

8 years agoMerge "Replace rotate patterns and invokes with HRor IR."
Vladimir Marko [Fri, 11 Dec 2015 16:14:56 +0000 (16:14 +0000)]
Merge "Replace rotate patterns and invokes with HRor IR."

8 years agoReplace rotate patterns and invokes with HRor IR.
Scott Wakeling [Fri, 11 Dec 2015 09:50:36 +0000 (09:50 +0000)]
Replace rotate patterns and invokes with HRor IR.

Replace constant and register version bitfield rotate patterns, and
rotateRight/Left intrinsic invokes, with new HRor IR.

Where k is constant and r is a register, with the UShr and Shl on
either side of a |, +, or ^, the following patterns are replaced:

  x >>> #k OP x << #(reg_size - k)
  x >>> #k OP x << #-k

  x >>> r OP x << (#reg_size - r)
  x >>> (#reg_size - r) OP x << r

  x >>> r OP x << -r
  x >>> -r OP x << r

Implemented for ARM/ARM64 & X86/X86_64.

Tests changed to not be inlined to prevent optimization from folding
them out. Additional tests added for constant rotate amounts.

Change-Id: I5847d104c0a0348e5792be6c5072ce5090ca2c34

8 years agoMerge "Revert "Enable profiled guided compilation in dex2oat""
Calin Juravle [Fri, 11 Dec 2015 14:01:12 +0000 (14:01 +0000)]
Merge "Revert "Enable profiled guided compilation in dex2oat""

8 years agoRevert "Enable profiled guided compilation in dex2oat"
Calin Juravle [Fri, 11 Dec 2015 14:00:52 +0000 (14:00 +0000)]
Revert "Enable profiled guided compilation in dex2oat"

The test still have some flakiness in it which didn't reproduce locally.

This reverts commit 500c9be1f261a8a95ae7a25f4f8084f43207f313.

Change-Id: I132aff62bf03c2f926aafde6869707573bae9b36

8 years agoMerge "Mark __jit_debug_register_code as a unique symbol"
Tamas Berghammer [Fri, 11 Dec 2015 13:16:13 +0000 (13:16 +0000)]
Merge "Mark __jit_debug_register_code as a unique symbol"

8 years agoMake the JIT the default in ART.
Nicolas Geoffray [Fri, 11 Dec 2015 12:14:17 +0000 (12:14 +0000)]
Make the JIT the default in ART.

Also don't dex2oat an application by default when the JIT is enabled.

Change-Id: I32673e80b966f24ca0f153a3e5b9aacaa1931107

8 years agoMerge "Set DW_AT_comp_dir for each compile unit in dwarf"
Tamas Berghammer [Fri, 11 Dec 2015 11:48:00 +0000 (11:48 +0000)]
Merge "Set DW_AT_comp_dir for each compile unit in dwarf"

8 years agoMark __jit_debug_register_code as a unique symbol
Tamas Berghammer [Wed, 2 Sep 2015 10:24:33 +0000 (11:24 +0100)]
Mark __jit_debug_register_code as a unique symbol

This symbol is used to notify the debugger about JIT library load/unload
events. Because of ICF, several functions with the same body put to the
same adress by the linker what causes the debugger to get notifictaion
about JIT load/unload events in several case where it isn't really happened.

This change disable ICF for the __jit_debug_register_code symbol to prevent
this behavior with keeping the symbol unique in the object file.

This is the 3rd attemp to mark the __jit_debug_register_code symbol unique
as the previous 2 failed because of some confilict with unrelated changes.

Tracking bug for making the same change for aarch64 after we switch to gold
there: b/26149442

Change-Id: I6edc45f27d5e57a66fb9d98c32a081f711565810

8 years agoMerge "Enable profiled guided compilation in dex2oat"
Calin Juravle [Fri, 11 Dec 2015 11:35:23 +0000 (11:35 +0000)]
Merge "Enable profiled guided compilation in dex2oat"

8 years agoMerge "Don't generate a slow path for strings in the dex cache."
Nicolas Geoffray [Fri, 11 Dec 2015 09:32:54 +0000 (09:32 +0000)]
Merge "Don't generate a slow path for strings in the dex cache."

8 years agoMerge "Optimizing: Add direct calls to math intrinsics"
Nicolas Geoffray [Fri, 11 Dec 2015 09:31:08 +0000 (09:31 +0000)]
Merge "Optimizing: Add direct calls to math intrinsics"

8 years agoMerge "Skip DumpForSigQuit if debugger is active"
Mathieu Chartier [Fri, 11 Dec 2015 04:01:40 +0000 (04:01 +0000)]
Merge "Skip DumpForSigQuit if debugger is active"

8 years agoSkip DumpForSigQuit if debugger is active
Mathieu Chartier [Fri, 11 Dec 2015 01:11:07 +0000 (17:11 -0800)]
Skip DumpForSigQuit if debugger is active

Otherwise, the SIGQUIT dumping may get blocked on the mutator lock
and freeze the debugger.

Future work: Ideally we want to dump what we can instead of nothing.

Bug: 26118154

(cherry picked from commit 0b8f1bfdfc721a41d98d13e12c4c67f62f698dfc)

Change-Id: I28e5352dab3b8abce0b39850e3e58282ae454b51

8 years agoUse isolated namespaces for app native libs
Dmitriy Ivanov [Wed, 11 Nov 2015 22:18:55 +0000 (14:18 -0800)]
Use isolated namespaces for app native libs

Linker namespaces provide necessary level
of isolation for application native libraries.

The native libraries will no longer be able to
mistakenly depend on platform private libraries
like /system/lib/libssl.so

This change creates one namespace for each instance
of class-loader and uses it when loading native libraries.

For backwards compatibility with older apps we keep
using default namespace and LD_LIBRARY_PATH if target
sdk version is <= 23. (currently set to 0 for testing)

Bug: http://b/22548808
Change-Id: I64e97af7450fbf7e3740ccddda96bb2f7c52e03b

8 years agoMerge "For LSE, add a few non-aliasing cases due to pre-existence."
Mingyao Yang [Fri, 11 Dec 2015 00:57:24 +0000 (00:57 +0000)]
Merge "For LSE, add a few non-aliasing cases due to pre-existence."

8 years agoMake 'dexdump2 -l xml' include whether each class is an interface.
Alex Light [Fri, 11 Dec 2015 00:49:47 +0000 (16:49 -0800)]
Make 'dexdump2 -l xml' include whether each class is an interface.

Change-Id: Id83ef52454596ab80b16042e58ff9d00bc5fb8ed

8 years agoFor LSE, add a few non-aliasing cases due to pre-existence.
Mingyao Yang [Thu, 3 Dec 2015 22:11:15 +0000 (14:11 -0800)]
For LSE, add a few non-aliasing cases due to pre-existence.

Create reference info for a few instructions that can return a reference.
So they will be treated as not-aliasing with future allocations.

Change-Id: Ided3db790b95f8d6f1468bbf4b7f3e6d71d81eb2

8 years agoMerge "ART: Stash a resolved method late in the verifier"
Andreas Gampe [Thu, 10 Dec 2015 23:50:11 +0000 (23:50 +0000)]
Merge "ART: Stash a resolved method late in the verifier"

8 years agoMerge "Output static field values in dexdump"
Shinichiro Hamaji [Thu, 10 Dec 2015 23:45:02 +0000 (23:45 +0000)]
Merge "Output static field values in dexdump"

8 years agoART: Stash a resolved method late in the verifier
Andreas Gampe [Fri, 4 Dec 2015 01:27:32 +0000 (17:27 -0800)]
ART: Stash a resolved method late in the verifier

Invoke-interface should only be called on an interface method.
We cannot move the check earlier, as there are other checks
that must be done that can fail a class hard. So postpone
a push to the dex cache.

Clean up the test a bit.

Also templatize ResolveMethod with a version always checking
the invoke type, and on a cache miss check whether type target
type is an interface when an interface invoke type was given.

Bug: 21869691
Change-Id: I94cbb23339cbbb3cb6be9995775e4dcefacce7fd

8 years agoMerge "Revert "ART: Check invoke-interface earlier in verifier""
Andreas Gampe [Thu, 10 Dec 2015 21:28:58 +0000 (21:28 +0000)]
Merge "Revert "ART: Check invoke-interface earlier in verifier""

8 years agoRevert "ART: Check invoke-interface earlier in verifier"
Andreas Gampe [Thu, 10 Dec 2015 21:25:27 +0000 (13:25 -0800)]
Revert "ART: Check invoke-interface earlier in verifier"

This reverts commit dae24142127c64551142a50423085aabdb0a6060.

It is important to check the name of the method being called.

Bug: 21869691

8 years agoAddress some comments in image writer
Mathieu Chartier [Wed, 9 Dec 2015 23:41:09 +0000 (15:41 -0800)]
Address some comments in image writer

Change-Id: I74c3192d595dc8b86d6ce3e3ca3bb32cce61872c

8 years agoMerge "ART: Refactor verifier callbacks"
Andreas Gampe [Thu, 10 Dec 2015 20:50:26 +0000 (20:50 +0000)]
Merge "ART: Refactor verifier callbacks"

8 years agoMerge "Refactor and clean up OatWriter and Dex2Oat."
Vladimir Marko [Thu, 10 Dec 2015 20:29:25 +0000 (20:29 +0000)]
Merge "Refactor and clean up OatWriter and Dex2Oat."

8 years agoRefactor and clean up OatWriter and Dex2Oat.
Vladimir Marko [Thu, 10 Dec 2015 13:49:19 +0000 (13:49 +0000)]
Refactor and clean up OatWriter and Dex2Oat.

This is in preparation for early writing of dex files
to oat file.

Change-Id: I31195f3c94eb8ff676c600c60bd35ae531f457b4

8 years agoMerge "Revert "Revert "Add support for LZ4 compressed image files"""
Mathieu Chartier [Thu, 10 Dec 2015 19:16:31 +0000 (19:16 +0000)]
Merge "Revert "Revert "Add support for LZ4 compressed image files"""

8 years agoRevert "Revert "Add support for LZ4 compressed image files""
Mathieu Chartier [Thu, 10 Dec 2015 17:33:21 +0000 (09:33 -0800)]
Revert "Revert "Add support for LZ4 compressed image files""

Needed to call compiler_driver_->SetSupportBootImageFixup(false).

Bug: 22858531

This reverts commit 83d4d72aa0e4170209ab50c67ba22e46b71352c1.

Change-Id: Iaed6a810a0c088f1f2c57cf2f12087f3978a3de1

8 years agoOptimizing: Add direct calls to math intrinsics
Mark Mendell [Thu, 6 Aug 2015 19:23:34 +0000 (15:23 -0400)]
Optimizing: Add direct calls to math intrinsics

Support the double forms of:
  cos, sin, acos, asin, atan, atan2, cbrt, cosh, exp, expm1,
  hypot, log, log10, nextAfter, sinh, tan, tanh

Add these entries to the vector addressed off the thread pointer. Call
the libc routines directly, which means that we have to implement the
native ABI, not the ART one. For x86_64, that includes saving XMM12-15
as the native ABI considers them caller-save, while the ART ABI
considers them callee-save.  We save them by marking them as used by the
call to the math function.  For x86, this is not an issue, as all the XMM
registers are caller-save.

Other architectures will call Java as before until they are ready to
implement the new intrinsics.

Bump the OAT version since we are incompatible with old boot.oat files.

Change-Id: Ic6332c3555c09393a17d1ad4daf62932488722fb
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoEnable profiled guided compilation in dex2oat
Calin Juravle [Wed, 25 Nov 2015 15:59:14 +0000 (15:59 +0000)]
Enable profiled guided compilation in dex2oat

- add parsing of the profile info saved during JIT.
- don't compile methods which are not part of the profile info.
- delete old profile hooks.
- add test for reading/writing profile. The test is disable in:
   * interpreter modes: the test needs JIT.
   * no-dex2oat/no-prebuild: we only save profiling info for the primary
     oat file. In these modes we don't create oat files and thus nothing
     is saved.

Bug:26080105

Change-Id: Ifdc63dc9d4b537fc79e54c3edc3ae3a462bc30fb

8 years agoDon't generate a slow path for strings in the dex cache.
Nicolas Geoffray [Tue, 24 Nov 2015 18:25:35 +0000 (18:25 +0000)]
Don't generate a slow path for strings in the dex cache.

Change-Id: I1d258f1a89bf0ec7c7ddd134be9215d480f0b09a

8 years agoMerge "Get source mapping table from stack maps."
David Srbecky [Thu, 10 Dec 2015 16:42:55 +0000 (16:42 +0000)]
Merge "Get source mapping table from stack maps."

8 years agoGet source mapping table from stack maps.
David Srbecky [Tue, 8 Dec 2015 15:05:08 +0000 (15:05 +0000)]
Get source mapping table from stack maps.

Stack maps contain pc to dex mapping.
Reuse them instead of maintaining separate map.

Change-Id: Iaaec9a6bd2603eace1dfc8f4344087883d88cce3

8 years agoMerge "Fix braino when resolving an invoke-super."
Nicolas Geoffray [Thu, 10 Dec 2015 15:40:55 +0000 (15:40 +0000)]
Merge "Fix braino when resolving an invoke-super."

8 years agoFix braino when resolving an invoke-super.
Nicolas Geoffray [Thu, 10 Dec 2015 15:06:15 +0000 (15:06 +0000)]
Fix braino when resolving an invoke-super.

We should check the actual_method, and not the resolved_method,
on whether it is in the same dex file.

bug:26022686

Change-Id: I8a9b0c68e162015e0aec397545d0607482949967

8 years agoMerge "ART: Fix bug in DCE not removing phis from catch phi uses"
David Brazdil [Thu, 10 Dec 2015 15:12:19 +0000 (15:12 +0000)]
Merge "ART: Fix bug in DCE not removing phis from catch phi uses"

8 years agoART: Fix bug in DCE not removing phis from catch phi uses
David Brazdil [Thu, 10 Dec 2015 13:54:52 +0000 (13:54 +0000)]
ART: Fix bug in DCE not removing phis from catch phi uses

Due to the missing edges between throwing instructions and catch phis
DCE needs to manually remove dead instructions from catch phi users,
being overly conservative if the inputs are not in the dead blocks.
DCE used to do this for normal instructions, but it needs to do the
same for phis.

Change-Id: I7edfcb84ec6ff7303945d5d5cd436b1d1e95df2a

8 years agoSet DW_AT_comp_dir for each compile unit in dwarf
Tamas Berghammer [Thu, 10 Dec 2015 15:06:25 +0000 (15:06 +0000)]
Set DW_AT_comp_dir for each compile unit in dwarf

The dex file don't contain the full path of the compilation dir so we
set it to a symbolic value ($JAVA_SRC_ROOT) what can be remapped by
the tools reading the dwarf information.

Change-Id: Ia011de14a6b36a29b54b3f3fa290cc3157a0b91d

8 years agoMerge "Fix the build-art-multi-executable Make function."
Roland Levillain [Thu, 10 Dec 2015 11:11:43 +0000 (11:11 +0000)]
Merge "Fix the build-art-multi-executable Make function."

8 years agoFix the build-art-multi-executable Make function.
Roland Levillain [Thu, 10 Dec 2015 11:04:25 +0000 (11:04 +0000)]
Fix the build-art-multi-executable Make function.

Follow-up fix to
https://android-review.googlesource.com/#/c/185537.

Bug: 26051370
Change-Id: I891abe5ec2a2eae775b9791050654602861798f4

8 years agoMerge "MIPS32: Improve integer division by constants"
Nicolas Geoffray [Thu, 10 Dec 2015 10:54:24 +0000 (10:54 +0000)]
Merge "MIPS32: Improve integer division by constants"

8 years agoMerge "Fix imgdiag build rules."
Roland Levillain [Thu, 10 Dec 2015 10:24:10 +0000 (10:24 +0000)]
Merge "Fix imgdiag build rules."

8 years agoFix imgdiag build rules.
Roland Levillain [Thu, 10 Dec 2015 10:17:43 +0000 (10:17 +0000)]
Fix imgdiag build rules.

Adjust build rules to avoid building a 64-bit imgdiag
executable on host when HOST_PREFER_32_BIT is true.

This CL addresses an imgdiag related build issue that
appeared on the ART Buildbot after system/core was unpinned
from the master-art manifest
(https://android-review.googlesource.com/#/c/185580), used
by some of our Buildbot configurations:

  ninja: error: 'out/host/linux-x86/obj/SHARED_LIBRARIES/libbacktrace_intermediates/export_includes', needed by 'out/host/linux-x86/obj/EXECUTABLES/imgdiag_intermediates/import_includes', missing and no known rule to make it

Bug: 26051370
Change-Id: I8f3b3c89fb8da0c37a1ffb21b6d835e7ede1e71a

8 years agoMerge "Revert "Add support for LZ4 compressed image files""
Nicolas Geoffray [Thu, 10 Dec 2015 08:27:00 +0000 (08:27 +0000)]
Merge "Revert "Add support for LZ4 compressed image files""

8 years agoRevert "Add support for LZ4 compressed image files"
Nicolas Geoffray [Thu, 10 Dec 2015 08:26:32 +0000 (08:26 +0000)]
Revert "Add support for LZ4 compressed image files"

Tentative. Looks like it breaks image_test for hammerhead:
art/compiler/linker/arm/relative_patcher_thumb2.cc:36] Check failed: target_offset & 1u == 1u (target_offset & 1u=0, 1u=1)

Bug: 22858531

This reverts commit c6f41b5b3ca3d7ac3c12ad3995ffef4e831973a0.

Change-Id: I9bc5738a8b5c8f8bc8b73309f9420fd691bc79a9

8 years agoART: Refactor verifier callbacks
Andreas Gampe [Thu, 10 Dec 2015 05:03:23 +0000 (21:03 -0800)]
ART: Refactor verifier callbacks

Change the return type of MethodVerified to void. It was never
used anyways.

Remove the callbacks calls from the core of the verifier (Verify()).
Instead, make the convenience functions do the work, and add a
parameter to supply the callback so that the verifier becomes
independent of the Runtime-stored one.

Fix up calls that now need to provide a callback, but leave places
that only run the verifier to get metadata (e.g., register type data,
lock state) without callback. This avoids callback calls when in JIT
mode.

Bug: 26075442
Change-Id: I2c270f01e4de088771d4d4b19dae4f07d77640f0

8 years agoOutput static field values in dexdump
Shinichiro Hamaji [Thu, 5 Nov 2015 07:51:33 +0000 (16:51 +0900)]
Output static field values in dexdump

This is necessary to generate table-of-contents of .dex files
to prevent unnecessary rebuilds for implementation-only
changes because these values can be used while compiling other
modules.

Also modify EncodedStaticFieldValueIterator so it can be used
without ClassLoader/Linker.

Bug: 24597504
Change-Id: Ida0c839f9dd6961e1c1b3a380e2092042fad03bb

8 years agoMerge "ART: Make trampoline compiler pointer-size-safe"
Andreas Gampe [Thu, 10 Dec 2015 00:34:23 +0000 (00:34 +0000)]
Merge "ART: Make trampoline compiler pointer-size-safe"