OSDN Git Service

android-x86/art.git
8 years agoART: Wire up DexToDexCompiler without extern
Andreas Gampe [Thu, 23 Jul 2015 08:19:26 +0000 (01:19 -0700)]
ART: Wire up DexToDexCompiler without extern

The extern declaration actually had the wrong signature, a parameter
was missing, and we never noticed.

Remove the function field and extern. Add a header for the compiler.
Use the header file.

Change-Id: Ia4d4dd86211da6045709a45c7bf8430471d1b62b

8 years agoMerge "Fix mod-union logic for native roots"
Mathieu Chartier [Wed, 5 Aug 2015 17:42:56 +0000 (17:42 +0000)]
Merge "Fix mod-union logic for native roots"

8 years agoFix mod-union logic for native roots
Mathieu Chartier [Wed, 5 Aug 2015 17:10:07 +0000 (10:10 -0700)]
Fix mod-union logic for native roots

Bug: 22949217
Change-Id: I9e4631870160d5a9412df1eec2a7b79c65668542

8 years agoMerge "Have constant folding be more flexible."
Roland Levillain [Wed, 5 Aug 2015 12:52:12 +0000 (12:52 +0000)]
Merge "Have constant folding be more flexible."

8 years agoMerge "Add constant folding for long unary operations in opt. compiler."
Roland Levillain [Wed, 5 Aug 2015 10:03:46 +0000 (10:03 +0000)]
Merge "Add constant folding for long unary operations in opt. compiler."

8 years agoHave constant folding be more flexible.
Roland Levillain [Wed, 5 Aug 2015 09:21:34 +0000 (10:21 +0100)]
Have constant folding be more flexible.

- Have Evaluate methods take as argument(s) and return value
  instances of HConstant (instead of built-in 32- or 64-bit
  integer values), to let the evaluated instruction choose
  the type of the statically evaluated node; for instance,
  art::HEqual::Evaluate shall return a HIntConstant
  node (as implementation of a Boolean constant) whatever
  the type of its inputs (a pair of HIntConstant or a pair
  of HLongConstant).
- Split the evaluation job from the operation logic: the
  former is addressed by Evaluate methods, while the latter
  is done by a generic Compute method.
- Adress valid BinOp(int, long) and BinOp(long, int) cases.
- Add a constructor to art::HIntConstant to build an integer
  constant from a `bool` value.

Change-Id: If84b6fe8406bb94ddb1aa8b02e36628dff526db3

8 years agoAdd constant folding for long unary operations in opt. compiler.
Roland Levillain [Thu, 11 Dec 2014 12:14:33 +0000 (12:14 +0000)]
Add constant folding for long unary operations in opt. compiler.

Add tests to exercise the constant folding of these
instructions.

Also, prevent Java methods from run-tests exercising the
code generation of these instruction from being inlined,
so that they continue to check the generated code (and
not the code produced by the constant folding pass).

Change-Id: I28efca7cdb5142ac2b6d158ba296fb9136d62481

8 years agoMerge "ART: Move exception clearing into own instruction"
David Brazdil [Wed, 5 Aug 2015 08:34:24 +0000 (08:34 +0000)]
Merge "ART: Move exception clearing into own instruction"

8 years agoMerge "Revert "Revert "ART: Use bionic TLS slot for thread-self"""
Andreas Gampe [Wed, 5 Aug 2015 02:55:46 +0000 (02:55 +0000)]
Merge "Revert "Revert "ART: Use bionic TLS slot for thread-self"""

8 years agoRevert "Revert "ART: Use bionic TLS slot for thread-self""
Andreas Gampe [Wed, 5 Aug 2015 01:08:53 +0000 (01:08 +0000)]
Revert "Revert "ART: Use bionic TLS slot for thread-self""

This reverts commit 50832b6804d15ea5ddfe99a2753a09111b5bfe37.

Fix clearing the TLS on detach.

Change-Id: I75ed5ccccb4f31800e5f893055e96067a9695258

8 years agoMerge "ART: x86_64 RoundDouble/Float intrinsics should initialize out value."
Nicolas Geoffray [Wed, 5 Aug 2015 02:11:01 +0000 (02:11 +0000)]
Merge "ART: x86_64 RoundDouble/Float intrinsics should initialize out value."

