OSDN Git Service

android-x86/art.git
8 years agoRevert "Introduce support for hardware simulators, starting with ARM64"
Alex Light [Tue, 18 Aug 2015 23:03:42 +0000 (23:03 +0000)]
Revert "Introduce support for hardware simulators, starting with ARM64"

This reverts commit c2e1a5edc438274159c6ef8e65455ac73723a8f1.

This breaks the build for x86_64 targets. This is because on target the libvixl is not included as a
library for the libart.so target build. The build of non-x86_64 targets only works because the
compilers removes the dead-code that contains the libvixl symbols.

Bug: 23321940
Change-Id: I39e93ff05b887665c47fb0986867f1d13ca65b9b

8 years agoMerge "Fix some global constructors and destructors"
Mathieu Chartier [Tue, 18 Aug 2015 18:14:12 +0000 (18:14 +0000)]
Merge "Fix some global constructors and destructors"

8 years agoFix some global constructors and destructors
Mathieu Chartier [Tue, 18 Aug 2015 17:41:39 +0000 (10:41 -0700)]
Fix some global constructors and destructors

Bug: 17994073

Change-Id: Ib4da5ac25812460b3dcee26024d1a3415a21257b

8 years agoMerge "Fix codegen_test."
Roland Levillain [Tue, 18 Aug 2015 17:43:29 +0000 (17:43 +0000)]
Merge "Fix codegen_test."

8 years agoFix codegen_test.
Roland Levillain [Tue, 18 Aug 2015 17:36:20 +0000 (18:36 +0100)]
Fix codegen_test.

Allow the execution of Thumb-2 code on ARM32 hardware.

Change-Id: I2fec71e39d538249569ffa88435f3198e8c28c01

8 years agoMerge "Introduce support for hardware simulators, starting with ARM64"
Roland Levillain [Tue, 18 Aug 2015 13:28:20 +0000 (13:28 +0000)]
Merge "Introduce support for hardware simulators, starting with ARM64"

8 years agoIntroduce support for hardware simulators, starting with ARM64
Phil Wang [Wed, 29 Jul 2015 07:14:09 +0000 (15:14 +0800)]
Introduce support for hardware simulators, starting with ARM64

Simulator support for ARM64 is implemented with VIXL.
Now codegen_test will also run on all supported hardware simulators.

Change-Id: Idc740f566175d1a23c373ea9292b8fc5ba526d00

8 years agoMerge "Fix and improve reference cache mod-union table"
Mathieu Chartier [Tue, 18 Aug 2015 00:40:27 +0000 (00:40 +0000)]
Merge "Fix and improve reference cache mod-union table"

8 years agoFix and improve reference cache mod-union table
Mathieu Chartier [Sun, 16 Aug 2015 21:37:04 +0000 (14:37 -0700)]
Fix and improve reference cache mod-union table

Improvements:
Remove cards that only contain null references, this can save memory
in some cases.

Fixes:
Fix a bug where the mod-union table didn't properly handle class
loaders in the boot image. This was cause by not adding the new
classes as references. The fix is to leave these cards dirty.

Bug: 23203999
Change-Id: Ib1f1f74154df976dd8abaf2430c6dabd4cae2dbe

8 years agoMerge "ART: Some header cleaning around bit-utils"
Andreas Gampe [Mon, 17 Aug 2015 22:59:27 +0000 (22:59 +0000)]
Merge "ART: Some header cleaning around bit-utils"

8 years agoART: Some header cleaning around bit-utils
Andreas Gampe [Fri, 14 Aug 2015 15:22:54 +0000 (08:22 -0700)]
ART: Some header cleaning around bit-utils

Try to remove dependencies where they are not necessary.

Change-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e

8 years agoMerge "Correct for 115-native-bridge hard-coded x86/x86_64 signal handling values"
Andreas Gampe [Mon, 17 Aug 2015 22:24:30 +0000 (22:24 +0000)]
Merge "Correct for 115-native-bridge hard-coded x86/x86_64 signal handling values"

8 years agoMerge "ART: Follow-up fixes"
Andreas Gampe [Mon, 17 Aug 2015 21:19:23 +0000 (21:19 +0000)]
Merge "ART: Follow-up fixes"

8 years agoMerge "ART: Dex2oat lint fix"
Andreas Gampe [Mon, 17 Aug 2015 21:15:15 +0000 (21:15 +0000)]
Merge "ART: Dex2oat lint fix"

8 years agoART: Dex2oat lint fix
Andreas Gampe [Mon, 17 Aug 2015 21:14:25 +0000 (14:14 -0700)]
ART: Dex2oat lint fix