8 years agoMerge "Revert "ART: Use bionic TLS slot for thread-self""
Andreas Gampe [Wed, 5 Aug 2015 00:36:05 +0000 (00:36 +0000)]
Merge "Revert "ART: Use bionic TLS slot for thread-self""

8 years agoRevert "ART: Use bionic TLS slot for thread-self"
Andreas Gampe [Wed, 5 Aug 2015 00:31:02 +0000 (00:31 +0000)]
Revert "ART: Use bionic TLS slot for thread-self"

This reverts commit b81535875ff46d1630c76091fe969a9eb7fc4d16.

Breaking tests, need to investigate.

Change-Id: Iab8c4f6136e6cb9bd6cf3c3495aa33962ef890ee

8 years agoMerge "Parallel Move Resolver: Perform Stack/Stack first"
Nicolas Geoffray [Wed, 5 Aug 2015 00:10:01 +0000 (00:10 +0000)]
Merge "Parallel Move Resolver: Perform Stack/Stack first"

8 years agoMerge "ART: Use bionic TLS slot for thread-self"
Andreas Gampe [Tue, 4 Aug 2015 22:35:34 +0000 (22:35 +0000)]
Merge "ART: Use bionic TLS slot for thread-self"

8 years agoMerge "Update expectation."
Nicolas Geoffray [Tue, 4 Aug 2015 19:06:16 +0000 (19:06 +0000)]
Merge "Update expectation."

8 years agoUpdate expectation.
Nicolas Geoffray [Tue, 4 Aug 2015 17:16:43 +0000 (18:16 +0100)]
Update expectation.

Vogar wants # between class and method.

Change-Id: I3e4d54e2cc22bac6b73fe611fcbfcbe39095159c

8 years agoMerge "ART: Use Clang default integrated assembler."
Andreas Gampe [Tue, 4 Aug 2015 16:47:39 +0000 (16:47 +0000)]
Merge "ART: Use Clang default integrated assembler."

8 years agoART: Use Clang default integrated assembler.
Chih-Hung Hsieh [Mon, 27 Jul 2015 17:10:44 +0000 (10:10 -0700)]
ART: Use Clang default integrated assembler.

Issues with x86, arm32 and arm64 have been fixed.
Allow the use of the integrated assembler.

Bug: 22874917
Change-Id: Iacfffda29d57bfc931da568a9436c2e34cb38df6

8 years agoART: Move exception clearing into own instruction
David Brazdil [Tue, 4 Aug 2015 15:22:25 +0000 (16:22 +0100)]
ART: Move exception clearing into own instruction

Runtime delivers exceptions only to catch blocks which begin with a
MOVE_EXCEPTION instruction (in DEX). In that case, the catch block is
expected to clear the thread-local exception storage after having
read the exception reference.

This patch changes Optimizing to represent MOVE_EXCEPTION with two
instructions - HLoadException and HClearException - instead of one.
If the exception reference is not used, HLoadException can be safely
removed, saving a memory load without breaking the runtime behaviour.

Change-Id: Idad8a714467bf9d9d5fccefbc43c0bd8ae13ddba

8 years agoMerge "ART: Fix arm32 assembly for Clang"
Andreas Gampe [Tue, 4 Aug 2015 15:16:33 +0000 (15:16 +0000)]
Merge "ART: Fix arm32 assembly for Clang"

8 years agoART: Fix arm32 assembly for Clang
Chih-Hung Hsieh [Mon, 27 Jul 2015 17:10:44 +0000 (10:10 -0700)]
ART: Fix arm32 assembly for Clang

Clang ignores .thumb_func and requires an explicit
.thumb directive, as given by the ARM Unified Assembler
Language. Conditionally add .thumb to thumb2 functions.

Bug: 22762844
Change-Id: I08abdb5f4e0ba5135d4ed850ca3e284203f95a03

8 years agoART: x86_64 RoundDouble/Float intrinsics should initialize out value.
Pavel Vyssotski [Fri, 31 Jul 2015 07:03:17 +0000 (13:03 +0600)]
ART: x86_64 RoundDouble/Float intrinsics should initialize out value.

x86_64 RoundDouble intrinsic should initialize output register for the case of
"inPlusPointFive >= maxLong" as expected. The same for the RoundFloat intrinsic.
Fixed also the out register type in CreateSSE41FPToIntLocations provoking
a DCHECK failure.

Change-Id: I0a910682e2917214861683c678ffba8e0f4bfed8
Signed-off-by: Pavel Vyssotski <pavel.n.vyssotski@intel.com>
8 years agoMerge "Added repe_cmpsq instruction to x86_64 assembler"
Vladimir Marko [Tue, 4 Aug 2015 11:20:31 +0000 (11:20 +0000)]
Merge "Added repe_cmpsq instruction to x86_64 assembler"

8 years agoMerge "ARM/ARM64: Implement numberOfLeadingZeros intrinsic."
Vladimir Marko [Tue, 4 Aug 2015 09:05:51 +0000 (09:05 +0000)]
Merge "ARM/ARM64: Implement numberOfLeadingZeros intrinsic."

8 years agoARM/ARM64: Implement numberOfLeadingZeros intrinsic.
Scott Wakeling [Fri, 10 Jul 2015 10:42:06 +0000 (11:42 +0100)]
ARM/ARM64: Implement numberOfLeadingZeros intrinsic.

Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b

8 years agoAdded repe_cmpsq instruction to x86_64 assembler
agicsaki [Tue, 4 Aug 2015 03:14:29 +0000 (20:14 -0700)]
Added repe_cmpsq instruction to x86_64 assembler

Change-Id: I9085694fd3313581b2775a8267ccda58fec19a1a

8 years agoMerge "ART: Fix stub_test"
Andreas Gampe [Mon, 3 Aug 2015 22:07:15 +0000 (22:07 +0000)]
Merge "ART: Fix stub_test"

8 years agoMerge "cleanup: Replace pointers with out-parameters and fix-up formatting"
Igor Murashkin [Mon, 3 Aug 2015 21:27:27 +0000 (21:27 +0000)]
Merge "cleanup: Replace pointers with out-parameters and fix-up formatting"

8 years agoMerge "Optimizing: Add Non Temporal Move support for x86"
Aart Bik [Mon, 3 Aug 2015 17:48:11 +0000 (17:48 +0000)]
Merge "Optimizing: Add Non Temporal Move support for x86"

8 years agoART: Fix stub_test
Andreas Gampe [Mon, 3 Aug 2015 17:25:06 +0000 (10:25 -0700)]
ART: Fix stub_test

Clobber another register on arm32.

Change-Id: I0d355f69dfa7e6d86cb7c211f6ac2cb56f995d9d

8 years agoMerge "Optimizing: Use more X86 3 operand multiplies"
Roland Levillain [Mon, 3 Aug 2015 14:57:38 +0000 (14:57 +0000)]
Merge "Optimizing: Use more X86 3 operand multiplies"

8 years agoMerge "Revert "Optimizing String.Equals as an intrinsic (x86)""
Roland Levillain [Mon, 3 Aug 2015 14:55:11 +0000 (14:55 +0000)]
Merge "Revert "Optimizing String.Equals as an intrinsic (x86)""

8 years agoRevert "Optimizing String.Equals as an intrinsic (x86)"
Roland Levillain [Mon, 3 Aug 2015 14:54:45 +0000 (14:54 +0000)]
Revert "Optimizing String.Equals as an intrinsic (x86)"