Lint fix.

Change-Id: Id45bc246645715afaca58c145a70c3b319e5d673

8 years agoCorrect for 115-native-bridge hard-coded x86/x86_64 signal handling values
Agi Csaki [Mon, 17 Aug 2015 20:40:45 +0000 (13:40 -0700)]
Correct for 115-native-bridge hard-coded x86/x86_64 signal handling values

Added inline assembly to ensure that the instruction causing a segfault
in x86/x86_64 for the 115-native-bridge test always has a size of 3 bytes,
in response to a bug that caused the test to fail when this instruction
had variable sizes.

Bug: 22876261
Change-Id: I296e623f170fd1925919bedf913c569a6563e3dc

8 years agoMerge "Revert "Revert "ART: DCHECK zero case for CLZ/CTZ"""
Andreas Gampe [Mon, 17 Aug 2015 20:52:26 +0000 (20:52 +0000)]
Merge "Revert "Revert "ART: DCHECK zero case for CLZ/CTZ"""

8 years agoRevert "Revert "ART: DCHECK zero case for CLZ/CTZ""
Andreas Gampe [Fri, 14 Aug 2015 23:01:49 +0000 (23:01 +0000)]
Revert "Revert "ART: DCHECK zero case for CLZ/CTZ""

This reverts commit 4318d91ea4be673d4deba39d33ac4718d77986a7.

Fix up the lit=-1 case in the arm32 Quick backend; add test case.

Change-Id: I8d0861133db950090ee959f532ede1448683dfa9

8 years agoART: Follow-up fixes
Andreas Gampe [Mon, 17 Aug 2015 20:43:55 +0000 (13:43 -0700)]
ART: Follow-up fixes

Addressing comments for CL 166499, commit
5073fedd553afeb6ccdb49c1a1ab2cc2947c0870.

Change-Id: I359e5a4c026d58d75cb62b90c495796855302b94

8 years agoMerge "Only apply aarch64 clang WAR to the target."
Dan Albert [Mon, 17 Aug 2015 20:31:27 +0000 (20:31 +0000)]
Merge "Only apply aarch64 clang WAR to the target."

8 years agoOnly apply aarch64 clang WAR to the target.
Dan Albert [Mon, 17 Aug 2015 17:14:51 +0000 (10:14 -0700)]
Only apply aarch64 clang WAR to the target.

Note that the ART_TARGET_CLANG_CFLAGS_$(arch) was actually broken over a
year ago. This patch fixes that and drops the no longer needed
-DNVALGRIND for clang aarch64.

Bug: http://b/23256622
Change-Id: I749db286c0fd533aeb50744b323c1faddf951d79

8 years agoMerge "Refactor art::Dex2Oat::ParseArg."
Dan Albert [Mon, 17 Aug 2015 20:25:39 +0000 (20:25 +0000)]
Merge "Refactor art::Dex2Oat::ParseArg."

8 years agoRefactor art::Dex2Oat::ParseArg.
Roland Levillain [Mon, 17 Aug 2015 19:18:41 +0000 (20:18 +0100)]
Refactor art::Dex2Oat::ParseArg.

Split up art::Dex2Oat::ParseArg to allow
`clang++ -01 -Werror -Wframe-larger-than=1728` to compile
dex2oat.cc.

Change-Id: I0b45f394568765ccd849c87a7cf910507291e65d

8 years agoMerge "Make patchoat match offset when given a patched image"
Alex Light [Mon, 17 Aug 2015 17:20:46 +0000 (17:20 +0000)]
Merge "Make patchoat match offset when given a patched image"

8 years agoMerge "ART: Rename ArtMethod's size and alignment methods."
Vladimir Marko [Mon, 17 Aug 2015 15:57:24 +0000 (15:57 +0000)]
Merge "ART: Rename ArtMethod's size and alignment methods."

8 years agoART: Rename ArtMethod's size and alignment methods.
Vladimir Marko [Mon, 17 Aug 2015 11:07:23 +0000 (12:07 +0100)]
ART: Rename ArtMethod's size and alignment methods.

Remove the historical prefix "Object" to avoid confusion
with Java objects.

Change-Id: Ib36422c9a24878d8d4bd757977d99cbf66b3d567

8 years agoMerge "ART: Compress LengthPrefixedArray on 32-bit targets."
Vladimir Marko [Mon, 17 Aug 2015 10:49:15 +0000 (10:49 +0000)]
Merge "ART: Compress LengthPrefixedArray on 32-bit targets."