Reverted as it breaks the compilation of boot.{oat,art} on x86 (although this CL may not be the culprit, as the issue seems to come from Optimizing's register allocator).

This reverts commit 8ab7bd6c8b10ad58758c33a1dc9326212bd200e9.

Change-Id: If7c8b6258d1e690f4d2a06bcc82c92563ac6cdef

8 years agoMerge "Fix ambiguous phrasing in tests comments regarding $opt$."
Roland Levillain [Mon, 3 Aug 2015 14:34:42 +0000 (14:34 +0000)]
Merge "Fix ambiguous phrasing in tests comments regarding $opt$."

8 years agoFix ambiguous phrasing in tests comments regarding $opt$.
Roland Levillain [Mon, 3 Aug 2015 14:20:02 +0000 (15:20 +0100)]
Fix ambiguous phrasing in tests comments regarding $opt$.

Change-Id: I78e6bccbe35288df5de30700d3877bbcdef37d65

8 years agoMerge "Optimizing String.Equals as an intrinsic (x86)"
Roland Levillain [Mon, 3 Aug 2015 08:48:11 +0000 (08:48 +0000)]
Merge "Optimizing String.Equals as an intrinsic (x86)"

8 years agoMerge "ART: Check a RETURN_VOID_NO_BARRIER like a RETURN_VOID"
Andreas Gampe [Sat, 1 Aug 2015 04:14:14 +0000 (04:14 +0000)]
Merge "ART: Check a RETURN_VOID_NO_BARRIER like a RETURN_VOID"

8 years agoART: Check a RETURN_VOID_NO_BARRIER like a RETURN_VOID
Andreas Gampe [Fri, 31 Jul 2015 20:36:10 +0000 (13:36 -0700)]
ART: Check a RETURN_VOID_NO_BARRIER like a RETURN_VOID

RETURN_VOID_NO_BARRIER is used in all methods with return-void,
as long as they're not a constructor and have been quickened. As
such, do the regular checking of the return type.

Bug: https://code.google.com/p/android/issues/detail?id=181700
Bug: 22871329
Change-Id: I11bcf7bffd91fc01995b703a99e603ddb370016e

8 years agocleanup: Replace pointers with out-parameters and fix-up formatting
Igor Murashkin [Sat, 1 Aug 2015 00:35:52 +0000 (17:35 -0700)]
cleanup: Replace pointers with out-parameters and fix-up formatting

Cleans all of oat_file.h/.cc, parsed_options.h./cc, runtime.h/.cc

Other files are touched only incidentally to use outof(x) instead of &x.

Change-Id: I0bb15111149d53bb21aac2199ef33bd35333b0ca

8 years agoMerge "runtime: cleanup class_linker out-parameters and formatting"
Igor Murashkin [Fri, 31 Jul 2015 23:03:58 +0000 (23:03 +0000)]
Merge "runtime: cleanup class_linker out-parameters and formatting"

8 years agoruntime: cleanup class_linker out-parameters and formatting
Igor Murashkin [Thu, 30 Jul 2015 23:39:45 +0000 (16:39 -0700)]
runtime: cleanup class_linker out-parameters and formatting

* Use out<T> instead of parameters
* Fixes up some other signatures to be more correct
* Reformat parameters to be one per line if they can't fit on one line
* Reformat locks to be one per line if they can't fit on the decl line

Change-Id: Ib71b08707d3ed0bb85299406c0b23a1de4e92a1c

8 years agoMerge "Revert "runtime: cleanup class_linker out-parameters and formatting""
Igor Murashkin [Fri, 31 Jul 2015 23:02:50 +0000 (23:02 +0000)]
Merge "Revert "runtime: cleanup class_linker out-parameters and formatting""

8 years agoRevert "runtime: cleanup class_linker out-parameters and formatting"
Igor Murashkin [Fri, 31 Jul 2015 23:02:30 +0000 (23:02 +0000)]
Revert "runtime: cleanup class_linker out-parameters and formatting"

This reverts commit 0de694ed3efe8412b83622a24074831edcc7e384.

Change-Id: I4b185584d6e47918179b16d76709cc3366872f3c

8 years agoMerge "runtime: cleanup class_linker out-parameters and formatting"
Igor Murashkin [Fri, 31 Jul 2015 23:02:04 +0000 (23:02 +0000)]
Merge "runtime: cleanup class_linker out-parameters and formatting"

8 years agoOptimizing String.Equals as an intrinsic (x86)
agicsaki [Mon, 27 Jul 2015 17:25:10 +0000 (10:25 -0700)]
Optimizing String.Equals as an intrinsic (x86)

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: Ia386e19b9dbfe0dac688b20ec93d8f90f67af47e

8 years agoruntime: cleanup class_linker out-parameters and formatting
Igor Murashkin [Thu, 30 Jul 2015 23:39:45 +0000 (16:39 -0700)]
runtime: cleanup class_linker out-parameters and formatting

* Use out<T> instead of parameters
* Fixes up some other signatures to be more correct
* Reformat parameters to be one per line if they can't fit on one line
* Reformat locks to be one per line if they can't fit on the decl line

Change-Id: I1031cf4edc41f95b89edb343d43ef93e15384206

8 years agoMerge "Revert "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors""
Andreas Gampe [Fri, 31 Jul 2015 20:31:40 +0000 (20:31 +0000)]
Merge "Revert "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors""

8 years agoRevert "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors"
Andreas Gampe [Fri, 31 Jul 2015 20:31:24 +0000 (20:31 +0000)]
Revert "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors"

This reverts commit e93505f599682a2e95c4dac1c8633dec79c602bc.

This isn't the right thing to do, actually.

Bug: 22871329
Change-Id: I0a0a5a86c7c8d8afdf417444ca7d73e56e040515

8 years agoMerge "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors"
Andreas Gampe [Fri, 31 Jul 2015 19:04:29 +0000 (19:04 +0000)]
Merge "ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors"

8 years agoART: Do not allow RETURN_VOID_NO_BARRIER outside constructors
Andreas Gampe [Fri, 31 Jul 2015 18:34:24 +0000 (11:34 -0700)]
ART: Do not allow RETURN_VOID_NO_BARRIER outside constructors

Let the verifier fail non-constructor methods using the no-barrier
variant of return. This is a quickened return purely to avoid the
constructor barrier for final fields, and cannot be used as a stand-in
for a regular return.

Bug: https://code.google.com/p/android/issues/detail?id=181700
Bug: 22871329
Change-Id: I9559c6a1599c20ce526582527ebed73b25242767

8 years agoMerge "ART: Remove unique-numbered labels from arm64 assembly"
Andreas Gampe [Fri, 31 Jul 2015 17:52:19 +0000 (17:52 +0000)]
Merge "ART: Remove unique-numbered labels from arm64 assembly"

8 years agoART: Remove unique-numbered labels from arm64 assembly
Chih-Hung Hsieh [Mon, 27 Jul 2015 17:10:44 +0000 (10:10 -0700)]
ART: Remove unique-numbered labels from arm64 assembly

Use local labels like 1, 2, 3 in macros. Clang does not support
the unique counter variable \@.

Bug: 22799850
Change-Id: I9ef1859be40b875ef4d7ae74ec1af52ad05f7352

8 years agoMerge "Added repe_cmpsl instruction to x86, x86_64 assemblers"
Andreas Gampe [Fri, 31 Jul 2015 17:46:52 +0000 (17:46 +0000)]
Merge "Added repe_cmpsl instruction to x86, x86_64 assemblers"

8 years agoAdded repe_cmpsl instruction to x86, x86_64 assemblers
agicsaki [Fri, 31 Jul 2015 17:31:14 +0000 (10:31 -0700)]
Added repe_cmpsl instruction to x86, x86_64 assemblers

Support for this instruction has already been added to the disassembler
in commit 124b392d.

Change-Id: I6e8401a7b814618758427f5cc6b4992e265f937c

8 years agoMerge "Optimizing: Replace x86 xchg use with xor sequence"
Roland Levillain [Fri, 31 Jul 2015 17:09:10 +0000 (17:09 +0000)]
Merge "Optimizing: Replace x86 xchg use with xor sequence"

8 years agoMerge "ART: Change stream output kNone intrinsic"
David Brazdil [Fri, 31 Jul 2015 16:28:03 +0000 (16:28 +0000)]
Merge "ART: Change stream output kNone intrinsic"

8 years agoART: Change stream output kNone intrinsic
David Brazdil [Fri, 31 Jul 2015 16:10:43 +0000 (17:10 +0100)]
ART: Change stream output kNone intrinsic

Name of intrinsics is dumped with C1visualizer and checked with
Checker whose attributes should not contain whitespace. This patch
changes the output printed for non-intrinsified invokes.

Change-Id: I3e565e8c9e26eb61026e7a13823eab20409dd63a

8 years agoMerge "Do not use -DUSE_*MALLOC for host build"
Shinichiro Hamaji [Fri, 31 Jul 2015 06:03:10 +0000 (06:03 +0000)]
Merge "Do not use -DUSE_*MALLOC for host build"

8 years agoMerge "Added disassembler support for repe_cmpsw instruction in x86, x86_64"
Andreas Gampe [Thu, 30 Jul 2015 23:31:39 +0000 (23:31 +0000)]
Merge "Added disassembler support for repe_cmpsw instruction in x86, x86_64"

8 years agoMerge "base: replace raw pointers for out-parameters with safer out<T>"
Igor Murashkin [Thu, 30 Jul 2015 23:31:12 +0000 (23:31 +0000)]
Merge "base: replace raw pointers for out-parameters with safer out<T>"

8 years agoMerge "Don't dump stack when deleting an invalid local ref"
Mathieu Chartier [Thu, 30 Jul 2015 21:57:12 +0000 (21:57 +0000)]
Merge "Don't dump stack when deleting an invalid local ref"

8 years agoDon't dump stack when deleting an invalid local ref
Mathieu Chartier [Thu, 30 Jul 2015 18:41:04 +0000 (11:41 -0700)]
Don't dump stack when deleting an invalid local ref

Bug: 21724724

(cherry picked from commit 2ada67b3145d38b352297bdb9d0546f58882e208)

Change-Id: Ifa99df9ee9f3265038a0c0f7944e834e42c498d4

8 years agobase: replace raw pointers for out-parameters with safer out<T>
Igor Murashkin [Thu, 23 Jul 2015 23:53:53 +0000 (16:53 -0700)]
base: replace raw pointers for out-parameters with safer out<T>

Add a zero-cost type-safe abstraction for representing "out" parameters
(i.e. when the calling function has to return multiple results out
by-reference into the argument slots instead of using the return slot).

Change-Id: I33a941e4863b6bed71d2bfa43d7f48e9b111f83f

8 years agoAdded disassembler support for repe_cmpsw instruction in x86, x86_64
agicsaki [Thu, 30 Jul 2015 20:40:13 +0000 (13:40 -0700)]
Added disassembler support for repe_cmpsw instruction in x86, x86_64

Also included support for repe_cmpsl instruction. This is a follow up to
commit 71311f868e2 which added support for repe_cmpsw in the x86 and
x86_64 assemblers.

Change-Id: I2beac05a57341539acf96cdf77062facd031a864

8 years agoMerge "ART: Fix gtest after GraphChecker CL"
David Brazdil [Thu, 30 Jul 2015 17:23:05 +0000 (17:23 +0000)]
Merge "ART: Fix gtest after GraphChecker CL"

8 years agoART: Fix gtest after GraphChecker CL
David Brazdil [Thu, 30 Jul 2015 17:21:41 +0000 (18:21 +0100)]
ART: Fix gtest after GraphChecker CL

Change-Id: Ia85cb9622b3927c401325d87f2d7a52096b7fe5d

8 years agoMerge "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS"
Andreas Gampe [Thu, 30 Jul 2015 16:46:31 +0000 (16:46 +0000)]
Merge "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS"

8 years agoMerge "ART: Store and check exceptional predecessors"
David Brazdil [Thu, 30 Jul 2015 16:45:35 +0000 (16:45 +0000)]
Merge "ART: Store and check exceptional predecessors"

8 years agoART: Store and check exceptional predecessors
David Brazdil [Wed, 29 Jul 2015 09:31:29 +0000 (10:31 +0100)]
ART: Store and check exceptional predecessors

Future CL on register allocation for try/catch will require the
knowledge of instructions which throw into a catch block. This patch
stores that information with the basic block and verifies it in the
graph checker.

More checks on try catch also added to the graph checker and an order
of exception handlers is enforced in TryBoundary successors.

Change-Id: I3034c610791ea51d96724bcca97f49ec6ecf2af3

8 years agoART: Use __ANDROID__ instead of HAVE_ANDROID_OS
Andreas Gampe [Thu, 30 Jul 2015 15:57:50 +0000 (08:57 -0700)]
ART: Use __ANDROID__ instead of HAVE_ANDROID_OS

Use the proper define.

Change-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085

8 years agoOptimizing: Add Non Temporal Move support for x86
Mark Mendell [Wed, 15 Jul 2015 18:09:35 +0000 (14:09 -0400)]
Optimizing: Add Non Temporal Move support for x86

Add moves that don't pollute the data cache.  These can be used for
assigning large data structures.

Change-Id: I14d91ba6264f5ce2f128033d65d59b2536426643
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoOptimizing: Replace x86 xchg use with xor sequence
Mark Mendell [Tue, 28 Jul 2015 20:41:21 +0000 (16:41 -0400)]
Optimizing: Replace x86 xchg use with xor sequence

On some x86 processors, xchg is serializing even when exchanging two
registers.  Replace the xchgl use with the 3 xor sequence to swap to
registers.  This is generally faster and doesn't serialize the machine.

Change-Id: Iea2cd993d3b70a103bbdd1dbf7818e26ae29387c
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoDo not use -DUSE_*MALLOC for host build
Shinichiro Hamaji [Wed, 29 Jul 2015 07:30:29 +0000 (16:30 +0900)]
Do not use -DUSE_*MALLOC for host build

When we use ninja and switch a lunch target to another, they
may cause unnecessary rebuild because ninja detects command
line changes. They are used in #ifdef HAVE_ANDROID_OS so there
should be no semantics changes.

Change-Id: I629c94c872c8fc8ba4b4c59b565338e14570c3fe

8 years agoMerge "Clear temporary class arrays before linking the new class"
Mathieu Chartier [Thu, 30 Jul 2015 01:18:56 +0000 (01:18 +0000)]
Merge "Clear temporary class arrays before linking the new class"

8 years agoClear temporary class arrays before linking the new class
Mathieu Chartier [Thu, 30 Jul 2015 00:25:41 +0000 (17:25 -0700)]
Clear temporary class arrays before linking the new class

Fixes DCHECK failure from remembered sets where two classes had the
same field array which caused the remembered set to incorrectly
remove a card with a reference to the target space.

Change-Id: If43875616fb750e20667212381bc7e359c4214a5

8 years agoMerge "Register signal handler to kernel if not claimed"
Andreas Gampe [Wed, 29 Jul 2015 23:54:35 +0000 (23:54 +0000)]
Merge "Register signal handler to kernel if not claimed"

8 years agoMerge "ART: Relax IsInstantiable check"
Andreas Gampe [Wed, 29 Jul 2015 23:30:34 +0000 (23:30 +0000)]
Merge "ART: Relax IsInstantiable check"

8 years agoMerge "Take into account that we might end up with unresolved classes."
Calin Juravle [Wed, 29 Jul 2015 18:33:07 +0000 (18:33 +0000)]
Merge "Take into account that we might end up with unresolved classes."

8 years agoTake into account that we might end up with unresolved classes.
Calin Juravle [Wed, 29 Jul 2015 18:25:24 +0000 (19:25 +0100)]
Take into account that we might end up with unresolved classes.

bug:22821472
Change-Id: I615ab0b41c8cadae9f327e07dcff71755f7146c2

8 years agoMerge "Fix gtests."
Calin Juravle [Wed, 29 Jul 2015 18:00:56 +0000 (18:00 +0000)]
Merge "Fix gtests."

8 years agoFix gtests.
Calin Juravle [Wed, 29 Jul 2015 17:59:13 +0000 (18:59 +0100)]
Fix gtests.

Change-Id: I19fd46ed96b4f620209533c96faa18d1077b004b

8 years agoMerge "Allow for fine tuning the inliner."
Calin Juravle [Wed, 29 Jul 2015 17:30:10 +0000 (17:30 +0000)]
Merge "Allow for fine tuning the inliner."

8 years agoAllow for fine tuning the inliner.
Calin Juravle [Wed, 29 Jul 2015 12:52:12 +0000 (13:52 +0100)]
Allow for fine tuning the inliner.

Bug: 21868508

Change-Id: Ice7f1604ed65e3d4ed2a010ee431272b7d000cdb

8 years agoMerge "Clean up class visitors"
Mathieu Chartier [Wed, 29 Jul 2015 17:16:36 +0000 (17:16 +0000)]
Merge "Clean up class visitors"

8 years agoClean up class visitors
Mathieu Chartier [Wed, 29 Jul 2015 00:23:28 +0000 (17:23 -0700)]
Clean up class visitors

Move from function pointers to virtual function visitors.

Change-Id: I68cb83c1d2ed9b5a89f8e534fe7ca4bbc1c91f45

8 years agoMerge "Revert "Revert "Revert "Revert "Use the object class as top in reference type...
Calin Juravle [Wed, 29 Jul 2015 16:09:38 +0000 (16:09 +0000)]
Merge "Revert "Revert "Revert "Revert "Use the object class as top in reference type propagation"""""

8 years agoMerge "Revert "Revert "Revert "Revert "Fixes and improvements in ReferenceTypePropaga...
Calin Juravle [Wed, 29 Jul 2015 16:09:29 +0000 (16:09 +0000)]
Merge "Revert "Revert "Revert "Revert "Fixes and improvements in ReferenceTypePropagation"""""

8 years agoRevert "Revert "Revert "Revert "Use the object class as top in reference type propaga...
Calin Juravle [Tue, 28 Jul 2015 14:41:11 +0000 (14:41 +0000)]
Revert "Revert "Revert "Revert "Use the object class as top in reference type propagation""""

This reverts commit b734808d0c93af98ec4e3539fdb0a8c0787263b0.

Change-Id: Ifd925f166761bcb9be2268ff0fc9fa3a72f00c6f

8 years agoMerge "Run intrinsics on inlined code."
Roland Levillain [Wed, 29 Jul 2015 12:45:16 +0000 (12:45 +0000)]
Merge "Run intrinsics on inlined code."

8 years agoRun intrinsics on inlined code.
Scott Wakeling [Wed, 22 Jul 2015 13:32:44 +0000 (14:32 +0100)]
Run intrinsics on inlined code.

Fixes any prior intrinsics recognition being lost if the containing code
block is inlined.

Change-Id: I6c89973545af97a4fe2444a9bd6efcc12d0d1b10

8 years agoART: Use bionic TLS slot for thread-self
Andreas Gampe [Wed, 29 Jul 2015 02:51:37 +0000 (19:51 -0700)]
ART: Use bionic TLS slot for thread-self

Use a private bionic TLS slot to store self instead of using
pthreads.

Change-Id: Icc86a2b7590734637366f9d5e41a5c6d18cc5772

8 years agoMerge "Split the class table for each class loader"
Mathieu Chartier [Tue, 28 Jul 2015 23:55:07 +0000 (23:55 +0000)]
Merge "Split the class table for each class loader"

8 years agoSplit the class table for each class loader
Mathieu Chartier [Mon, 27 Jul 2015 18:19:43 +0000 (11:19 -0700)]
Split the class table for each class loader

Each class loader now has its own class table. This makes it easier
to mark classes when a classloader is marked.

Fixed a bug in LookupClass where we used to look ignore the return
value of InsertClass.

Bug: 22720414

Change-Id: If2cd717989a20a6e245ebec24ad52dc47dd3207d

8 years agoMerge "Add read barrier support to the entrypoints."
Mathieu Chartier [Tue, 28 Jul 2015 22:58:23 +0000 (22:58 +0000)]
Merge "Add read barrier support to the entrypoints."

8 years agoParallel Move Resolver: Perform Stack/Stack first
Mark Mendell [Tue, 28 Jul 2015 21:26:55 +0000 (17:26 -0400)]
Parallel Move Resolver: Perform Stack/Stack first

On machines like x86, by the time other parallel moves are done, there
may be no free registers available to move/swap without having to save
and restore a register.

To avoid this, perform stack/stack first, while there is a good chance
that there is a destination register that we can use.  On the X86, this
avoids a lot of push eax/pop eax code.

Change-Id: I57076271b5672c931a93888ff23e30b2567f43b8
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoOptimizing: Use more X86 3 operand multiplies
Mark Mendell [Mon, 27 Jul 2015 20:13:10 +0000 (16:13 -0400)]
Optimizing: Use more X86 3 operand multiplies

The X86_64 code generator generated 3 operand multiplies for long
multiplication only.  Add support for 3 operand multiplication for
int as well for both X86 and X86_64.

Note that the RHS operand must be a 32 bit constant, and that it is
possible for the constant to end up in a register (!) due to a previous
use by another instruction.  Handle this case by checking the operand,
otherwise the first input might not be the same as the output, due to
the use of Any().

Also allow stack operands for multiplication.

Change-Id: I8f3d14cc01e9a91210f418258aa18065ee87979d
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoAdd read barrier support to the entrypoints.
Man Cao [Wed, 15 Jul 2015 05:31:42 +0000 (22:31 -0700)]
Add read barrier support to the entrypoints.

Also remove "THIS_LOAD_REQUIRES_READ_BARRIER" since reading
an ArtMethod* no longer needs read barrier.

stub_test should also work with read barriers now.

Change-Id: I3fba18042de2f867a18dbdc38519986212bd9769

8 years agoMerge "Temporarily suppress TimeZoneTest.testAllDisplayNames."
Narayan Kamath [Tue, 28 Jul 2015 16:31:12 +0000 (16:31 +0000)]
Merge "Temporarily suppress TimeZoneTest.testAllDisplayNames."

8 years agoTemporarily suppress TimeZoneTest.testAllDisplayNames.
Narayan Kamath [Tue, 28 Jul 2015 15:21:35 +0000 (16:21 +0100)]
Temporarily suppress TimeZoneTest.testAllDisplayNames.

bug: 22786792
Change-Id: Ib256928e8b8e2aac93e4001426613c5629728919