8 years agoMerge "Add 'bsr' instruction to x86 and x86_64"
Roland Levillain [Mon, 17 Aug 2015 10:06:07 +0000 (10:06 +0000)]
Merge "Add 'bsr' instruction to x86 and x86_64"

8 years agoART: Compress LengthPrefixedArray on 32-bit targets.
Vladimir Marko [Wed, 12 Aug 2015 18:27:26 +0000 (19:27 +0100)]
ART: Compress LengthPrefixedArray on 32-bit targets.

Previously, the LengthPrefixedArray<ArtMethod> on 32-bit
targets contained a 64-bit length field followed by the
ArtMethod elements with size only a multiple of 4, not 8.
Consequently, an odd-length array broke the alignment for
the following array which would have the 64-bit length
placed at an unaligned address.

To fix that, we make the length field 32-bit and explicitly
pass the alignment information to the LengthPrefixedArray.
This also makes the 32-bit boot image a bit smaller.
On Nexus 5, AOSP, ToT, the field section is 11528B smaller
and the method section is 21036B smaller. 64-bit targets
should see the same savings for the field section but no
difference for the methods section.

Change-Id: I3e03e7b94129025c8a1c117c27645a34dec516d2

8 years agoMerge "Force Clang aarch64 builds to -O1."
Dan Albert [Sun, 16 Aug 2015 23:57:36 +0000 (23:57 +0000)]
Merge "Force Clang aarch64 builds to -O1."

8 years agoForce Clang aarch64 builds to -O1.
Dan Albert [Sun, 16 Aug 2015 23:49:29 +0000 (16:49 -0700)]
Force Clang aarch64 builds to -O1.

Bug: http://b/23256622
Change-Id: Icab87964576f12a671e255500dec901f3558e7ad

8 years agoMerge "Add -Wno-pessimizing-move to Clang flags"
Stephen Hines [Sat, 15 Aug 2015 02:04:56 +0000 (02:04 +0000)]
Merge "Add -Wno-pessimizing-move to Clang flags"

8 years agoMerge "Optimizing String.Equals as an intrinsic (x86_64)"
Andreas Gampe [Fri, 14 Aug 2015 23:49:45 +0000 (23:49 +0000)]
Merge "Optimizing String.Equals as an intrinsic (x86_64)"

8 years agoMerge "ART: Fix verifier dumping, add hard-fail dumping"
Andreas Gampe [Fri, 14 Aug 2015 22:47:09 +0000 (22:47 +0000)]
Merge "ART: Fix verifier dumping, add hard-fail dumping"

8 years agoART: Fix verifier dumping, add hard-fail dumping
Andreas Gampe [Fri, 14 Aug 2015 22:37:35 +0000 (15:37 -0700)]
ART: Fix verifier dumping, add hard-fail dumping

Fix the dumping code in the verifier.

Add an option to dump the verifier state on hard failure when
verbose:verifier.

Change-Id: Iccea92fcbcb2301356d86004ea0f5f3e5da84f3c

8 years agoMerge "ART: Relax verifier aput checking"
Andreas Gampe [Fri, 14 Aug 2015 21:32:53 +0000 (21:32 +0000)]
Merge "ART: Relax verifier aput checking"

8 years agoART: Relax verifier aput checking
Andreas Gampe [Fri, 14 Aug 2015 21:07:43 +0000 (14:07 -0700)]
ART: Relax verifier aput checking

When checking on a null array, the cases of aput and aput-wide are
shared between integral and floating point types. Be careful to not
reject a valid program.

Bug: 21867457
Bug: 23201502
Change-Id: I6c54a389c06e40a2dae00995aa16ff08a089e512

8 years agoMake patchoat match offset when given a patched image
Alex Light [Wed, 12 Aug 2015 01:03:47 +0000 (18:03 -0700)]
Make patchoat match offset when given a patched image

Previously if we gave patchoat a patched image and a already patched
(but improperly relocated) oat file it would not correctly patch the
oat file to the same offset as the image.

Bug: 22599792
Bug: 23119724
Change-Id: I8773022bd75c2e0b7eb529893b147cbd8792bcad

8 years agoMerge "Revert "ART: DCHECK zero case for CLZ/CTZ""
Andreas Gampe [Fri, 14 Aug 2015 18:39:46 +0000 (18:39 +0000)]
Merge "Revert "ART: DCHECK zero case for CLZ/CTZ""

8 years agoRevert "ART: DCHECK zero case for CLZ/CTZ"
Andreas Gampe [Fri, 14 Aug 2015 18:39:30 +0000 (18:39 +0000)]
Revert "ART: DCHECK zero case for CLZ/CTZ"

This reverts commit 51db2c217052fd6881b81f3ac5162fe88c36dbf0.

Still breaks for arm32. :(

Change-Id: I5fe6fc0cc410cc1c5b6bd68028ce9bf835cb94d5

8 years agoMerge "Change SS to use MarkObjectIfNotInToSpace for roots"
Mathieu Chartier [Fri, 14 Aug 2015 17:54:21 +0000 (17:54 +0000)]
Merge "Change SS to use MarkObjectIfNotInToSpace for roots"

8 years agoMerge "ART: Add utility function to dump dex CFG"
Andreas Gampe [Fri, 14 Aug 2015 17:51:51 +0000 (17:51 +0000)]
Merge "ART: Add utility function to dump dex CFG"

8 years agoOptimizing String.Equals as an intrinsic (x86_64)
Agi Csaki [Fri, 14 Aug 2015 00:54:54 +0000 (17:54 -0700)]
Optimizing String.Equals as an intrinsic (x86_64)

The fourth implementation of String.Equals. I added an intrinsic
in x86_64 which is similar to the original java implementation
of String.equals: an instanceof check, null check,length check,
and reference equality check followed by a loop comparing strings
four characters at a time.

Interesting Benchmarking Values:

Optimizing Compiler on 64-bit Emulator
        Intrinsic 1-5 Character Strings: 48 ns
        Original 1-5 Character Strings: 56 ns
        Intrinsic 1000+ Character Strings: 4009 ns
        Original 1000+ Character Strings: 4704 ns
        Intrinsic Non-String Argument: 35 ns
        Original Non-String Argument: 42 ns

Bug: 21481923
Change-Id: I17d0d2e24a670a898ab1729669d3990403b9a853

8 years agoChange SS to use MarkObjectIfNotInToSpace for roots
Mathieu Chartier [Fri, 14 Aug 2015 17:37:28 +0000 (10:37 -0700)]
Change SS to use MarkObjectIfNotInToSpace for roots

The roots can be in the to-space since we may visit the declaring
class of an ArtMethod multiple times if it is on the call stack.

Fixes GSS/SS tests for a few test cases.

Change-Id: Iba354340289fc49987d06e70929dadb2f367734b

8 years agoAdd 'bsr' instruction to x86 and x86_64
Mark Mendell [Thu, 13 Aug 2015 01:16:41 +0000 (21:16 -0400)]
Add 'bsr' instruction to x86 and x86_64

Add support for 'bsr' instruction.  Add tests.

Change-Id: I1cd8b30d7f3f5ee7fbeef8124cc6a31bf8ce59d5
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoMerge "Add rep movsw to x86 and x86_64 instructions."
Roland Levillain [Fri, 14 Aug 2015 16:07:50 +0000 (16:07 +0000)]
Merge "Add rep movsw to x86 and x86_64 instructions."

8 years agoMerge "Revert "Revert "Optimizing String.Equals as an intrinsic (x86)"""
Andreas Gampe [Fri, 14 Aug 2015 15:21:14 +0000 (15:21 +0000)]
Merge "Revert "Revert "Optimizing String.Equals as an intrinsic (x86)"""

8 years agoAdd rep movsw to x86 and x86_64 instructions.
Mark Mendell [Wed, 1 Jul 2015 18:26:52 +0000 (14:26 -0400)]
Add rep movsw to x86 and x86_64 instructions.

Add 'REP MOVSW' as a supported instruction for x86 32 and 64 bit.

Added tests.

Change-Id: I1c615ac1e7fa46c48983c90f791b92be0375c8b8
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoMerge "ART: DCHECK zero case for CLZ/CTZ"
Andreas Gampe [Fri, 14 Aug 2015 15:06:46 +0000 (15:06 +0000)]
Merge "ART: DCHECK zero case for CLZ/CTZ"

8 years agoMerge "Fix a bug in the register allocator when allocating pairs."
Nicolas Geoffray [Fri, 14 Aug 2015 10:54:56 +0000 (10:54 +0000)]
Merge "Fix a bug in the register allocator when allocating pairs."

8 years agoART: DCHECK zero case for CLZ/CTZ
Andreas Gampe [Fri, 14 Aug 2015 03:55:31 +0000 (20:55 -0700)]
ART: DCHECK zero case for CLZ/CTZ

Add a DCHECK_CONSTEXPR. All current callers have an explicit
zero check before hand and so we should not trip this at the
moment. Remove the TODO.

Add the check for T being unsigned for CLZ (trivial fix for
leb128.h). We use CTZ with signed types.

Change-Id: I7bbf0b1699eed21715c6cc20dbfe22b7da403b1a

8 years agoMerge "Optimizing String.Equals as an intrinsic (ARM64)"
Andreas Gampe [Fri, 14 Aug 2015 03:00:37 +0000 (03:00 +0000)]
Merge "Optimizing String.Equals as an intrinsic (ARM64)"

8 years agoMerge "Visit declaring class of methods on call stack"
Mathieu Chartier [Fri, 14 Aug 2015 01:37:58 +0000 (01:37 +0000)]
Merge "Visit declaring class of methods on call stack"

8 years agoRevert "Revert "Optimizing String.Equals as an intrinsic (x86)""
Agi Csaki [Fri, 14 Aug 2015 00:46:44 +0000 (17:46 -0700)]
Revert "Revert "Optimizing String.Equals as an intrinsic (x86)""

This reverts commit aabdf8ad2e8d3de953d.
The third implementation of String.Equals. I added an intrinsic
in x86 which is similar to the original java implementation of
String.equals: an instanceof check, null check, length check, and
reference equality check followed by a loop comparing strings
character by character.

Interesting Benchmarking Values:

Optimizing Compiler on Nexus Player
        Intrinsic 15-30 Character Strings: 177 ns
        Original 15-30 Character Strings: 275 ns
        Intrinsic Null Argument: 59 ns
        Original Null Argument: 137 ns
        Intrinsic 100-1000 Character Strings: 1812 ns
        Original 100-1000 Character Strings: 6334 ns

Bug: 21481923
Change-Id: I93fa603c4bd22639143d29d0bfc7e773846f21d3

8 years agoVisit declaring class of methods on call stack
Mathieu Chartier [Thu, 13 Aug 2015 19:56:31 +0000 (12:56 -0700)]
Visit declaring class of methods on call stack

Bug: 22720414
Change-Id: Iab9727dde243d76fd9dfdb1db73899fedd1ab6ea

8 years agoOptimizing String.Equals as an intrinsic (ARM64)
Agi Csaki [Fri, 14 Aug 2015 00:51:19 +0000 (17:51 -0700)]
Optimizing String.Equals as an intrinsic (ARM64)

The fifth implementation of String.Equals.  I added an intrinsic
in ARM64 which is similar to the original java implementation
of String.equals: an instanceof check, null check, length check, and
reference equality check followed by a loop comparing strings four
characters at a time starting at the beginning of the string.

Interesting Benchmarking Values:

64 Bit Nexus 9:
Intrinsic Short (1-5 Character) Strings: 40 ns
Original Short (1-5 Character) Strings: 80 ns
Intrinsic Very Long (1000+ Character) Strings: 1556 ns
Original Very Long (1000+ Character) Strings: 4554 ns
Intrinsic Non-String Argument: 15 ns
Original Non-String Argument: 62 ns

Bug: 21481923
Change-Id: If37b399614c2250f52ac709a3b50c356419ca88a

8 years agoMerge "Ignore OOME in ThreadStress Daemon threads"
Mathieu Chartier [Thu, 13 Aug 2015 21:28:28 +0000 (21:28 +0000)]
Merge "Ignore OOME in ThreadStress Daemon threads"

8 years agoIgnore OOME in ThreadStress Daemon threads
Mathieu Chartier [Thu, 13 Aug 2015 20:02:01 +0000 (13:02 -0700)]
Ignore OOME in ThreadStress Daemon threads

When the runtime is shutting down we don't allow GC, this can cause
OOME in Daemon threads that are allocating. The OOME stack trace
printing can cause the test to fail.

Bug: 18577101
Change-Id: Iabbce3d75caada361dd06942f4b3be9907596091

8 years agoMerge "Adjust art::HTypeConversion's side effects for MIPS64."
Roland Levillain [Thu, 13 Aug 2015 16:25:52 +0000 (16:25 +0000)]
Merge "Adjust art::HTypeConversion's side effects for MIPS64."

8 years agoMerge "Small optimization improvements."
Nicolas Geoffray [Thu, 13 Aug 2015 15:16:40 +0000 (15:16 +0000)]
Merge "Small optimization improvements."

8 years agoAdjust art::HTypeConversion's side effects for MIPS64.
Roland Levillain [Thu, 13 Aug 2015 11:31:44 +0000 (12:31 +0100)]
Adjust art::HTypeConversion's side effects for MIPS64.

Also improve debugging information in
art::CodeGenerator::ValidateInvokeRuntime.

Change-Id: Icfcd1a5cfa5e5449a316251dc20547de6badecb5

8 years agoMerge "Remove unnecessary `explicit` qualifiers on constructors."
Roland Levillain [Thu, 13 Aug 2015 11:00:54 +0000 (11:00 +0000)]
Merge "Remove unnecessary `explicit` qualifiers on constructors."

8 years agoART: Add utility function to dump dex CFG
Andreas Gampe [Mon, 10 Aug 2015 18:40:25 +0000 (11:40 -0700)]
ART: Add utility function to dump dex CFG

Add a utility function in utils.h to dump the dex CFG of
a method.

Add an option ("-g") to dump CFGs of a dex file in dexdump2.

Change-Id: I380082f0abe8ed7eeb6a9186364a99425f69f55c

8 years agoMerge "Intrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets"
Andreas Gampe [Thu, 13 Aug 2015 05:26:35 +0000 (05:26 +0000)]
Merge "Intrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets"

8 years agoMerge "Structure for String.Equals intrinsic"
Andreas Gampe [Thu, 13 Aug 2015 05:13:11 +0000 (05:13 +0000)]
Merge "Structure for String.Equals intrinsic"

8 years agoStructure for String.Equals intrinsic
agicsaki [Thu, 13 Aug 2015 03:30:17 +0000 (20:30 -0700)]
Structure for String.Equals intrinsic

Added structure for implementing String.Equals intrinsics. There is no
functional change at this point- the intrinsic is marked as unimplemented
for all instruction sets and compilers.

Bug: 21481923
Change-Id: Ic2a1e22a113ff6091581126f12e926478c011340

8 years agoIntrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets
agicsaki [Thu, 13 Aug 2015 04:20:43 +0000 (21:20 -0700)]
Intrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets

Since no intrinsics are implemented in MIPS or MIPS64, the intrinsics
recognizer now does not mark methods as being intrinsified if the
current instruction set is either MIPS or MIPS64.

Change-Id: I9819ccd11d280e548623ad18add057eefefbf6d5

8 years agoMerge "Add support to indicate whether intrinsics require an environment"
Andreas Gampe [Thu, 13 Aug 2015 02:54:37 +0000 (02:54 +0000)]
Merge "Add support to indicate whether intrinsics require an environment"

8 years agoMerge "Wait for GC to finish in ThreadList::~ThreadList"
Mathieu Chartier [Thu, 13 Aug 2015 01:38:18 +0000 (01:38 +0000)]
Merge "Wait for GC to finish in ThreadList::~ThreadList"

8 years agoSmall optimization improvements.
Nicolas Geoffray [Thu, 13 Aug 2015 01:28:14 +0000 (18:28 -0700)]
Small optimization improvements.

- Tune CanBeNull for HBoundType.
- Remove LoadClass when we know the class is loaded.
- Tune CanBeNull for StringInit.

Change-Id: I564ed33a506d65e991a514342bdfd1610bed0cf5

8 years agoWait for GC to finish in ThreadList::~ThreadList
Mathieu Chartier [Wed, 12 Aug 2015 23:40:32 +0000 (16:40 -0700)]
Wait for GC to finish in ThreadList::~ThreadList

Added a DisableGC to the heap instead of using the runtime shutdown
boolean. The runtime shutting down boolean is set to true before the
non daemon threads have exited. These threads may still be doing
allocations and we don't want to throw OOME if unnecessary.

Bug: 18577101
Change-Id: Iceb7048e6bd799aa2716099459c54f8dc0fb8feb

8 years agoAdd support to indicate whether intrinsics require an environment
agicsaki [Wed, 12 Aug 2015 00:39:37 +0000 (17:39 -0700)]
Add support to indicate whether intrinsics require an environment

A structural change to indicate whether a given intrinsic requires
access to an environment. I added a field to HInvoke objects to indicate
if they need an environment whose default value is true and is only updated
if an intrinsic is marked as not requiring an environment. At this point
there is no functional change, as all intrinsics are marked as requiring
an environment. This change adds the structure for future inliner work
which will allow us to inline more intrinsified calls.

Change-Id: I2930e3cef7b785384bf95b95a542d34af442f3b9

8 years agoMerge "Visit class roots from ClassLoader::VisitReferences"
Mathieu Chartier [Thu, 13 Aug 2015 01:01:38 +0000 (01:01 +0000)]
Merge "Visit class roots from ClassLoader::VisitReferences"

8 years agoMerge "ART: Add correct -inl file"
Andreas Gampe [Wed, 12 Aug 2015 23:53:44 +0000 (23:53 +0000)]
Merge "ART: Add correct -inl file"

8 years agoART: Add correct -inl file
Andreas Gampe [Wed, 12 Aug 2015 23:42:06 +0000 (16:42 -0700)]
ART: Add correct -inl file

Follow-up to f10b6e109bfb595b6752d1b59db680694ac1684d.

Bug: 20843113
Change-Id: Idfb9479c2cd242c2fbf748177177ae1cba0508d6

8 years agoMerge "ART: Change UninitializedThis tracking in the verifier"
Andreas Gampe [Wed, 12 Aug 2015 23:28:54 +0000 (23:28 +0000)]
Merge "ART: Change UninitializedThis tracking in the verifier"

8 years agoART: Change UninitializedThis tracking in the verifier
Andreas Gampe [Wed, 12 Aug 2015 17:48:12 +0000 (10:48 -0700)]
ART: Change UninitializedThis tracking in the verifier

Only relying on register types is error-prone. For example, we may
inadvertently reject correct code when the constructor terminates
abnormally.

Bug: 20843113
Change-Id: I8826cd167780df25a6166740f183d216483fa550

8 years agoVisit class roots from ClassLoader::VisitReferences
Mathieu Chartier [Thu, 6 Aug 2015 22:34:15 +0000 (15:34 -0700)]
Visit class roots from ClassLoader::VisitReferences

This causes the classes of a class loader to get marked when that
class loader gets marked instead of during class root visiting.

Bug: 22720414

Change-Id: If53f042aff1d9f7bf94ecbe6886601edda029b7d

8 years agoMerge "Don't allow GC to start if the runtime is shutting down"
Mathieu Chartier [Wed, 12 Aug 2015 22:02:02 +0000 (22:02 +0000)]
Merge "Don't allow GC to start if the runtime is shutting down"

8 years agoDon't allow GC to start if the runtime is shutting down
Mathieu Chartier [Wed, 12 Aug 2015 20:53:06 +0000 (13:53 -0700)]
Don't allow GC to start if the runtime is shutting down

Daemon threads may be trying to do allocations as the runtime is
shutting down, don't allow GC to start since it touches the heap
and may cause crashes if it is running while we delete the heap
or thread list.

Bug: 18577101
Change-Id: I1404b41f2aee13d3c26acffdf588c985628beefc

8 years agoMerge "Delete AllocationTimer"
Mathieu Chartier [Wed, 12 Aug 2015 20:22:34 +0000 (20:22 +0000)]
Merge "Delete AllocationTimer"

8 years agoDelete AllocationTimer
Mathieu Chartier [Wed, 12 Aug 2015 17:20:27 +0000 (10:20 -0700)]
Delete AllocationTimer

Not very useful, running benchmarks is better.

Bug: 19534862
Change-Id: I725830274e306621bffdabffdee602a03daf016f

8 years agoMerge "Add a GVN dependency 'GC' for garbage collection."
Roland Levillain [Wed, 12 Aug 2015 17:46:35 +0000 (17:46 +0000)]
Merge "Add a GVN dependency 'GC' for garbage collection."

8 years agoRemove unnecessary `explicit` qualifiers on constructors.
Roland Levillain [Wed, 12 Aug 2015 17:15:42 +0000 (18:15 +0100)]
Remove unnecessary `explicit` qualifiers on constructors.

Change-Id: Id12e392ad50f66a6e2251a68662b7959315dc567

8 years agoAdd a GVN dependency 'GC' for garbage collection.
Alexandre Rames [Wed, 12 Aug 2015 12:43:29 +0000 (13:43 +0100)]
Add a GVN dependency 'GC' for garbage collection.

This will be used by incoming architecture specific optimizations. The
dependencies must be conservative. When an HInstruction is created we
may not be sure whether it can trigger GC. In that case the
'ChangesGC' dependency must be set. We control at code-generation time
that HInstructions that can call have the 'ChangesGC' dependency
set.

Change-Id: Iea6a7f430009f37a9599b0a0039207049906e45d

8 years agoMerge "[optimizing] More x86_64 code improvements"
Roland Levillain [Wed, 12 Aug 2015 11:43:20 +0000 (11:43 +0000)]
Merge "[optimizing] More x86_64 code improvements"

8 years agoMerge "Some heap cleanup"
Mathieu Chartier [Wed, 12 Aug 2015 03:22:25 +0000 (03:22 +0000)]
Merge "Some heap cleanup"

8 years agoSome heap cleanup
Mathieu Chartier [Wed, 12 Aug 2015 00:35:25 +0000 (17:35 -0700)]
Some heap cleanup

Bug: 19534862
Change-Id: Ia63f489d26ec8813a263ce877bdbbc8c4e8fe5f4

8 years agoMerge "Add daemon threads to 004-ThreadStress"
Mathieu Chartier [Wed, 12 Aug 2015 00:12:18 +0000 (00:12 +0000)]
Merge "Add daemon threads to 004-ThreadStress"

8 years agoMerge "[MIPS] Avoid using odd numbered fp registers"
Roland Levillain [Tue, 11 Aug 2015 22:34:21 +0000 (22:34 +0000)]
Merge "[MIPS] Avoid using odd numbered fp registers"

8 years agoFix a bug in the register allocator when allocating pairs.
Nicolas Geoffray [Fri, 7 Aug 2015 02:56:45 +0000 (19:56 -0700)]
Fix a bug in the register allocator when allocating pairs.

bug:22913897
Change-Id: I402d8a29a482f6cb98c8d1fcdcbf0eddf744e038

8 years agoMerge "Address some comments"
Mathieu Chartier [Tue, 11 Aug 2015 21:13:37 +0000 (21:13 +0000)]
Merge "Address some comments"

8 years agoAddress some comments
Mathieu Chartier [Tue, 11 Aug 2015 20:01:23 +0000 (13:01 -0700)]
Address some comments

Change-Id: I0262304cc720a0e93015955d0a7fb05dfebe213e

8 years agoMerge "Revert "Revert "Pass the verified method to the inlinee DexCompilationUnit."""
Nicolas Geoffray [Tue, 11 Aug 2015 17:42:21 +0000 (17:42 +0000)]
Merge "Revert "Revert "Pass the verified method to the inlinee DexCompilationUnit."""

8 years ago[optimizing] More x86_64 code improvements
Mark Mendell [Mon, 25 May 2015 20:02:44 +0000 (16:02 -0400)]
[optimizing] More x86_64 code improvements

Use the constant area some more, use 32-bit immediates in movq
instructions when possible, and other small tweaks.

Remove the commented out code for Math.Abs(float/double) as it would
fail for baseline compiler due to the output being the same as the
input.

Change-Id: Ifa39f1865b94cec2e1c0a99af3066a645e9d3618
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoMerge "ART: Fix Quick's DCE+GVN"
Vladimir Marko [Tue, 11 Aug 2015 14:28:04 +0000 (14:28 +0000)]
Merge "ART: Fix Quick's DCE+GVN"

8 years agoMerge "ART-Optimizing: Fix the type of HDivZeroCheck"
Calin Juravle [Tue, 11 Aug 2015 14:25:45 +0000 (14:25 +0000)]
Merge "ART-Optimizing: Fix the type of HDivZeroCheck"

8 years agoART: Fix Quick's DCE+GVN
Serguei Katkov [Mon, 10 Aug 2015 06:59:02 +0000 (12:59 +0600)]
ART: Fix Quick's DCE+GVN

DCE_GVN does not take into account the following case:
  mov a, b
  ...
  mov c, b
when optimization tries to replace a with c it must ensure that
for all uses of a there is no new definition of c before use.
Otherwise that use will incorrectly substituted with new c instead
of original b.

Bug: 23102860
Change-Id: I48ee0bd4386419b0f9c814c21b3537a392518cd1
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
8 years agoART-Optimizing: Fix the type of HDivZeroCheck
Serguei Katkov [Mon, 3 Aug 2015 07:55:33 +0000 (13:55 +0600)]
ART-Optimizing: Fix the type of HDivZeroCheck

HDivZeroCheck is created during the building CFG and at this moment
its type is not known completely. So it sets the type to int or long.
However, later SSA builder can insert the type conversion and type
of input of HDivZeroCheck can become byte or short while the type
of HDivZeroCheck remains the same.

In reality the type of HDivZeroCheck should be always equal to
its input parameter.
To fix this inconsistency we return the type of HDivZeroCheck as its
input type. Code generators are updated accordingly.

Change-Id: I6a5aedc8d479cfc6328704e7ddf252bca830076b
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
8 years agoRevert "Revert "Pass the verified method to the inlinee DexCompilationUnit.""
Nicolas Geoffray [Tue, 11 Aug 2015 02:14:38 +0000 (02:14 +0000)]
Revert "Revert "Pass the verified method to the inlinee DexCompilationUnit.""

bug:22866717

This reverts commit f25b661b3708c865cdaa0a018372a42881353bea.

Change-Id: I95e8310e6c3d8e6edb736fdefcabf602cce3a4e0